summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-06-17 18:36:36 +0000
committerGerald Carter <jerry@samba.org>2002-06-17 18:36:36 +0000
commit1e6e5b299c235b513095a76a4cd9fffc41e8fc9c (patch)
tree9f741529073ad411cc7328334e26d3e35b1d33f1
parenta11c5d7ad07d259d764aede4745d13f8163a8212 (diff)
downloadsamba-1e6e5b299c235b513095a76a4cd9fffc41e8fc9c.tar.gz
beginning to sync up for 2.2.5 release....
-rw-r--r--WHATSNEW.txt4
-rw-r--r--docs/Samba-HOWTO-Collection.pdf5447
-rw-r--r--docs/docbook/Makefile.in6
-rw-r--r--docs/docbook/manpages/nmblookup.1.sgml8
-rw-r--r--docs/docbook/manpages/smb.conf.5.sgml145
-rw-r--r--docs/docbook/manpages/smbcontrol.1.sgml26
-rw-r--r--docs/docbook/manpages/smbpasswd.5.sgml2
-rw-r--r--docs/docbook/manpages/smbpasswd.8.sgml47
-rw-r--r--docs/docbook/projdoc/Integrating-with-Windows.sgml20
-rw-r--r--docs/docbook/projdoc/Samba-BDC-HOWTO.sgml109
-rw-r--r--docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml87
-rw-r--r--docs/docbook/projdoc/UNIX_INSTALL.sgml12
-rw-r--r--docs/docbook/projdoc/cups.sgml445
-rw-r--r--docs/docbook/projdoc/printer_driver2.sgml181
-rw-r--r--docs/docbook/projdoc/samba-doc.sgml2
-rw-r--r--docs/docbook/projdoc/winbind.sgml425
-rw-r--r--docs/htmldocs/Samba-HOWTO-Collection.html2587
-rw-r--r--docs/htmldocs/UNIX_INSTALL.html2
-rw-r--r--docs/htmldocs/cups.html588
-rw-r--r--docs/htmldocs/nmblookup.1.html23
-rw-r--r--docs/htmldocs/smb.conf.5.html259
-rw-r--r--docs/htmldocs/smbcontrol.1.html32
-rw-r--r--docs/htmldocs/smbpasswd.5.html2
-rw-r--r--docs/htmldocs/smbpasswd.8.html79
-rw-r--r--docs/htmldocs/winbind.html32
-rw-r--r--docs/manpages/nmblookup.19
-rw-r--r--docs/manpages/smb.conf.5132
-rw-r--r--docs/manpages/smbcontrol.114
-rw-r--r--docs/manpages/smbpasswd.54
-rw-r--r--docs/manpages/smbpasswd.833
-rw-r--r--docs/textdocs/Printing.txt2
-rw-r--r--docs/textdocs/Solaris-Winbind-HOWTO.txt361
-rw-r--r--examples/LDAP/README31
-rw-r--r--examples/LDAP/export2_smbpasswd.pl64
-rw-r--r--examples/LDAP/export_smbpasswd.pl51
-rw-r--r--examples/LDAP/import2_smbpasswd.pl108
-rw-r--r--examples/LDAP/import_smbpasswd.pl122
-rw-r--r--examples/LDAP/samba-schema-netscapeds4.x2
-rw-r--r--examples/LDAP/samba-schema-netscapeds5.x4
-rw-r--r--examples/LDAP/samba-schema.IBMSecureWay2
-rw-r--r--examples/LDAP/samba.schema16
-rw-r--r--examples/LDAP/smbldap-tools/AUTHORS0
-rw-r--r--examples/LDAP/smbldap-tools/CONTRIBUTORS29
-rw-r--r--examples/LDAP/smbldap-tools/COPYING340
-rw-r--r--examples/LDAP/smbldap-tools/ChangeLog29
-rw-r--r--examples/LDAP/smbldap-tools/FILES43
-rw-r--r--examples/LDAP/smbldap-tools/INFRASTRUCTURE84
-rw-r--r--examples/LDAP/smbldap-tools/INSTALL28
-rw-r--r--examples/LDAP/smbldap-tools/Makefile35
-rw-r--r--examples/LDAP/smbldap-tools/NEWS0
-rw-r--r--examples/LDAP/smbldap-tools/README87
-rw-r--r--examples/LDAP/smbldap-tools/TODO27
-rw-r--r--examples/LDAP/smbldap-tools/cgi/README27
-rwxr-xr-xexamples/LDAP/smbldap-tools/cgi/ldappass.cgi202
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/Makefile62
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/getopt.c756
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/getopt.h133
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/md4.c171
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.c253
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.h17
-rw-r--r--examples/LDAP/smbldap-tools/mkntpwd/smbdes.c337
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-groupadd.pl86
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-groupdel.pl95
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-groupmod.pl213
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-groupshow.pl74
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-migrate-accounts.pl236
-rw-r--r--examples/LDAP/smbldap-tools/smbldap-migrate-groups.pl227
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-passwd.pl217
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-populate.pl296
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-tools.spec169
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-useradd.pl462
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-userdel.pl124
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-usermod.pl405
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap-usershow.pl71
-rw-r--r--examples/LDAP/smbldap-tools/smbldap_conf.pm251
-rwxr-xr-xexamples/LDAP/smbldap-tools/smbldap_tools.pm585
-rw-r--r--examples/VFS/.cvsignore4
-rw-r--r--examples/VFS/Makefile35
-rw-r--r--examples/VFS/Makefile.in31
-rw-r--r--examples/VFS/README11
-rw-r--r--examples/VFS/block/Makefile37
-rw-r--r--examples/VFS/block/block.c14
-rwxr-xr-xexamples/VFS/configure1161
-rw-r--r--examples/VFS/configure.in92
-rw-r--r--examples/VFS/recycle.c287
-rw-r--r--examples/VFS/recycle/README83
-rw-r--r--examples/VFS/recycle/cleanup_recycle.pl25
-rw-r--r--examples/VFS/recycle/recycle.c556
-rw-r--r--examples/VFS/recycle/recycle.conf17
-rw-r--r--examples/libsmbclient/testsmbc.c126
-rw-r--r--examples/smb.conf.default459
-rwxr-xr-xpackaging/Caldera/OpenLinux/findsmb23
-rw-r--r--packaging/Caldera/OpenLinux/samba2.spec-lsb.tmpl23
-rw-r--r--packaging/Caldera/OpenLinux/samba2.spec-sam.tmpl31
-rw-r--r--packaging/Caldera/OpenLinux/samba2.spec-team.tmpl23
-rw-r--r--packaging/Caldera/OpenLinux/samba2.spec.tmpl1
-rwxr-xr-xpackaging/Caldera/OpenServer/Compile15
-rwxr-xr-xpackaging/Caldera/OpenServer/Configure25
-rwxr-xr-xpackaging/Caldera/OpenServer/Install9
-rw-r--r--packaging/Caldera/OpenServer/example.block.smb.conf5
-rwxr-xr-xpackaging/Caldera/OpenServer/findsmb8
-rw-r--r--packaging/Caldera/OpenServer/pkg/cdmt.config2
-rwxr-xr-xpackaging/Caldera/OpenServer/pkg/cntl/packages/SambaDOC/ccs8
-rw-r--r--packaging/Caldera/OpenServer/pkg/input/Samba.pkg39
-rw-r--r--packaging/Caldera/OpenServer/pkg/input/SambaDOC.pkg9
-rw-r--r--packaging/Caldera/OpenServer/samba.desktop7
-rw-r--r--packaging/Caldera/OpenServer/samba.directory3
-rwxr-xr-xpackaging/Caldera/UnixWare/findsmb27
-rw-r--r--packaging/LSB/lsb-samba.spec4
-rwxr-xr-xpackaging/Mandrake/findsmb23
-rw-r--r--packaging/Mandrake/samba2.spec.tmpl24
-rwxr-xr-xpackaging/PHT/TurboLinux/findsmb23
-rwxr-xr-xpackaging/RedHat/findsmb150
-rw-r--r--packaging/RedHat/samba2-devel.spec.tmpl75
-rw-r--r--packaging/RedHat/samba2.spec.tmpl75
-rwxr-xr-xpackaging/RedHat/smb.init16
-rw-r--r--packaging/RedHat/winbind.init91
-rwxr-xr-xpackaging/SGI/findsmb150
-rwxr-xr-xpackaging/SGI/idb.pl5
-rw-r--r--packaging/Solaris/i.swat2
-rw-r--r--packaging/SuSE/8.0/samba.spec1
-rw-r--r--source/Makefile.in34
-rw-r--r--source/acconfig.h3
-rw-r--r--source/client/client.c18
-rwxr-xr-xsource/configure20577
-rw-r--r--source/configure.in137
-rw-r--r--source/include/config.h.in30
-rw-r--r--source/include/doserr.h1
-rw-r--r--source/include/includes.h27
-rw-r--r--source/include/nameserv.h7
-rw-r--r--source/include/proto.h41
-rw-r--r--source/include/rpc_samr.h13
-rw-r--r--source/include/samba_linux_quota.h490
-rw-r--r--source/include/smb.h22
-rw-r--r--source/include/trans2.h7
-rw-r--r--source/include/version.h2
-rw-r--r--source/lib/access.c2
-rw-r--r--source/lib/charcnv.c19
-rw-r--r--source/lib/debug.c9
-rw-r--r--source/lib/error.c4
-rw-r--r--source/lib/interfaces.c17
-rw-r--r--source/lib/kanji.c4
-rw-r--r--source/lib/messages.c14
-rw-r--r--source/lib/replace.c2
-rw-r--r--source/lib/select.c7
-rw-r--r--source/lib/snprintf.c22
-rw-r--r--source/lib/sysacls.c2
-rw-r--r--source/lib/talloc.c17
-rw-r--r--source/lib/time.c10
-rw-r--r--source/lib/util.c8
-rw-r--r--source/lib/util_sock.c10
-rw-r--r--source/lib/util_str.c34
-rw-r--r--source/lib/util_unistr.c35
-rw-r--r--source/libsmb/cli_lsarpc.c23
-rw-r--r--source/libsmb/cli_netlogon.c6
-rw-r--r--source/libsmb/cli_samr.c6
-rw-r--r--source/libsmb/cliconnect.c30
-rw-r--r--source/libsmb/clifile.c32
-rw-r--r--source/libsmb/clilist.c6
-rw-r--r--source/libsmb/clirap.c6
-rw-r--r--source/libsmb/clitrans.c4
-rw-r--r--source/libsmb/namequery.c69
-rw-r--r--source/libsmb/nmblib.c6
-rw-r--r--source/libsmb/smbencrypt.c2
-rw-r--r--source/locking/locking.c7
-rw-r--r--source/msdfs/msdfs.c8
-rw-r--r--source/nmbd/nmbd.c4
-rw-r--r--source/nmbd/nmbd_namequery.c2
-rw-r--r--source/nsswitch/hp_nss_common.h4
-rw-r--r--source/nsswitch/nss.h2
-rw-r--r--source/nsswitch/wb_common.c4
-rw-r--r--source/nsswitch/wbinfo.c27
-rw-r--r--source/nsswitch/winbind_nss.c31
-rw-r--r--source/nsswitch/winbind_nss_config.h10
-rw-r--r--source/nsswitch/winbindd.c32
-rw-r--r--source/nsswitch/winbindd_cache.c34
-rw-r--r--source/nsswitch/winbindd_misc.c5
-rw-r--r--source/nsswitch/winbindd_pam.c3
-rw-r--r--source/nsswitch/winbindd_rpc.c19
-rw-r--r--source/nsswitch/winbindd_util.c2
-rw-r--r--source/nsswitch/winbindd_wins.c8
-rw-r--r--source/nsswitch/wins.c25
-rw-r--r--source/pam_smbpass/general.h5
-rw-r--r--source/param/loadparm.c60
-rw-r--r--source/passdb/passdb.c7
-rw-r--r--source/passdb/pdb_ldap.c100
-rw-r--r--source/passdb/pdb_nisplus.c18
-rw-r--r--source/printing/nt_printing.c35
-rw-r--r--source/rpc_client/cli_login.c2
-rw-r--r--source/rpc_parse/parse_lsa.c4
-rw-r--r--source/rpc_parse/parse_samr.c82
-rw-r--r--source/rpc_parse/parse_sec.c9
-rw-r--r--source/rpc_parse/parse_spoolss.c225
-rw-r--r--source/rpc_server/srv_dfs_nt.c14
-rw-r--r--source/rpc_server/srv_lsa_hnd.c17
-rw-r--r--source/rpc_server/srv_lsa_nt.c3
-rw-r--r--source/rpc_server/srv_netlog_nt.c2
-rw-r--r--source/rpc_server/srv_pipe_hnd.c8
-rw-r--r--source/rpc_server/srv_samr_nt.c4
-rw-r--r--source/rpc_server/srv_spoolss_nt.c173
-rw-r--r--source/rpc_server/srv_srvsvc_nt.c36
-rw-r--r--source/rpcclient/cmd_dfs.c14
-rw-r--r--source/rpcclient/cmd_netlogon.c8
-rw-r--r--source/rpcclient/cmd_reg.c2
-rw-r--r--source/rpcclient/cmd_samr.c44
-rw-r--r--source/rpcclient/cmd_srvsvc.c10
-rw-r--r--source/rpcclient/samsync.c2
-rw-r--r--source/script/.cvsignore1
-rwxr-xr-xsource/script/findsmb.in118
-rw-r--r--source/smbd/chgpasswd.c8
-rw-r--r--source/smbd/dfree.c9
-rw-r--r--source/smbd/dir.c154
-rw-r--r--source/smbd/filename.c786
-rw-r--r--source/smbd/mangle.c1075
-rw-r--r--source/smbd/mangle_hash.c935
-rw-r--r--source/smbd/mangle_hash2.c24
-rw-r--r--source/smbd/mangle_map.c2
-rw-r--r--source/smbd/notify_kernel.c98
-rw-r--r--source/smbd/nttrans.c11
-rw-r--r--source/smbd/open.c4
-rw-r--r--source/smbd/oplock.c75
-rw-r--r--source/smbd/oplock_irix.c18
-rw-r--r--source/smbd/oplock_linux.c57
-rw-r--r--source/smbd/posix_acls.c170
-rw-r--r--source/smbd/process.c49
-rw-r--r--source/smbd/quotas.c104
-rw-r--r--source/smbd/reply.c25
-rw-r--r--source/smbd/server.c6
-rw-r--r--source/smbd/service.c4
-rw-r--r--source/smbd/trans2.c84
-rw-r--r--source/smbd/uid.c4
-rw-r--r--source/smbd/vfs-wrap.c5
-rw-r--r--source/tdb/tdb.c10
-rw-r--r--source/utils/make_printerdef.c4
-rw-r--r--source/utils/nmblookup.c34
-rw-r--r--source/utils/smbcontrol.c16
-rw-r--r--source/utils/smbpasswd.c83
-rw-r--r--source/utils/status.c10
-rw-r--r--source/web/diagnose.c4
-rw-r--r--swat/help/welcome.html8
240 files changed, 27263 insertions, 21189 deletions
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 1237d35e16b..e17244a56cf 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -138,8 +138,8 @@ Known Bugs
* Under certain conditions when serving the MS Access 2000
executable file and an Access database from a Samba share,
- it is possible to experience data corruption. This pug does
- does occur when the database is served from a Samba file share
+ it is possible to experience data corruption. This bug does not
+ occur when the database is served from a Samba file share
but the Access *.exe is stored on the client's local file system.
The exact reason for this bug is unknown at this time.
diff --git a/docs/Samba-HOWTO-Collection.pdf b/docs/Samba-HOWTO-Collection.pdf
index 15decef867b..011ff341c96 100644
--- a/docs/Samba-HOWTO-Collection.pdf
+++ b/docs/Samba-HOWTO-Collection.pdf
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.11 Copyright 1997-2001 Easy Software Products, All Rights Reserved.)/CreationDate(D:20020502225204Z)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.57)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.11 Copyright 1997-2001 Easy Software Products, All Rights Reserved.)/CreationDate(D:20020617065538Z)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.57)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -97,7 +97,7 @@
69 0 R
71 0 R
]endobj
-73 0 obj<</Subtype/Link/Rect[462.9 705.8 540.9 718.8]/Border[0 0 0]/Dest[741 0 R/XYZ null 768 0]>>endobj
+73 0 obj<</Subtype/Link/Rect[462.9 705.8 540.9 718.8]/Border[0 0 0]/Dest[795 0 R/XYZ null 459 0]>>endobj
74 0 obj<</S/URI/URI(#WRITELIST)>>endobj
75 0 obj<</Subtype/Link/Rect[91.9 313.4 157.9 326.4]/Border[0 0 0]/A 74 0 R>>endobj
76 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
@@ -119,136 +119,153 @@
86 0 obj<</Subtype/Link/Rect[433.8 567.8 526.2 580.8]/Border[0 0 0]/A 85 0 R>>endobj
87 0 obj[86 0 R
]endobj
-88 0 obj<</S/URI/URI(rpcclient.1.html)>>endobj
-89 0 obj<</Subtype/Link/Rect[239.1 583.4 382.1 596.4]/Border[0 0 0]/A 88 0 R>>endobj
-90 0 obj<</S/URI/URI(#SHOWADDPRINTERWIZARD)>>endobj
-91 0 obj<</Subtype/Link/Rect[108.0 159.0 306.0 172.0]/Border[0 0 0]/A 90 0 R>>endobj
-92 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
-93 0 obj<</Subtype/Link/Rect[456.6 132.6 535.8 145.6]/Border[0 0 0]/A 92 0 R>>endobj
-94 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
-95 0 obj<</Subtype/Link/Rect[72.0 119.4 118.2 132.4]/Border[0 0 0]/A 94 0 R>>endobj
-96 0 obj[89 0 R
+88 0 obj<</S/URI/URI(#DEFAULTDEVMODE)>>endobj
+89 0 obj<</Subtype/Link/Rect[303.6 438.2 377.2 451.2]/Border[0 0 0]/A 88 0 R>>endobj
+90 0 obj<</S/URI/URI(rpcclient.1.html)>>endobj
+91 0 obj<</Subtype/Link/Rect[236.4 300.6 330.1 313.6]/Border[0 0 0]/A 90 0 R>>endobj
+92 0 obj[89 0 R
91 0 R
-93 0 R
-95 0 R
]endobj
-97 0 obj<</S/URI/URI(#DELETEPRINTERCOMMAND)>>endobj
-98 0 obj<</Subtype/Link/Rect[189.3 681.4 334.5 694.4]/Border[0 0 0]/A 97 0 R>>endobj
-99 0 obj<</S/URI/URI(#ENUMPORTSCOMMAND)>>endobj
-100 0 obj<</Subtype/Link/Rect[451.4 504.2 510.8 517.2]/Border[0 0 0]/A 99 0 R>>endobj
+93 0 obj<</S/URI/URI(#SHOWADDPRINTERWIZARD)>>endobj
+94 0 obj<</Subtype/Link/Rect[108.0 541.4 306.0 554.4]/Border[0 0 0]/A 93 0 R>>endobj
+95 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
+96 0 obj<</Subtype/Link/Rect[453.9 515.0 526.5 528.0]/Border[0 0 0]/A 95 0 R>>endobj
+97 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
+98 0 obj<</Subtype/Link/Rect[72.0 501.8 118.2 514.8]/Border[0 0 0]/A 97 0 R>>endobj
+99 0 obj<</S/URI/URI(#DELETEPRINTERCOMMAND)>>endobj
+100 0 obj<</Subtype/Link/Rect[189.3 396.2 334.5 409.2]/Border[0 0 0]/A 99 0 R>>endobj
101 0 obj<</S/URI/URI(#ENUMPORTSCOMMAND)>>endobj
-102 0 obj<</Subtype/Link/Rect[72.0 491.0 118.2 504.0]/Border[0 0 0]/A 101 0 R>>endobj
-103 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-104 0 obj<</Subtype/Link/Rect[303.3 406.2 442.9 419.2]/Border[0 0 0]/A 103 0 R>>endobj
-105 0 obj[98 0 R
+102 0 obj<</Subtype/Link/Rect[451.4 219.0 510.8 232.0]/Border[0 0 0]/A 101 0 R>>endobj
+103 0 obj<</S/URI/URI(#ENUMPORTSCOMMAND)>>endobj
+104 0 obj<</Subtype/Link/Rect[72.0 205.8 118.2 218.8]/Border[0 0 0]/A 103 0 R>>endobj
+105 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+106 0 obj<</Subtype/Link/Rect[303.3 121.0 442.9 134.0]/Border[0 0 0]/A 105 0 R>>endobj
+107 0 obj[94 0 R
+96 0 R
+98 0 R
100 0 R
102 0 R
104 0 R
+106 0 R
]endobj
-106 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-107 0 obj<</Subtype/Link/Rect[108.0 479.8 244.9 492.8]/Border[0 0 0]/A 106 0 R>>endobj
-108 0 obj[107 0 R
+108 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+109 0 obj<</Subtype/Link/Rect[108.0 171.8 244.9 184.8]/Border[0 0 0]/A 108 0 R>>endobj
+110 0 obj[109 0 R
]endobj
-109 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
-110 0 obj<</Subtype/Link/Rect[221.4 455.8 287.7 468.8]/Border[0 0 0]/A 109 0 R>>endobj
-111 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-112 0 obj<</Subtype/Link/Rect[353.1 139.0 425.7 152.0]/Border[0 0 0]/A 111 0 R>>endobj
-113 0 obj<</S/URI/URI(#SECURITY)>>endobj
-114 0 obj<</Subtype/Link/Rect[169.1 99.4 241.7 112.4]/Border[0 0 0]/A 113 0 R>>endobj
-115 0 obj[110 0 R
-112 0 R
-114 0 R
+111 0 obj<</S/URI/URI(http://www.cups.org/)>>endobj
+112 0 obj<</Subtype/Link/Rect[72.0 653.8 99.5 666.8]/Border[0 0 0]/A 111 0 R>>endobj
+113 0 obj[112 0 R
]endobj
-116 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
-117 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 116 0 R>>endobj
-118 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
-119 0 obj<</Subtype/Link/Rect[224.7 641.8 343.5 654.8]/Border[0 0 0]/A 118 0 R>>endobj
-120 0 obj<</S/URI/URI(#PASSWORDSERVER)>>endobj
-121 0 obj<</Subtype/Link/Rect[188.7 602.2 307.5 615.2]/Border[0 0 0]/A 120 0 R>>endobj
-122 0 obj[117 0 R
+114 0 obj<</S/URI/URI(http://wwwl.easysw.com/printpro/)>>endobj
+115 0 obj<</Subtype/Link/Rect[108.0 651.4 330.1 664.4]/Border[0 0 0]/A 114 0 R>>endobj
+116 0 obj<</S/URI/URI(http://gimp-print.sourceforge.net/)>>endobj
+117 0 obj<</Subtype/Link/Rect[124.2 585.4 376.9 598.4]/Border[0 0 0]/A 116 0 R>>endobj
+118 0 obj<</S/URI/URI(http://www.turboprint.com/)>>endobj
+119 0 obj<</Subtype/Link/Rect[108.0 545.8 290.7 558.8]/Border[0 0 0]/A 118 0 R>>endobj
+120 0 obj<</S/URI/URI(http://www-124.ibm.com/developerworks/oss/linux/projects/omni/)>>endobj
+121 0 obj<</Subtype/Link/Rect[108.0 519.4 447.3 532.4]/Border[0 0 0]/A 120 0 R>>endobj
+122 0 obj<</S/URI/URI(http://hpinkjet.sourceforge.net/)>>endobj
+123 0 obj<</Subtype/Link/Rect[108.0 466.6 285.2 479.6]/Border[0 0 0]/A 122 0 R>>endobj
+124 0 obj<</S/URI/URI(http://www.linuxprinting.org/)>>endobj
+125 0 obj<</Subtype/Link/Rect[108.0 440.2 343.6 453.2]/Border[0 0 0]/A 124 0 R>>endobj
+126 0 obj[115 0 R
+117 0 R
119 0 R
121 0 R
+123 0 R
+125 0 R
]endobj
-123 0 obj<</S/URI/URI(#SECURITYEQUALSSERVER)>>endobj
-124 0 obj<</Subtype/Link/Rect[277.9 721.0 354.1 734.0]/Border[0 0 0]/A 123 0 R>>endobj
-125 0 obj<</S/URI/URI(winbind.html)>>endobj
-126 0 obj<</Subtype/Link/Rect[153.9 668.2 222.3 681.2]/Border[0 0 0]/A 125 0 R>>endobj
-127 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
-128 0 obj<</Subtype/Link/Rect[443.5 351.4 500.6 364.4]/Border[0 0 0]/A 127 0 R>>endobj
-129 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
-130 0 obj<</Subtype/Link/Rect[72.0 338.2 189.3 351.2]/Border[0 0 0]/A 129 0 R>>endobj
-131 0 obj[124 0 R
-126 0 R
-128 0 R
+127 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
+128 0 obj<</Subtype/Link/Rect[221.4 455.8 287.7 468.8]/Border[0 0 0]/A 127 0 R>>endobj
+129 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+130 0 obj<</Subtype/Link/Rect[353.1 139.0 425.7 152.0]/Border[0 0 0]/A 129 0 R>>endobj
+131 0 obj<</S/URI/URI(#SECURITY)>>endobj
+132 0 obj<</Subtype/Link/Rect[169.1 99.4 241.7 112.4]/Border[0 0 0]/A 131 0 R>>endobj
+133 0 obj[128 0 R
130 0 R
+132 0 R
]endobj
-132 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-133 0 obj<</Subtype/Link/Rect[182.3 603.4 254.9 616.4]/Border[0 0 0]/A 132 0 R>>endobj
-134 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
-135 0 obj<</Subtype/Link/Rect[334.9 603.4 418.9 616.4]/Border[0 0 0]/A 134 0 R>>endobj
-136 0 obj<</S/URI/URI(UNIX_INSTALL.html)>>endobj
-137 0 obj<</Subtype/Link/Rect[339.0 439.4 443.5 452.4]/Border[0 0 0]/A 136 0 R>>endobj
-138 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-139 0 obj<</Subtype/Link/Rect[445.9 426.2 544.6 439.2]/Border[0 0 0]/A 138 0 R>>endobj
-140 0 obj[133 0 R
-135 0 R
+134 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
+135 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 134 0 R>>endobj
+136 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+137 0 obj<</Subtype/Link/Rect[224.7 641.8 343.5 654.8]/Border[0 0 0]/A 136 0 R>>endobj
+138 0 obj<</S/URI/URI(#PASSWORDSERVER)>>endobj
+139 0 obj<</Subtype/Link/Rect[188.7 602.2 307.5 615.2]/Border[0 0 0]/A 138 0 R>>endobj
+140 0 obj[135 0 R
137 0 R
139 0 R
]endobj
-141 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-142 0 obj<</Subtype/Link/Rect[468.3 636.2 549.6 649.2]/Border[0 0 0]/A 141 0 R>>endobj
-143 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-144 0 obj<</Subtype/Link/Rect[72.0 623.0 92.8 636.0]/Border[0 0 0]/A 143 0 R>>endobj
-145 0 obj<</S/URI/URI(#NETBIOSNAME)>>endobj
-146 0 obj<</Subtype/Link/Rect[94.6 549.6 159.4 560.6]/Border[0 0 0]/A 145 0 R>>endobj
-147 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
-148 0 obj<</Subtype/Link/Rect[94.6 538.8 143.2 549.8]/Border[0 0 0]/A 147 0 R>>endobj
-149 0 obj<</S/URI/URI(#OSLEVEL)>>endobj
-150 0 obj<</Subtype/Link/Rect[94.6 506.4 137.8 517.4]/Border[0 0 0]/A 149 0 R>>endobj
-151 0 obj<</S/URI/URI(#PERFERREDMASTER)>>endobj
-152 0 obj<</Subtype/Link/Rect[94.6 495.6 181.0 506.6]/Border[0 0 0]/A 151 0 R>>endobj
-153 0 obj<</S/URI/URI(#DOMAINMASTER)>>endobj
-154 0 obj<</Subtype/Link/Rect[94.6 484.8 164.8 495.8]/Border[0 0 0]/A 153 0 R>>endobj
-155 0 obj<</S/URI/URI(#LOCALMASTER)>>endobj
-156 0 obj<</Subtype/Link/Rect[94.6 474.0 159.4 485.0]/Border[0 0 0]/A 155 0 R>>endobj
-157 0 obj<</S/URI/URI(#SECURITYEQUALSUSER)>>endobj
-158 0 obj<</Subtype/Link/Rect[94.6 441.6 137.8 452.6]/Border[0 0 0]/A 157 0 R>>endobj
-159 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
-160 0 obj<</Subtype/Link/Rect[94.6 409.2 186.4 420.2]/Border[0 0 0]/A 159 0 R>>endobj
-161 0 obj<</S/URI/URI(#DOMAINLOGONS)>>endobj
-162 0 obj<</Subtype/Link/Rect[94.6 376.8 164.8 387.8]/Border[0 0 0]/A 161 0 R>>endobj
-163 0 obj<</S/URI/URI(#LOGONPATH)>>endobj
-164 0 obj<</Subtype/Link/Rect[94.6 344.4 148.6 355.4]/Border[0 0 0]/A 163 0 R>>endobj
-165 0 obj<</S/URI/URI(#LOGONDRIVE)>>endobj
-166 0 obj<</Subtype/Link/Rect[94.6 301.2 154.0 312.2]/Border[0 0 0]/A 165 0 R>>endobj
-167 0 obj<</S/URI/URI(#LOGONHOME)>>endobj
-168 0 obj<</Subtype/Link/Rect[94.6 290.4 148.6 301.4]/Border[0 0 0]/A 167 0 R>>endobj
-169 0 obj<</S/URI/URI(#LOGONSCRIPT)>>endobj
-170 0 obj<</Subtype/Link/Rect[94.6 247.2 159.4 258.2]/Border[0 0 0]/A 169 0 R>>endobj
-171 0 obj<</S/URI/URI(#PATH)>>endobj
-172 0 obj<</Subtype/Link/Rect[94.6 204.0 116.2 215.0]/Border[0 0 0]/A 171 0 R>>endobj
-173 0 obj<</S/URI/URI(#READONLY)>>endobj
-174 0 obj<</Subtype/Link/Rect[94.6 193.2 143.2 204.2]/Border[0 0 0]/A 173 0 R>>endobj
-175 0 obj<</S/URI/URI(#WRITELIST)>>endobj
-176 0 obj<</Subtype/Link/Rect[94.6 182.4 148.6 193.4]/Border[0 0 0]/A 175 0 R>>endobj
-177 0 obj<</S/URI/URI(#PATH)>>endobj
-178 0 obj<</Subtype/Link/Rect[94.6 139.2 116.2 150.2]/Border[0 0 0]/A 177 0 R>>endobj
-179 0 obj<</S/URI/URI(#READONLY)>>endobj
-180 0 obj<</Subtype/Link/Rect[94.6 128.4 143.2 139.4]/Border[0 0 0]/A 179 0 R>>endobj
-181 0 obj<</S/URI/URI(#CREATEMASK)>>endobj
-182 0 obj<</Subtype/Link/Rect[94.6 117.6 154.0 128.6]/Border[0 0 0]/A 181 0 R>>endobj
-183 0 obj<</S/URI/URI(#DIRECTORYMASK)>>endobj
-184 0 obj<</Subtype/Link/Rect[94.6 106.8 170.2 117.8]/Border[0 0 0]/A 183 0 R>>endobj
-185 0 obj[142 0 R
+141 0 obj<</S/URI/URI(#SECURITYEQUALSSERVER)>>endobj
+142 0 obj<</Subtype/Link/Rect[277.9 721.0 354.1 734.0]/Border[0 0 0]/A 141 0 R>>endobj
+143 0 obj<</S/URI/URI(winbind.html)>>endobj
+144 0 obj<</Subtype/Link/Rect[153.9 668.2 222.3 681.2]/Border[0 0 0]/A 143 0 R>>endobj
+145 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
+146 0 obj<</Subtype/Link/Rect[443.5 351.4 500.6 364.4]/Border[0 0 0]/A 145 0 R>>endobj
+147 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
+148 0 obj<</Subtype/Link/Rect[72.0 338.2 189.3 351.2]/Border[0 0 0]/A 147 0 R>>endobj
+149 0 obj[142 0 R
144 0 R
146 0 R
148 0 R
-150 0 R
-152 0 R
-154 0 R
-156 0 R
-158 0 R
-160 0 R
+]endobj
+150 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+151 0 obj<</Subtype/Link/Rect[182.3 603.4 254.9 616.4]/Border[0 0 0]/A 150 0 R>>endobj
+152 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+153 0 obj<</Subtype/Link/Rect[334.9 603.4 418.9 616.4]/Border[0 0 0]/A 152 0 R>>endobj
+154 0 obj<</S/URI/URI(UNIX_INSTALL.html)>>endobj
+155 0 obj<</Subtype/Link/Rect[339.0 439.4 443.5 452.4]/Border[0 0 0]/A 154 0 R>>endobj
+156 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+157 0 obj<</Subtype/Link/Rect[445.9 426.2 544.6 439.2]/Border[0 0 0]/A 156 0 R>>endobj
+158 0 obj[151 0 R
+153 0 R
+155 0 R
+157 0 R
+]endobj
+159 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+160 0 obj<</Subtype/Link/Rect[468.3 636.2 549.6 649.2]/Border[0 0 0]/A 159 0 R>>endobj
+161 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+162 0 obj<</Subtype/Link/Rect[72.0 623.0 92.8 636.0]/Border[0 0 0]/A 161 0 R>>endobj
+163 0 obj<</S/URI/URI(#NETBIOSNAME)>>endobj
+164 0 obj<</Subtype/Link/Rect[94.6 549.6 159.4 560.6]/Border[0 0 0]/A 163 0 R>>endobj
+165 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
+166 0 obj<</Subtype/Link/Rect[94.6 538.8 143.2 549.8]/Border[0 0 0]/A 165 0 R>>endobj
+167 0 obj<</S/URI/URI(#OSLEVEL)>>endobj
+168 0 obj<</Subtype/Link/Rect[94.6 506.4 137.8 517.4]/Border[0 0 0]/A 167 0 R>>endobj
+169 0 obj<</S/URI/URI(#PERFERREDMASTER)>>endobj
+170 0 obj<</Subtype/Link/Rect[94.6 495.6 181.0 506.6]/Border[0 0 0]/A 169 0 R>>endobj
+171 0 obj<</S/URI/URI(#DOMAINMASTER)>>endobj
+172 0 obj<</Subtype/Link/Rect[94.6 484.8 164.8 495.8]/Border[0 0 0]/A 171 0 R>>endobj
+173 0 obj<</S/URI/URI(#LOCALMASTER)>>endobj
+174 0 obj<</Subtype/Link/Rect[94.6 474.0 159.4 485.0]/Border[0 0 0]/A 173 0 R>>endobj
+175 0 obj<</S/URI/URI(#SECURITYEQUALSUSER)>>endobj
+176 0 obj<</Subtype/Link/Rect[94.6 441.6 137.8 452.6]/Border[0 0 0]/A 175 0 R>>endobj
+177 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+178 0 obj<</Subtype/Link/Rect[94.6 409.2 186.4 420.2]/Border[0 0 0]/A 177 0 R>>endobj
+179 0 obj<</S/URI/URI(#DOMAINLOGONS)>>endobj
+180 0 obj<</Subtype/Link/Rect[94.6 376.8 164.8 387.8]/Border[0 0 0]/A 179 0 R>>endobj
+181 0 obj<</S/URI/URI(#LOGONPATH)>>endobj
+182 0 obj<</Subtype/Link/Rect[94.6 344.4 148.6 355.4]/Border[0 0 0]/A 181 0 R>>endobj
+183 0 obj<</S/URI/URI(#LOGONDRIVE)>>endobj
+184 0 obj<</Subtype/Link/Rect[94.6 301.2 154.0 312.2]/Border[0 0 0]/A 183 0 R>>endobj
+185 0 obj<</S/URI/URI(#LOGONHOME)>>endobj
+186 0 obj<</Subtype/Link/Rect[94.6 290.4 148.6 301.4]/Border[0 0 0]/A 185 0 R>>endobj
+187 0 obj<</S/URI/URI(#LOGONSCRIPT)>>endobj
+188 0 obj<</Subtype/Link/Rect[94.6 247.2 159.4 258.2]/Border[0 0 0]/A 187 0 R>>endobj
+189 0 obj<</S/URI/URI(#PATH)>>endobj
+190 0 obj<</Subtype/Link/Rect[94.6 204.0 116.2 215.0]/Border[0 0 0]/A 189 0 R>>endobj
+191 0 obj<</S/URI/URI(#READONLY)>>endobj
+192 0 obj<</Subtype/Link/Rect[94.6 193.2 143.2 204.2]/Border[0 0 0]/A 191 0 R>>endobj
+193 0 obj<</S/URI/URI(#WRITELIST)>>endobj
+194 0 obj<</Subtype/Link/Rect[94.6 182.4 148.6 193.4]/Border[0 0 0]/A 193 0 R>>endobj
+195 0 obj<</S/URI/URI(#PATH)>>endobj
+196 0 obj<</Subtype/Link/Rect[94.6 139.2 116.2 150.2]/Border[0 0 0]/A 195 0 R>>endobj
+197 0 obj<</S/URI/URI(#READONLY)>>endobj
+198 0 obj<</Subtype/Link/Rect[94.6 128.4 143.2 139.4]/Border[0 0 0]/A 197 0 R>>endobj
+199 0 obj<</S/URI/URI(#CREATEMASK)>>endobj
+200 0 obj<</Subtype/Link/Rect[94.6 117.6 154.0 128.6]/Border[0 0 0]/A 199 0 R>>endobj
+201 0 obj<</S/URI/URI(#DIRECTORYMASK)>>endobj
+202 0 obj<</Subtype/Link/Rect[94.6 106.8 170.2 117.8]/Border[0 0 0]/A 201 0 R>>endobj
+203 0 obj[160 0 R
162 0 R
164 0 R
166 0 R
@@ -261,284 +278,280 @@
180 0 R
182 0 R
184 0 R
+186 0 R
+188 0 R
+190 0 R
+192 0 R
+194 0 R
+196 0 R
+198 0 R
+200 0 R
+202 0 R
]endobj
-186 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
-187 0 obj<</Subtype/Link/Rect[108.0 707.8 200.6 720.8]/Border[0 0 0]/A 186 0 R>>endobj
-188 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
-189 0 obj<</Subtype/Link/Rect[497.0 615.4 530.0 628.4]/Border[0 0 0]/A 188 0 R>>endobj
-190 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
-191 0 obj<</Subtype/Link/Rect[72.0 602.2 127.9 615.2]/Border[0 0 0]/A 190 0 R>>endobj
-192 0 obj[187 0 R
-189 0 R
-191 0 R
+204 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+205 0 obj<</Subtype/Link/Rect[108.0 707.8 200.6 720.8]/Border[0 0 0]/A 204 0 R>>endobj
+206 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
+207 0 obj<</Subtype/Link/Rect[497.0 615.4 530.0 628.4]/Border[0 0 0]/A 206 0 R>>endobj
+208 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
+209 0 obj<</Subtype/Link/Rect[72.0 602.2 127.9 615.2]/Border[0 0 0]/A 208 0 R>>endobj
+210 0 obj[205 0 R
+207 0 R
+209 0 R
]endobj
-193 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
-194 0 obj<</Subtype/Link/Rect[72.0 550.6 138.6 563.6]/Border[0 0 0]/A 193 0 R>>endobj
-195 0 obj<</S/URI/URI(#ADDUSERSCRIPT)>>endobj
-196 0 obj<</Subtype/Link/Rect[422.7 229.4 486.9 242.4]/Border[0 0 0]/A 195 0 R>>endobj
-197 0 obj[194 0 R
-196 0 R
+211 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
+212 0 obj<</Subtype/Link/Rect[72.0 550.6 138.6 563.6]/Border[0 0 0]/A 211 0 R>>endobj
+213 0 obj<</S/URI/URI(#ADDUSERSCRIPT)>>endobj
+214 0 obj<</Subtype/Link/Rect[422.7 229.4 486.9 242.4]/Border[0 0 0]/A 213 0 R>>endobj
+215 0 obj[212 0 R
+214 0 R
]endobj
-198 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
-199 0 obj<</Subtype/Link/Rect[164.2 636.2 409.3 649.2]/Border[0 0 0]/A 198 0 R>>endobj
-200 0 obj[199 0 R
+216 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
+217 0 obj<</Subtype/Link/Rect[164.2 636.2 409.3 649.2]/Border[0 0 0]/A 216 0 R>>endobj
+218 0 obj[217 0 R
]endobj
-201 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
-202 0 obj<</Subtype/Link/Rect[287.9 721.0 540.0 734.0]/Border[0 0 0]/A 201 0 R>>endobj
-203 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
-204 0 obj<</Subtype/Link/Rect[236.3 681.4 508.6 694.4]/Border[0 0 0]/A 203 0 R>>endobj
-205 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
-206 0 obj<</Subtype/Link/Rect[352.1 266.6 458.1 279.6]/Border[0 0 0]/A 205 0 R>>endobj
-207 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
-208 0 obj<</Subtype/Link/Rect[430.0 253.4 539.4 266.4]/Border[0 0 0]/A 207 0 R>>endobj
-209 0 obj[202 0 R
-204 0 R
-206 0 R
-208 0 R
+219 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
+220 0 obj<</Subtype/Link/Rect[287.9 721.0 540.0 734.0]/Border[0 0 0]/A 219 0 R>>endobj
+221 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
+222 0 obj<</Subtype/Link/Rect[236.3 681.4 508.6 694.4]/Border[0 0 0]/A 221 0 R>>endobj
+223 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
+224 0 obj<</Subtype/Link/Rect[352.1 266.6 458.1 279.6]/Border[0 0 0]/A 223 0 R>>endobj
+225 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
+226 0 obj<</Subtype/Link/Rect[430.0 253.4 539.4 266.4]/Border[0 0 0]/A 225 0 R>>endobj
+227 0 obj[220 0 R
+222 0 R
+224 0 R
+226 0 R
]endobj
-210 0 obj<</S/URI/URI(http://samba.org)>>endobj
-211 0 obj<</Subtype/Link/Rect[236.3 338.2 310.8 351.2]/Border[0 0 0]/A 210 0 R>>endobj
-212 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
-213 0 obj<</Subtype/Link/Rect[144.0 285.4 346.1 298.4]/Border[0 0 0]/A 212 0 R>>endobj
-214 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
-215 0 obj<</Subtype/Link/Rect[182.5 259.0 345.0 272.0]/Border[0 0 0]/A 214 0 R>>endobj
-216 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
-217 0 obj<</Subtype/Link/Rect[284.9 245.8 381.4 258.8]/Border[0 0 0]/A 216 0 R>>endobj
-218 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
-219 0 obj<</Subtype/Link/Rect[244.2 232.6 411.2 245.6]/Border[0 0 0]/A 218 0 R>>endobj
-220 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
-221 0 obj<</Subtype/Link/Rect[280.3 219.4 471.9 232.4]/Border[0 0 0]/A 220 0 R>>endobj
-222 0 obj<</S/URI/URI(http://samba.org)>>endobj
-223 0 obj<</Subtype/Link/Rect[361.0 166.6 432.8 179.6]/Border[0 0 0]/A 222 0 R>>endobj
-224 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
-225 0 obj<</Subtype/Link/Rect[301.1 127.0 425.6 140.0]/Border[0 0 0]/A 224 0 R>>endobj
-226 0 obj[211 0 R
-213 0 R
-215 0 R
-217 0 R
-219 0 R
-221 0 R
-223 0 R
-225 0 R
+228 0 obj<</S/URI/URI(http://samba.org)>>endobj
+229 0 obj<</Subtype/Link/Rect[236.3 338.2 310.8 351.2]/Border[0 0 0]/A 228 0 R>>endobj
+230 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
+231 0 obj<</Subtype/Link/Rect[144.0 285.4 346.1 298.4]/Border[0 0 0]/A 230 0 R>>endobj
+232 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
+233 0 obj<</Subtype/Link/Rect[182.5 259.0 345.0 272.0]/Border[0 0 0]/A 232 0 R>>endobj
+234 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
+235 0 obj<</Subtype/Link/Rect[284.9 245.8 381.4 258.8]/Border[0 0 0]/A 234 0 R>>endobj
+236 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
+237 0 obj<</Subtype/Link/Rect[244.2 232.6 411.2 245.6]/Border[0 0 0]/A 236 0 R>>endobj
+238 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
+239 0 obj<</Subtype/Link/Rect[280.3 219.4 471.9 232.4]/Border[0 0 0]/A 238 0 R>>endobj
+240 0 obj<</S/URI/URI(http://samba.org)>>endobj
+241 0 obj<</Subtype/Link/Rect[361.0 166.6 432.8 179.6]/Border[0 0 0]/A 240 0 R>>endobj
+242 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
+243 0 obj<</Subtype/Link/Rect[301.1 127.0 425.6 140.0]/Border[0 0 0]/A 242 0 R>>endobj
+244 0 obj[229 0 R
+231 0 R
+233 0 R
+235 0 R
+237 0 R
+239 0 R
+241 0 R
+243 0 R
]endobj
-227 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
-228 0 obj<</Subtype/Link/Rect[135.5 351.4 227.8 364.4]/Border[0 0 0]/A 227 0 R>>endobj
-229 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
-230 0 obj<</Subtype/Link/Rect[309.0 338.2 330.7 351.2]/Border[0 0 0]/A 229 0 R>>endobj
-231 0 obj[228 0 R
-230 0 R
+245 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
+246 0 obj<</Subtype/Link/Rect[135.5 351.4 227.8 364.4]/Border[0 0 0]/A 245 0 R>>endobj
+247 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
+248 0 obj<</Subtype/Link/Rect[309.0 338.2 330.7 351.2]/Border[0 0 0]/A 247 0 R>>endobj
+249 0 obj[246 0 R
+248 0 R
]endobj
-232 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
-233 0 obj<</Subtype/Link/Rect[213.2 616.6 317.8 629.6]/Border[0 0 0]/A 232 0 R>>endobj
-234 0 obj[233 0 R
+250 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
+251 0 obj<</Subtype/Link/Rect[213.2 616.6 317.8 629.6]/Border[0 0 0]/A 250 0 R>>endobj
+252 0 obj[251 0 R
]endobj
-235 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
-236 0 obj<</Subtype/Link/Rect[172.3 563.8 285.9 576.8]/Border[0 0 0]/A 235 0 R>>endobj
-237 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
-238 0 obj<</Subtype/Link/Rect[226.6 550.6 387.9 563.6]/Border[0 0 0]/A 237 0 R>>endobj
-239 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
-240 0 obj<</Subtype/Link/Rect[115.4 524.2 202.0 537.2]/Border[0 0 0]/A 239 0 R>>endobj
-241 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html)>>endobj
-242 0 obj<</Subtype/Link/Rect[127.9 458.2 267.5 471.2]/Border[0 0 0]/A 241 0 R>>endobj
-243 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
-244 0 obj<</Subtype/Link/Rect[246.4 445.0 287.3 458.0]/Border[0 0 0]/A 243 0 R>>endobj
-245 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
-246 0 obj<</Subtype/Link/Rect[215.6 360.2 332.5 373.2]/Border[0 0 0]/A 245 0 R>>endobj
-247 0 obj[236 0 R
-238 0 R
-240 0 R
-242 0 R
-244 0 R
-246 0 R
+253 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
+254 0 obj<</Subtype/Link/Rect[244.7 91.4 311.3 104.4]/Border[0 0 0]/A 253 0 R>>endobj
+255 0 obj[254 0 R
]endobj
-248 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
-249 0 obj<</Subtype/Link/Rect[284.3 589.0 380.9 602.0]/Border[0 0 0]/A 248 0 R>>endobj
-250 0 obj<</S/URI/URI(samba-patches@samba.org)>>endobj
-251 0 obj<</Subtype/Link/Rect[335.0 464.6 458.0 477.6]/Border[0 0 0]/A 250 0 R>>endobj
-252 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
-253 0 obj<</Subtype/Link/Rect[479.4 464.6 555.8 477.6]/Border[0 0 0]/A 252 0 R>>endobj
-254 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
-255 0 obj<</Subtype/Link/Rect[273.9 223.8 350.4 236.8]/Border[0 0 0]/A 254 0 R>>endobj
-256 0 obj[249 0 R
-251 0 R
-253 0 R
-255 0 R
+256 0 obj<</S/URI/URI(Samba-LDAP-HOWTO.html)>>endobj
+257 0 obj<</Subtype/Link/Rect[72.0 189.8 184.0 202.8]/Border[0 0 0]/A 256 0 R>>endobj
+258 0 obj[257 0 R
]endobj
-257 0 obj<</S/URI/URI(#LDAPSSL)>>endobj
-258 0 obj<</Subtype/Link/Rect[108.0 651.4 141.3 664.4]/Border[0 0 0]/A 257 0 R>>endobj
-259 0 obj<</S/URI/URI(#LDAPSERVER)>>endobj
-260 0 obj<</Subtype/Link/Rect[108.0 638.2 156.6 651.2]/Border[0 0 0]/A 259 0 R>>endobj
-261 0 obj<</S/URI/URI(#LDAPADMINDN)>>endobj
-262 0 obj<</Subtype/Link/Rect[108.0 625.0 170.9 638.0]/Border[0 0 0]/A 261 0 R>>endobj
-263 0 obj<</S/URI/URI(#LDAPSUFFIX)>>endobj
-264 0 obj<</Subtype/Link/Rect[108.0 611.8 155.4 624.8]/Border[0 0 0]/A 263 0 R>>endobj
-265 0 obj<</S/URI/URI(#LDAPFILTER)>>endobj
-266 0 obj<</Subtype/Link/Rect[108.0 598.6 151.1 611.6]/Border[0 0 0]/A 265 0 R>>endobj
-267 0 obj<</S/URI/URI(#LDAPPORT)>>endobj
-268 0 obj<</Subtype/Link/Rect[108.0 585.4 147.4 598.4]/Border[0 0 0]/A 267 0 R>>endobj
-269 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
-270 0 obj<</Subtype/Link/Rect[189.6 559.0 243.1 572.0]/Border[0 0 0]/A 269 0 R>>endobj
-271 0 obj[258 0 R
-260 0 R
+259 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
+260 0 obj<</Subtype/Link/Rect[172.3 563.8 285.9 576.8]/Border[0 0 0]/A 259 0 R>>endobj
+261 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
+262 0 obj<</Subtype/Link/Rect[226.6 550.6 387.9 563.6]/Border[0 0 0]/A 261 0 R>>endobj
+263 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
+264 0 obj<</Subtype/Link/Rect[115.4 524.2 202.0 537.2]/Border[0 0 0]/A 263 0 R>>endobj
+265 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html)>>endobj
+266 0 obj<</Subtype/Link/Rect[127.9 458.2 267.5 471.2]/Border[0 0 0]/A 265 0 R>>endobj
+267 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
+268 0 obj<</Subtype/Link/Rect[246.4 445.0 287.3 458.0]/Border[0 0 0]/A 267 0 R>>endobj
+269 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+270 0 obj<</Subtype/Link/Rect[215.6 347.0 332.5 360.0]/Border[0 0 0]/A 269 0 R>>endobj
+271 0 obj[260 0 R
262 0 R
264 0 R
266 0 R
268 0 R
270 0 R
]endobj
-272 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
-273 0 obj<</Subtype/Link/Rect[72.0 451.4 176.8 464.4]/Border[0 0 0]/A 272 0 R>>endobj
-274 0 obj[273 0 R
-]endobj
-275 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
-276 0 obj<</Subtype/Link/Rect[72.0 391.0 176.7 404.0]/Border[0 0 0]/A 275 0 R>>endobj
-277 0 obj[276 0 R
-]endobj
-278 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-279 0 obj<</Subtype/Link/Rect[305.4 285.8 381.8 298.8]/Border[0 0 0]/A 278 0 R>>endobj
-280 0 obj[279 0 R
+272 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
+273 0 obj<</Subtype/Link/Rect[284.3 575.8 380.9 588.8]/Border[0 0 0]/A 272 0 R>>endobj
+274 0 obj<</S/URI/URI(samba-patches@samba.org)>>endobj
+275 0 obj<</Subtype/Link/Rect[335.0 451.4 458.0 464.4]/Border[0 0 0]/A 274 0 R>>endobj
+276 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
+277 0 obj<</Subtype/Link/Rect[479.4 451.4 555.8 464.4]/Border[0 0 0]/A 276 0 R>>endobj
+278 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
+279 0 obj<</Subtype/Link/Rect[304.2 210.6 380.6 223.6]/Border[0 0 0]/A 278 0 R>>endobj
+280 0 obj[273 0 R
+275 0 R
+277 0 R
+279 0 R
]endobj
-281 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
-282 0 obj<</Subtype/Link/Rect[200.6 255.4 310.1 268.4]/Border[0 0 0]/A 281 0 R>>endobj
-283 0 obj[282 0 R
-]endobj
-284 0 obj<</S/URI/URI(http://samba.org/)>>endobj
-285 0 obj<</Subtype/Link/Rect[196.9 345.8 308.1 358.8]/Border[0 0 0]/A 284 0 R>>endobj
-286 0 obj[285 0 R
-]endobj
-287 0 obj<</S/URI/URI(winbindd.8.html)>>endobj
-288 0 obj<</Subtype/Link/Rect[311.8 142.2 366.1 155.2]/Border[0 0 0]/A 287 0 R>>endobj
-289 0 obj<</S/URI/URI(#WINBINDSEPARATOR)>>endobj
-290 0 obj<</Subtype/Link/Rect[100.0 71.2 191.8 82.2]/Border[0 0 0]/A 289 0 R>>endobj
-291 0 obj[288 0 R
+281 0 obj<</S/URI/URI(#LDAPSSL)>>endobj
+282 0 obj<</Subtype/Link/Rect[108.0 535.4 141.3 548.4]/Border[0 0 0]/A 281 0 R>>endobj
+283 0 obj<</S/URI/URI(#LDAPSERVER)>>endobj
+284 0 obj<</Subtype/Link/Rect[108.0 522.2 156.6 535.2]/Border[0 0 0]/A 283 0 R>>endobj
+285 0 obj<</S/URI/URI(#LDAPADMINDN)>>endobj
+286 0 obj<</Subtype/Link/Rect[108.0 509.0 170.9 522.0]/Border[0 0 0]/A 285 0 R>>endobj
+287 0 obj<</S/URI/URI(#LDAPSUFFIX)>>endobj
+288 0 obj<</Subtype/Link/Rect[108.0 495.8 155.4 508.8]/Border[0 0 0]/A 287 0 R>>endobj
+289 0 obj<</S/URI/URI(#LDAPFILTER)>>endobj
+290 0 obj<</Subtype/Link/Rect[108.0 482.6 151.1 495.6]/Border[0 0 0]/A 289 0 R>>endobj
+291 0 obj<</S/URI/URI(#LDAPPORT)>>endobj
+292 0 obj<</Subtype/Link/Rect[108.0 469.4 147.4 482.4]/Border[0 0 0]/A 291 0 R>>endobj
+293 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+294 0 obj<</Subtype/Link/Rect[189.6 443.0 243.1 456.0]/Border[0 0 0]/A 293 0 R>>endobj
+295 0 obj[282 0 R
+284 0 R
+286 0 R
+288 0 R
290 0 R
+292 0 R
+294 0 R
]endobj
-292 0 obj<</S/URI/URI(#WINBINDUID)>>endobj
-293 0 obj<</Subtype/Link/Rect[100.0 722.0 159.4 733.0]/Border[0 0 0]/A 292 0 R>>endobj
-294 0 obj<</S/URI/URI(#WINBINDGID)>>endobj
-295 0 obj<</Subtype/Link/Rect[100.0 700.4 159.4 711.4]/Border[0 0 0]/A 294 0 R>>endobj
-296 0 obj<</S/URI/URI(#WINBINDENUMUSERS)>>endobj
-297 0 obj<</Subtype/Link/Rect[100.0 678.8 197.2 689.8]/Border[0 0 0]/A 296 0 R>>endobj
-298 0 obj<</S/URI/URI(#WINBINDENUMGROUP)>>endobj
-299 0 obj<</Subtype/Link/Rect[100.0 668.0 202.6 679.0]/Border[0 0 0]/A 298 0 R>>endobj
-300 0 obj<</S/URI/URI(#TEMPLATEHOMEDIR)>>endobj
-301 0 obj<</Subtype/Link/Rect[100.0 646.4 186.4 657.4]/Border[0 0 0]/A 300 0 R>>endobj
-302 0 obj<</S/URI/URI(#TEMPLATESHELL)>>endobj
-303 0 obj<</Subtype/Link/Rect[100.0 635.6 175.6 646.6]/Border[0 0 0]/A 302 0 R>>endobj
-304 0 obj[293 0 R
-295 0 R
-297 0 R
+296 0 obj<</S/URI/URI(http://search.cpan.org/)>>endobj
+297 0 obj<</Subtype/Link/Rect[195.1 558.2 293.4 571.2]/Border[0 0 0]/A 296 0 R>>endobj
+298 0 obj<</S/URI/URI(http://perl-ldap.sf.net/)>>endobj
+299 0 obj<</Subtype/Link/Rect[108.0 545.0 206.5 558.0]/Border[0 0 0]/A 298 0 R>>endobj
+300 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+301 0 obj<</Subtype/Link/Rect[72.0 137.8 176.8 150.8]/Border[0 0 0]/A 300 0 R>>endobj
+302 0 obj[297 0 R
299 0 R
301 0 R
-303 0 R
]endobj
-305 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
-306 0 obj<</Subtype/Link/Rect[331.1 607.0 550.0 620.0]/Border[0 0 0]/A 305 0 R>>endobj
-307 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
-308 0 obj<</Subtype/Link/Rect[72.0 241.4 319.2 254.4]/Border[0 0 0]/A 307 0 R>>endobj
-309 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
-310 0 obj<</Subtype/Link/Rect[346.1 241.4 544.2 254.4]/Border[0 0 0]/A 309 0 R>>endobj
-311 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
-312 0 obj<</Subtype/Link/Rect[175.9 117.8 366.2 130.8]/Border[0 0 0]/A 311 0 R>>endobj
-313 0 obj[306 0 R
-308 0 R
-310 0 R
-312 0 R
+303 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
+304 0 obj<</Subtype/Link/Rect[72.0 90.2 176.7 103.2]/Border[0 0 0]/A 303 0 R>>endobj
+305 0 obj[304 0 R
]endobj
-314 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
-315 0 obj<</Subtype/Link/Rect[225.7 661.0 434.8 674.0]/Border[0 0 0]/A 314 0 R>>endobj
-316 0 obj[315 0 R
+306 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+307 0 obj<</Subtype/Link/Rect[305.4 662.6 381.8 675.6]/Border[0 0 0]/A 306 0 R>>endobj
+308 0 obj[307 0 R
]endobj
-317 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
-318 0 obj<</Subtype/Link/Rect[357.1 577.0 500.7 590.0]/Border[0 0 0]/A 317 0 R>>endobj
-319 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
-320 0 obj<</Subtype/Link/Rect[138.6 354.6 283.2 367.6]/Border[0 0 0]/A 319 0 R>>endobj
-321 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
-322 0 obj<</Subtype/Link/Rect[394.3 230.2 498.2 243.2]/Border[0 0 0]/A 321 0 R>>endobj
-323 0 obj[318 0 R
-320 0 R
-322 0 R
+309 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
+310 0 obj<</Subtype/Link/Rect[200.6 255.4 310.1 268.4]/Border[0 0 0]/A 309 0 R>>endobj
+311 0 obj[310 0 R
]endobj
-324 0 obj<</S/URI/URI(x1100.htm)>>endobj
-325 0 obj<</Subtype/Link/Rect[201.6 408.2 258.1 421.2]/Border[0 0 0]/A 324 0 R>>endobj
-326 0 obj[325 0 R
+312 0 obj<</S/URI/URI(http://samba.org/)>>endobj
+313 0 obj<</Subtype/Link/Rect[478.3 385.4 542.2 398.4]/Border[0 0 0]/A 312 0 R>>endobj
+314 0 obj<</S/URI/URI(http://samba.org/)>>endobj
+315 0 obj<</Subtype/Link/Rect[72.0 372.2 113.8 385.2]/Border[0 0 0]/A 314 0 R>>endobj
+316 0 obj[313 0 R
+315 0 R
]endobj
-327 0 obj<</Subtype/Link/Rect[72.0 684.0 277.3 697.0]/Border[0 0 0]/Dest[639 0 R/XYZ null 798 0]>>endobj
-328 0 obj<</Subtype/Link/Rect[108.0 670.8 249.2 683.8]/Border[0 0 0]/Dest[639 0 R/XYZ null 730 0]>>endobj
-329 0 obj<</Subtype/Link/Rect[108.0 657.6 255.0 670.6]/Border[0 0 0]/Dest[639 0 R/XYZ null 593 0]>>endobj
-330 0 obj<</Subtype/Link/Rect[108.0 644.4 257.7 657.4]/Border[0 0 0]/Dest[639 0 R/XYZ null 178 0]>>endobj
-331 0 obj<</Subtype/Link/Rect[108.0 631.2 309.0 644.2]/Border[0 0 0]/Dest[642 0 R/XYZ null 739 0]>>endobj
-332 0 obj<</Subtype/Link/Rect[108.0 618.0 316.7 631.0]/Border[0 0 0]/Dest[642 0 R/XYZ null 379 0]>>endobj
-333 0 obj<</Subtype/Link/Rect[108.0 604.8 284.9 617.8]/Border[0 0 0]/Dest[642 0 R/XYZ null 268 0]>>endobj
-334 0 obj<</Subtype/Link/Rect[108.0 591.6 280.0 604.6]/Border[0 0 0]/Dest[645 0 R/XYZ null 768 0]>>endobj
-335 0 obj<</Subtype/Link/Rect[108.0 578.4 328.6 591.4]/Border[0 0 0]/Dest[645 0 R/XYZ null 266 0]>>endobj
-336 0 obj<</Subtype/Link/Rect[108.0 565.2 364.9 578.2]/Border[0 0 0]/Dest[648 0 R/XYZ null 686 0]>>endobj
-337 0 obj<</Subtype/Link/Rect[108.0 552.0 315.8 565.0]/Border[0 0 0]/Dest[648 0 R/XYZ null 509 0]>>endobj
-338 0 obj<</Subtype/Link/Rect[108.0 538.8 514.3 551.8]/Border[0 0 0]/Dest[648 0 R/XYZ null 332 0]>>endobj
-339 0 obj<</Subtype/Link/Rect[108.0 525.6 259.4 538.6]/Border[0 0 0]/Dest[651 0 R/XYZ null 768 0]>>endobj
-340 0 obj<</Subtype/Link/Rect[108.0 512.4 236.0 525.4]/Border[0 0 0]/Dest[651 0 R/XYZ null 577 0]>>endobj
-341 0 obj<</Subtype/Link/Rect[108.0 499.2 186.5 512.2]/Border[0 0 0]/Dest[651 0 R/XYZ null 505 0]>>endobj
-342 0 obj<</Subtype/Link/Rect[108.0 486.0 267.2 499.0]/Border[0 0 0]/Dest[651 0 R/XYZ null 394 0]>>endobj
-343 0 obj<</Subtype/Link/Rect[108.0 472.8 295.6 485.8]/Border[0 0 0]/Dest[654 0 R/XYZ null 739 0]>>endobj
-344 0 obj<</Subtype/Link/Rect[108.0 459.6 177.7 472.6]/Border[0 0 0]/Dest[654 0 R/XYZ null 615 0]>>endobj
-345 0 obj<</Subtype/Link/Rect[108.0 446.4 232.3 459.4]/Border[0 0 0]/Dest[657 0 R/XYZ null 768 0]>>endobj
-346 0 obj<</Subtype/Link/Rect[108.0 433.2 232.6 446.2]/Border[0 0 0]/Dest[657 0 R/XYZ null 683 0]>>endobj
-347 0 obj<</Subtype/Link/Rect[72.0 406.8 348.8 419.8]/Border[0 0 0]/Dest[660 0 R/XYZ null 798 0]>>endobj
-348 0 obj<</Subtype/Link/Rect[108.0 393.6 161.5 406.6]/Border[0 0 0]/Dest[660 0 R/XYZ null 706 0]>>endobj
-349 0 obj<</Subtype/Link/Rect[108.0 380.4 327.7 393.4]/Border[0 0 0]/Dest[660 0 R/XYZ null 463 0]>>endobj
-350 0 obj<</Subtype/Link/Rect[108.0 367.2 177.1 380.2]/Border[0 0 0]/Dest[660 0 R/XYZ null 325 0]>>endobj
-351 0 obj<</Subtype/Link/Rect[108.0 354.0 203.6 367.0]/Border[0 0 0]/Dest[663 0 R/XYZ null 435 0]>>endobj
-352 0 obj<</Subtype/Link/Rect[108.0 340.8 195.1 353.8]/Border[0 0 0]/Dest[663 0 R/XYZ null 285 0]>>endobj
-353 0 obj<</Subtype/Link/Rect[108.0 327.6 215.2 340.6]/Border[0 0 0]/Dest[666 0 R/XYZ null 768 0]>>endobj
-354 0 obj<</Subtype/Link/Rect[108.0 314.4 382.4 327.4]/Border[0 0 0]/Dest[666 0 R/XYZ null 268 0]>>endobj
-355 0 obj<</Subtype/Link/Rect[108.0 301.2 255.6 314.2]/Border[0 0 0]/Dest[669 0 R/XYZ null 210 0]>>endobj
-356 0 obj<</Subtype/Link/Rect[108.0 288.0 224.1 301.0]/Border[0 0 0]/Dest[672 0 R/XYZ null 660 0]>>endobj
-357 0 obj<</Subtype/Link/Rect[108.0 274.8 187.8 287.8]/Border[0 0 0]/Dest[675 0 R/XYZ null 371 0]>>endobj
-358 0 obj<</Subtype/Link/Rect[108.0 261.6 194.5 274.6]/Border[0 0 0]/Dest[675 0 R/XYZ null 260 0]>>endobj
-359 0 obj<</Subtype/Link/Rect[108.0 248.4 200.6 261.4]/Border[0 0 0]/Dest[678 0 R/XYZ null 768 0]>>endobj
-360 0 obj<</Subtype/Link/Rect[108.0 235.2 526.0 248.2]/Border[0 0 0]/Dest[678 0 R/XYZ null 529 0]>>endobj
-361 0 obj<</Subtype/Link/Rect[108.0 222.0 500.6 235.0]/Border[0 0 0]/Dest[681 0 R/XYZ null 633 0]>>endobj
-362 0 obj<</Subtype/Link/Rect[108.0 208.8 353.3 221.8]/Border[0 0 0]/Dest[684 0 R/XYZ null 581 0]>>endobj
-363 0 obj<</Subtype/Link/Rect[108.0 195.6 419.0 208.6]/Border[0 0 0]/Dest[684 0 R/XYZ null 304 0]>>endobj
-364 0 obj<</Subtype/Link/Rect[108.0 182.4 332.5 195.4]/Border[0 0 0]/Dest[687 0 R/XYZ null 594 0]>>endobj
-365 0 obj<</Subtype/Link/Rect[108.0 169.2 181.6 182.2]/Border[0 0 0]/Dest[690 0 R/XYZ null 639 0]>>endobj
-366 0 obj<</Subtype/Link/Rect[72.0 142.8 463.4 155.8]/Border[0 0 0]/Dest[693 0 R/XYZ null 798 0]>>endobj
-367 0 obj<</Subtype/Link/Rect[108.0 129.6 202.4 142.6]/Border[0 0 0]/Dest[693 0 R/XYZ null 706 0]>>endobj
-368 0 obj<</Subtype/Link/Rect[108.0 116.4 244.9 129.4]/Border[0 0 0]/Dest[696 0 R/XYZ null 179 0]>>endobj
-369 0 obj<</Subtype/Link/Rect[108.0 103.2 270.3 116.2]/Border[0 0 0]/Dest[699 0 R/XYZ null 726 0]>>endobj
-370 0 obj<</Subtype/Link/Rect[72.0 76.8 402.3 89.8]/Border[0 0 0]/Dest[702 0 R/XYZ null 798 0]>>endobj
-371 0 obj<</Subtype/Link/Rect[108.0 63.6 179.2 76.6]/Border[0 0 0]/Dest[702 0 R/XYZ null 706 0]>>endobj
-372 0 obj[327 0 R
+317 0 obj<</S/URI/URI(winbindd.8.html)>>endobj
+318 0 obj<</Subtype/Link/Rect[309.0 227.4 363.4 240.4]/Border[0 0 0]/A 317 0 R>>endobj
+319 0 obj<</S/URI/URI(#WINBINDSEPARATOR)>>endobj
+320 0 obj<</Subtype/Link/Rect[100.0 156.4 191.8 167.4]/Border[0 0 0]/A 319 0 R>>endobj
+321 0 obj<</S/URI/URI(#WINBINDUID)>>endobj
+322 0 obj<</Subtype/Link/Rect[100.0 134.8 159.4 145.8]/Border[0 0 0]/A 321 0 R>>endobj
+323 0 obj<</S/URI/URI(#WINBINDGID)>>endobj
+324 0 obj<</Subtype/Link/Rect[100.0 113.2 159.4 124.2]/Border[0 0 0]/A 323 0 R>>endobj
+325 0 obj<</S/URI/URI(#WINBINDENUMUSERS)>>endobj
+326 0 obj<</Subtype/Link/Rect[100.0 70.0 197.2 81.0]/Border[0 0 0]/A 325 0 R>>endobj
+327 0 obj<</S/URI/URI(#WINBINDENUMGROUP)>>endobj
+328 0 obj<</Subtype/Link/Rect[100.0 59.2 202.6 70.2]/Border[0 0 0]/A 327 0 R>>endobj
+329 0 obj[318 0 R
+320 0 R
+322 0 R
+324 0 R
+326 0 R
328 0 R
-329 0 R
-330 0 R
-331 0 R
-332 0 R
+]endobj
+330 0 obj<</S/URI/URI(#TEMPLATEHOMEDIR)>>endobj
+331 0 obj<</Subtype/Link/Rect[100.0 711.2 186.4 722.2]/Border[0 0 0]/A 330 0 R>>endobj
+332 0 obj<</S/URI/URI(#TEMPLATESHELL)>>endobj
+333 0 obj<</Subtype/Link/Rect[100.0 700.4 175.6 711.4]/Border[0 0 0]/A 332 0 R>>endobj
+334 0 obj[331 0 R
333 0 R
-334 0 R
-335 0 R
-336 0 R
-337 0 R
+]endobj
+335 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
+336 0 obj<</Subtype/Link/Rect[331.1 607.0 550.0 620.0]/Border[0 0 0]/A 335 0 R>>endobj
+337 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
+338 0 obj<</Subtype/Link/Rect[72.0 241.4 319.2 254.4]/Border[0 0 0]/A 337 0 R>>endobj
+339 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
+340 0 obj<</Subtype/Link/Rect[346.1 241.4 544.2 254.4]/Border[0 0 0]/A 339 0 R>>endobj
+341 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
+342 0 obj<</Subtype/Link/Rect[175.9 117.8 366.2 130.8]/Border[0 0 0]/A 341 0 R>>endobj
+343 0 obj[336 0 R
338 0 R
-339 0 R
340 0 R
-341 0 R
342 0 R
-343 0 R
-344 0 R
-345 0 R
-346 0 R
-347 0 R
-348 0 R
-349 0 R
+]endobj
+344 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
+345 0 obj<</Subtype/Link/Rect[225.7 661.0 434.8 674.0]/Border[0 0 0]/A 344 0 R>>endobj
+346 0 obj[345 0 R
+]endobj
+347 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
+348 0 obj<</Subtype/Link/Rect[357.1 577.0 500.7 590.0]/Border[0 0 0]/A 347 0 R>>endobj
+349 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
+350 0 obj<</Subtype/Link/Rect[138.6 354.6 283.2 367.6]/Border[0 0 0]/A 349 0 R>>endobj
+351 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
+352 0 obj<</Subtype/Link/Rect[394.3 230.2 498.2 243.2]/Border[0 0 0]/A 351 0 R>>endobj
+353 0 obj[348 0 R
350 0 R
-351 0 R
352 0 R
-353 0 R
-354 0 R
-355 0 R
-356 0 R
-357 0 R
+]endobj
+354 0 obj<</S/URI/URI(x1242.htm)>>endobj
+355 0 obj<</Subtype/Link/Rect[201.6 408.2 258.1 421.2]/Border[0 0 0]/A 354 0 R>>endobj
+356 0 obj[355 0 R
+]endobj
+357 0 obj<</Subtype/Link/Rect[72.0 684.0 277.3 697.0]/Border[0 0 0]/Dest[693 0 R/XYZ null 798 0]>>endobj
+358 0 obj<</Subtype/Link/Rect[108.0 670.8 249.2 683.8]/Border[0 0 0]/Dest[693 0 R/XYZ null 730 0]>>endobj
+359 0 obj<</Subtype/Link/Rect[108.0 657.6 255.0 670.6]/Border[0 0 0]/Dest[693 0 R/XYZ null 593 0]>>endobj
+360 0 obj<</Subtype/Link/Rect[108.0 644.4 257.7 657.4]/Border[0 0 0]/Dest[693 0 R/XYZ null 178 0]>>endobj
+361 0 obj<</Subtype/Link/Rect[108.0 631.2 309.0 644.2]/Border[0 0 0]/Dest[696 0 R/XYZ null 739 0]>>endobj
+362 0 obj<</Subtype/Link/Rect[108.0 618.0 316.7 631.0]/Border[0 0 0]/Dest[696 0 R/XYZ null 379 0]>>endobj
+363 0 obj<</Subtype/Link/Rect[108.0 604.8 284.9 617.8]/Border[0 0 0]/Dest[696 0 R/XYZ null 268 0]>>endobj
+364 0 obj<</Subtype/Link/Rect[108.0 591.6 280.0 604.6]/Border[0 0 0]/Dest[699 0 R/XYZ null 768 0]>>endobj
+365 0 obj<</Subtype/Link/Rect[108.0 578.4 328.6 591.4]/Border[0 0 0]/Dest[699 0 R/XYZ null 266 0]>>endobj
+366 0 obj<</Subtype/Link/Rect[108.0 565.2 364.9 578.2]/Border[0 0 0]/Dest[702 0 R/XYZ null 686 0]>>endobj
+367 0 obj<</Subtype/Link/Rect[108.0 552.0 315.8 565.0]/Border[0 0 0]/Dest[702 0 R/XYZ null 509 0]>>endobj
+368 0 obj<</Subtype/Link/Rect[108.0 538.8 514.3 551.8]/Border[0 0 0]/Dest[702 0 R/XYZ null 332 0]>>endobj
+369 0 obj<</Subtype/Link/Rect[108.0 525.6 259.4 538.6]/Border[0 0 0]/Dest[705 0 R/XYZ null 768 0]>>endobj
+370 0 obj<</Subtype/Link/Rect[108.0 512.4 236.0 525.4]/Border[0 0 0]/Dest[705 0 R/XYZ null 577 0]>>endobj
+371 0 obj<</Subtype/Link/Rect[108.0 499.2 186.5 512.2]/Border[0 0 0]/Dest[705 0 R/XYZ null 505 0]>>endobj
+372 0 obj<</Subtype/Link/Rect[108.0 486.0 267.2 499.0]/Border[0 0 0]/Dest[705 0 R/XYZ null 407 0]>>endobj
+373 0 obj<</Subtype/Link/Rect[108.0 472.8 295.6 485.8]/Border[0 0 0]/Dest[708 0 R/XYZ null 768 0]>>endobj
+374 0 obj<</Subtype/Link/Rect[108.0 459.6 177.7 472.6]/Border[0 0 0]/Dest[708 0 R/XYZ null 643 0]>>endobj
+375 0 obj<</Subtype/Link/Rect[108.0 446.4 232.3 459.4]/Border[0 0 0]/Dest[708 0 R/XYZ null 175 0]>>endobj
+376 0 obj<</Subtype/Link/Rect[108.0 433.2 232.6 446.2]/Border[0 0 0]/Dest[711 0 R/XYZ null 768 0]>>endobj
+377 0 obj<</Subtype/Link/Rect[72.0 406.8 348.8 419.8]/Border[0 0 0]/Dest[714 0 R/XYZ null 798 0]>>endobj
+378 0 obj<</Subtype/Link/Rect[108.0 393.6 161.5 406.6]/Border[0 0 0]/Dest[714 0 R/XYZ null 706 0]>>endobj
+379 0 obj<</Subtype/Link/Rect[108.0 380.4 327.7 393.4]/Border[0 0 0]/Dest[714 0 R/XYZ null 463 0]>>endobj
+380 0 obj<</Subtype/Link/Rect[108.0 367.2 177.1 380.2]/Border[0 0 0]/Dest[714 0 R/XYZ null 325 0]>>endobj
+381 0 obj<</Subtype/Link/Rect[108.0 354.0 203.6 367.0]/Border[0 0 0]/Dest[717 0 R/XYZ null 435 0]>>endobj
+382 0 obj<</Subtype/Link/Rect[108.0 340.8 195.1 353.8]/Border[0 0 0]/Dest[717 0 R/XYZ null 285 0]>>endobj
+383 0 obj<</Subtype/Link/Rect[108.0 327.6 215.2 340.6]/Border[0 0 0]/Dest[720 0 R/XYZ null 768 0]>>endobj
+384 0 obj<</Subtype/Link/Rect[108.0 314.4 382.4 327.4]/Border[0 0 0]/Dest[720 0 R/XYZ null 268 0]>>endobj
+385 0 obj<</Subtype/Link/Rect[108.0 301.2 255.6 314.2]/Border[0 0 0]/Dest[723 0 R/XYZ null 210 0]>>endobj
+386 0 obj<</Subtype/Link/Rect[108.0 288.0 224.1 301.0]/Border[0 0 0]/Dest[726 0 R/XYZ null 660 0]>>endobj
+387 0 obj<</Subtype/Link/Rect[108.0 274.8 187.8 287.8]/Border[0 0 0]/Dest[729 0 R/XYZ null 371 0]>>endobj
+388 0 obj<</Subtype/Link/Rect[108.0 261.6 194.5 274.6]/Border[0 0 0]/Dest[729 0 R/XYZ null 260 0]>>endobj
+389 0 obj<</Subtype/Link/Rect[108.0 248.4 200.6 261.4]/Border[0 0 0]/Dest[732 0 R/XYZ null 768 0]>>endobj
+390 0 obj<</Subtype/Link/Rect[108.0 235.2 526.0 248.2]/Border[0 0 0]/Dest[732 0 R/XYZ null 529 0]>>endobj
+391 0 obj<</Subtype/Link/Rect[108.0 222.0 500.6 235.0]/Border[0 0 0]/Dest[735 0 R/XYZ null 633 0]>>endobj
+392 0 obj<</Subtype/Link/Rect[108.0 208.8 353.3 221.8]/Border[0 0 0]/Dest[738 0 R/XYZ null 581 0]>>endobj
+393 0 obj<</Subtype/Link/Rect[108.0 195.6 419.0 208.6]/Border[0 0 0]/Dest[738 0 R/XYZ null 304 0]>>endobj
+394 0 obj<</Subtype/Link/Rect[108.0 182.4 332.5 195.4]/Border[0 0 0]/Dest[741 0 R/XYZ null 594 0]>>endobj
+395 0 obj<</Subtype/Link/Rect[108.0 169.2 181.6 182.2]/Border[0 0 0]/Dest[744 0 R/XYZ null 639 0]>>endobj
+396 0 obj<</Subtype/Link/Rect[72.0 142.8 463.4 155.8]/Border[0 0 0]/Dest[747 0 R/XYZ null 798 0]>>endobj
+397 0 obj<</Subtype/Link/Rect[108.0 129.6 202.4 142.6]/Border[0 0 0]/Dest[747 0 R/XYZ null 706 0]>>endobj
+398 0 obj<</Subtype/Link/Rect[108.0 116.4 244.9 129.4]/Border[0 0 0]/Dest[750 0 R/XYZ null 179 0]>>endobj
+399 0 obj<</Subtype/Link/Rect[108.0 103.2 270.3 116.2]/Border[0 0 0]/Dest[753 0 R/XYZ null 726 0]>>endobj
+400 0 obj<</Subtype/Link/Rect[72.0 76.8 402.3 89.8]/Border[0 0 0]/Dest[756 0 R/XYZ null 798 0]>>endobj
+401 0 obj<</Subtype/Link/Rect[108.0 63.6 179.2 76.6]/Border[0 0 0]/Dest[756 0 R/XYZ null 706 0]>>endobj
+402 0 obj[357 0 R
358 0 R
359 0 R
360 0 R
@@ -553,52 +566,8 @@
369 0 R
370 0 R
371 0 R
-]endobj
-373 0 obj<</Subtype/Link/Rect[108.0 684.0 161.2 697.0]/Border[0 0 0]/Dest[705 0 R/XYZ null 673 0]>>endobj
-374 0 obj<</Subtype/Link/Rect[72.0 657.6 412.7 670.6]/Border[0 0 0]/Dest[708 0 R/XYZ null 798 0]>>endobj
-375 0 obj<</Subtype/Link/Rect[108.0 644.4 447.4 657.4]/Border[0 0 0]/Dest[708 0 R/XYZ null 706 0]>>endobj
-376 0 obj<</Subtype/Link/Rect[108.0 631.2 319.1 644.2]/Border[0 0 0]/Dest[708 0 R/XYZ null 525 0]>>endobj
-377 0 obj<</Subtype/Link/Rect[108.0 618.0 231.1 631.0]/Border[0 0 0]/Dest[708 0 R/XYZ null 348 0]>>endobj
-378 0 obj<</Subtype/Link/Rect[108.0 604.8 292.2 617.8]/Border[0 0 0]/Dest[711 0 R/XYZ null 686 0]>>endobj
-379 0 obj<</Subtype/Link/Rect[108.0 591.6 208.5 604.6]/Border[0 0 0]/Dest[711 0 R/XYZ null 443 0]>>endobj
-380 0 obj<</Subtype/Link/Rect[108.0 578.4 233.6 591.4]/Border[0 0 0]/Dest[711 0 R/XYZ null 187 0]>>endobj
-381 0 obj<</Subtype/Link/Rect[108.0 565.2 301.4 578.2]/Border[0 0 0]/Dest[714 0 R/XYZ null 673 0]>>endobj
-382 0 obj<</Subtype/Link/Rect[108.0 552.0 394.8 565.0]/Border[0 0 0]/Dest[714 0 R/XYZ null 232 0]>>endobj
-383 0 obj<</Subtype/Link/Rect[108.0 538.8 386.9 551.8]/Border[0 0 0]/Dest[720 0 R/XYZ null 594 0]>>endobj
-384 0 obj<</Subtype/Link/Rect[72.0 512.4 277.1 525.4]/Border[0 0 0]/Dest[723 0 R/XYZ null 798 0]>>endobj
-385 0 obj<</Subtype/Link/Rect[108.0 499.2 181.6 512.2]/Border[0 0 0]/Dest[723 0 R/XYZ null 730 0]>>endobj
-386 0 obj<</Subtype/Link/Rect[108.0 486.0 189.0 499.0]/Border[0 0 0]/Dest[723 0 R/XYZ null 302 0]>>endobj
-387 0 obj<</Subtype/Link/Rect[108.0 472.8 209.7 485.8]/Border[0 0 0]/Dest[726 0 R/XYZ null 693 0]>>endobj
-388 0 obj<</Subtype/Link/Rect[108.0 459.6 294.4 472.6]/Border[0 0 0]/Dest[729 0 R/XYZ null 450 0]>>endobj
-389 0 obj<</Subtype/Link/Rect[108.0 446.4 287.3 459.4]/Border[0 0 0]/Dest[732 0 R/XYZ null 686 0]>>endobj
-390 0 obj<</Subtype/Link/Rect[108.0 433.2 350.9 446.2]/Border[0 0 0]/Dest[732 0 R/XYZ null 302 0]>>endobj
-391 0 obj<</Subtype/Link/Rect[108.0 420.0 242.1 433.0]/Border[0 0 0]/Dest[735 0 R/XYZ null 686 0]>>endobj
-392 0 obj<</Subtype/Link/Rect[108.0 406.8 220.1 419.8]/Border[0 0 0]/Dest[735 0 R/XYZ null 496 0]>>endobj
-393 0 obj<</Subtype/Link/Rect[108.0 393.6 214.3 406.6]/Border[0 0 0]/Dest[735 0 R/XYZ null 385 0]>>endobj
-394 0 obj<</Subtype/Link/Rect[108.0 380.4 281.2 393.4]/Border[0 0 0]/Dest[735 0 R/XYZ null 247 0]>>endobj
-395 0 obj<</Subtype/Link/Rect[108.0 367.2 222.3 380.2]/Border[0 0 0]/Dest[735 0 R/XYZ null 149 0]>>endobj
-396 0 obj<</Subtype/Link/Rect[108.0 354.0 234.5 367.0]/Border[0 0 0]/Dest[738 0 R/XYZ null 713 0]>>endobj
-397 0 obj<</Subtype/Link/Rect[108.0 340.8 300.2 353.8]/Border[0 0 0]/Dest[741 0 R/XYZ null 768 0]>>endobj
-398 0 obj<</Subtype/Link/Rect[72.0 314.4 272.9 327.4]/Border[0 0 0]/Dest[744 0 R/XYZ null 798 0]>>endobj
-399 0 obj<</Subtype/Link/Rect[108.0 301.2 299.9 314.2]/Border[0 0 0]/Dest[744 0 R/XYZ null 730 0]>>endobj
-400 0 obj<</Subtype/Link/Rect[108.0 288.0 288.0 301.0]/Border[0 0 0]/Dest[747 0 R/XYZ null 383 0]>>endobj
-401 0 obj<</Subtype/Link/Rect[108.0 274.8 307.9 287.8]/Border[0 0 0]/Dest[747 0 R/XYZ null 166 0]>>endobj
-402 0 obj<</Subtype/Link/Rect[72.0 248.4 416.3 261.4]/Border[0 0 0]/Dest[753 0 R/XYZ null 798 0]>>endobj
-403 0 obj<</Subtype/Link/Rect[108.0 235.2 219.2 248.2]/Border[0 0 0]/Dest[753 0 R/XYZ null 706 0]>>endobj
-404 0 obj<</Subtype/Link/Rect[108.0 222.0 181.0 235.0]/Border[0 0 0]/Dest[753 0 R/XYZ null 608 0]>>endobj
-405 0 obj<</Subtype/Link/Rect[108.0 208.8 316.1 221.8]/Border[0 0 0]/Dest[756 0 R/XYZ null 726 0]>>endobj
-406 0 obj<</Subtype/Link/Rect[108.0 195.6 430.0 208.6]/Border[0 0 0]/Dest[759 0 R/XYZ null 607 0]>>endobj
-407 0 obj<</Subtype/Link/Rect[108.0 182.4 333.2 195.4]/Border[0 0 0]/Dest[759 0 R/XYZ null 232 0]>>endobj
-408 0 obj<</Subtype/Link/Rect[108.0 169.2 362.5 182.2]/Border[0 0 0]/Dest[762 0 R/XYZ null 359 0]>>endobj
-409 0 obj<</Subtype/Link/Rect[108.0 156.0 279.4 169.0]/Border[0 0 0]/Dest[765 0 R/XYZ null 768 0]>>endobj
-410 0 obj<</Subtype/Link/Rect[108.0 142.8 261.4 155.8]/Border[0 0 0]/Dest[765 0 R/XYZ null 392 0]>>endobj
-411 0 obj<</Subtype/Link/Rect[108.0 129.6 252.8 142.6]/Border[0 0 0]/Dest[771 0 R/XYZ null 739 0]>>endobj
-412 0 obj<</Subtype/Link/Rect[108.0 116.4 243.6 129.4]/Border[0 0 0]/Dest[774 0 R/XYZ null 686 0]>>endobj
-413 0 obj<</Subtype/Link/Rect[108.0 103.2 292.9 116.2]/Border[0 0 0]/Dest[780 0 R/XYZ null 303 0]>>endobj
-414 0 obj<</Subtype/Link/Rect[108.0 90.0 332.0 103.0]/Border[0 0 0]/Dest[783 0 R/XYZ null 277 0]>>endobj
-415 0 obj<</Subtype/Link/Rect[108.0 76.8 406.2 89.8]/Border[0 0 0]/Dest[786 0 R/XYZ null 482 0]>>endobj
-416 0 obj<</Subtype/Link/Rect[108.0 63.6 431.0 76.6]/Border[0 0 0]/Dest[798 0 R/XYZ null 274 0]>>endobj
-417 0 obj[373 0 R
+372 0 R
+373 0 R
374 0 R
375 0 R
376 0 R
@@ -627,8 +596,51 @@
399 0 R
400 0 R
401 0 R
-402 0 R
-403 0 R
+]endobj
+403 0 obj<</Subtype/Link/Rect[108.0 684.0 161.2 697.0]/Border[0 0 0]/Dest[759 0 R/XYZ null 673 0]>>endobj
+404 0 obj<</Subtype/Link/Rect[72.0 657.6 412.7 670.6]/Border[0 0 0]/Dest[762 0 R/XYZ null 798 0]>>endobj
+405 0 obj<</Subtype/Link/Rect[108.0 644.4 447.4 657.4]/Border[0 0 0]/Dest[762 0 R/XYZ null 706 0]>>endobj
+406 0 obj<</Subtype/Link/Rect[108.0 631.2 319.1 644.2]/Border[0 0 0]/Dest[762 0 R/XYZ null 525 0]>>endobj
+407 0 obj<</Subtype/Link/Rect[108.0 618.0 231.1 631.0]/Border[0 0 0]/Dest[762 0 R/XYZ null 348 0]>>endobj
+408 0 obj<</Subtype/Link/Rect[108.0 604.8 292.2 617.8]/Border[0 0 0]/Dest[765 0 R/XYZ null 686 0]>>endobj
+409 0 obj<</Subtype/Link/Rect[108.0 591.6 208.5 604.6]/Border[0 0 0]/Dest[765 0 R/XYZ null 443 0]>>endobj
+410 0 obj<</Subtype/Link/Rect[108.0 578.4 233.6 591.4]/Border[0 0 0]/Dest[765 0 R/XYZ null 187 0]>>endobj
+411 0 obj<</Subtype/Link/Rect[108.0 565.2 301.4 578.2]/Border[0 0 0]/Dest[768 0 R/XYZ null 673 0]>>endobj
+412 0 obj<</Subtype/Link/Rect[108.0 552.0 394.8 565.0]/Border[0 0 0]/Dest[768 0 R/XYZ null 232 0]>>endobj
+413 0 obj<</Subtype/Link/Rect[108.0 538.8 386.9 551.8]/Border[0 0 0]/Dest[774 0 R/XYZ null 594 0]>>endobj
+414 0 obj<</Subtype/Link/Rect[72.0 512.4 277.1 525.4]/Border[0 0 0]/Dest[777 0 R/XYZ null 798 0]>>endobj
+415 0 obj<</Subtype/Link/Rect[108.0 499.2 181.6 512.2]/Border[0 0 0]/Dest[777 0 R/XYZ null 730 0]>>endobj
+416 0 obj<</Subtype/Link/Rect[108.0 486.0 189.0 499.0]/Border[0 0 0]/Dest[777 0 R/XYZ null 302 0]>>endobj
+417 0 obj<</Subtype/Link/Rect[108.0 472.8 209.7 485.8]/Border[0 0 0]/Dest[780 0 R/XYZ null 693 0]>>endobj
+418 0 obj<</Subtype/Link/Rect[108.0 459.6 294.4 472.6]/Border[0 0 0]/Dest[783 0 R/XYZ null 450 0]>>endobj
+419 0 obj<</Subtype/Link/Rect[108.0 446.4 275.7 459.4]/Border[0 0 0]/Dest[786 0 R/XYZ null 686 0]>>endobj
+420 0 obj<</Subtype/Link/Rect[108.0 433.2 287.3 446.2]/Border[0 0 0]/Dest[786 0 R/XYZ null 403 0]>>endobj
+421 0 obj<</Subtype/Link/Rect[108.0 420.0 350.9 433.0]/Border[0 0 0]/Dest[789 0 R/XYZ null 684 0]>>endobj
+422 0 obj<</Subtype/Link/Rect[108.0 406.8 242.1 419.8]/Border[0 0 0]/Dest[789 0 R/XYZ null 401 0]>>endobj
+423 0 obj<</Subtype/Link/Rect[108.0 393.6 220.1 406.6]/Border[0 0 0]/Dest[789 0 R/XYZ null 211 0]>>endobj
+424 0 obj<</Subtype/Link/Rect[108.0 380.4 214.3 393.4]/Border[0 0 0]/Dest[792 0 R/XYZ null 713 0]>>endobj
+425 0 obj<</Subtype/Link/Rect[108.0 367.2 281.2 380.2]/Border[0 0 0]/Dest[792 0 R/XYZ null 575 0]>>endobj
+426 0 obj<</Subtype/Link/Rect[108.0 354.0 222.3 367.0]/Border[0 0 0]/Dest[792 0 R/XYZ null 477 0]>>endobj
+427 0 obj<</Subtype/Link/Rect[108.0 340.8 234.5 353.8]/Border[0 0 0]/Dest[792 0 R/XYZ null 366 0]>>endobj
+428 0 obj<</Subtype/Link/Rect[108.0 327.6 300.2 340.6]/Border[0 0 0]/Dest[795 0 R/XYZ null 459 0]>>endobj
+429 0 obj<</Subtype/Link/Rect[108.0 314.4 383.0 327.4]/Border[0 0 0]/Dest[798 0 R/XYZ null 707 0]>>endobj
+430 0 obj<</Subtype/Link/Rect[72.0 288.0 290.8 301.0]/Border[0 0 0]/Dest[801 0 R/XYZ null 798 0]>>endobj
+431 0 obj<</Subtype/Link/Rect[108.0 274.8 284.0 287.8]/Border[0 0 0]/Dest[801 0 R/XYZ null 730 0]>>endobj
+432 0 obj<</Subtype/Link/Rect[108.0 261.6 270.3 274.6]/Border[0 0 0]/Dest[801 0 R/XYZ null 632 0]>>endobj
+433 0 obj<</Subtype/Link/Rect[108.0 248.4 537.9 261.4]/Border[0 0 0]/Dest[801 0 R/XYZ null 277 0]>>endobj
+434 0 obj<</Subtype/Link/Rect[108.0 235.2 528.0 248.2]/Border[0 0 0]/Dest[804 0 R/XYZ null 768 0]>>endobj
+435 0 obj<</Subtype/Link/Rect[108.0 222.0 316.8 235.0]/Border[0 0 0]/Dest[804 0 R/XYZ null 768 0]>>endobj
+436 0 obj<</Subtype/Link/Rect[108.0 208.8 355.2 221.8]/Border[0 0 0]/Dest[804 0 R/XYZ null 204 0]>>endobj
+437 0 obj<</Subtype/Link/Rect[108.0 195.6 293.2 208.6]/Border[0 0 0]/Dest[807 0 R/XYZ null 633 0]>>endobj
+438 0 obj<</Subtype/Link/Rect[108.0 182.4 270.6 195.4]/Border[0 0 0]/Dest[810 0 R/XYZ null 768 0]>>endobj
+439 0 obj<</Subtype/Link/Rect[108.0 169.2 189.9 182.2]/Border[0 0 0]/Dest[810 0 R/XYZ null 234 0]>>endobj
+440 0 obj<</Subtype/Link/Rect[72.0 142.8 272.9 155.8]/Border[0 0 0]/Dest[819 0 R/XYZ null 798 0]>>endobj
+441 0 obj<</Subtype/Link/Rect[108.0 129.6 299.9 142.6]/Border[0 0 0]/Dest[819 0 R/XYZ null 730 0]>>endobj
+442 0 obj<</Subtype/Link/Rect[108.0 116.4 288.0 129.4]/Border[0 0 0]/Dest[822 0 R/XYZ null 383 0]>>endobj
+443 0 obj<</Subtype/Link/Rect[108.0 103.2 307.9 116.2]/Border[0 0 0]/Dest[822 0 R/XYZ null 166 0]>>endobj
+444 0 obj<</Subtype/Link/Rect[72.0 76.8 416.3 89.8]/Border[0 0 0]/Dest[828 0 R/XYZ null 798 0]>>endobj
+445 0 obj<</Subtype/Link/Rect[108.0 63.6 219.2 76.6]/Border[0 0 0]/Dest[828 0 R/XYZ null 706 0]>>endobj
+446 0 obj[403 0 R
404 0 R
405 0 R
406 0 R
@@ -642,53 +654,8 @@
414 0 R
415 0 R
416 0 R
-]endobj
-418 0 obj<</Subtype/Link/Rect[72.0 684.0 512.6 697.0]/Border[0 0 0]/Dest[807 0 R/XYZ null 798 0]>>endobj
-419 0 obj<</Subtype/Link/Rect[108.0 670.8 219.2 683.8]/Border[0 0 0]/Dest[807 0 R/XYZ null 706 0]>>endobj
-420 0 obj<</Subtype/Link/Rect[108.0 657.6 181.0 670.6]/Border[0 0 0]/Dest[807 0 R/XYZ null 621 0]>>endobj
-421 0 obj<</Subtype/Link/Rect[108.0 644.4 359.1 657.4]/Border[0 0 0]/Dest[807 0 R/XYZ null 239 0]>>endobj
-422 0 obj<</Subtype/Link/Rect[108.0 631.2 364.3 644.2]/Border[0 0 0]/Dest[810 0 R/XYZ null 768 0]>>endobj
-423 0 obj<</Subtype/Link/Rect[108.0 618.0 251.0 631.0]/Border[0 0 0]/Dest[810 0 R/XYZ null 630 0]>>endobj
-424 0 obj<</Subtype/Link/Rect[108.0 604.8 325.8 617.8]/Border[0 0 0]/Dest[810 0 R/XYZ null 532 0]>>endobj
-425 0 obj<</Subtype/Link/Rect[108.0 591.6 268.1 604.6]/Border[0 0 0]/Dest[810 0 R/XYZ null 381 0]>>endobj
-426 0 obj<</Subtype/Link/Rect[108.0 578.4 309.6 591.4]/Border[0 0 0]/Dest[813 0 R/XYZ null 650 0]>>endobj
-427 0 obj<</Subtype/Link/Rect[72.0 552.0 484.2 565.0]/Border[0 0 0]/Dest[816 0 R/XYZ null 798 0]>>endobj
-428 0 obj<</Subtype/Link/Rect[108.0 538.8 168.2 551.8]/Border[0 0 0]/Dest[816 0 R/XYZ null 706 0]>>endobj
-429 0 obj<</Subtype/Link/Rect[108.0 525.6 187.1 538.6]/Border[0 0 0]/Dest[816 0 R/XYZ null 437 0]>>endobj
-430 0 obj<</Subtype/Link/Rect[108.0 512.4 245.2 525.4]/Border[0 0 0]/Dest[819 0 R/XYZ null 581 0]>>endobj
-431 0 obj<</Subtype/Link/Rect[108.0 499.2 384.2 512.2]/Border[0 0 0]/Dest[819 0 R/XYZ null 469 0]>>endobj
-432 0 obj<</Subtype/Link/Rect[108.0 486.0 273.0 499.0]/Border[0 0 0]/Dest[822 0 R/XYZ null 739 0]>>endobj
-433 0 obj<</Subtype/Link/Rect[108.0 472.8 255.6 485.8]/Border[0 0 0]/Dest[822 0 R/XYZ null 709 0]>>endobj
-434 0 obj<</Subtype/Link/Rect[108.0 459.6 227.5 472.6]/Border[0 0 0]/Dest[825 0 R/XYZ null 768 0]>>endobj
-435 0 obj<</Subtype/Link/Rect[108.0 446.4 287.0 459.4]/Border[0 0 0]/Dest[825 0 R/XYZ null 180 0]>>endobj
-436 0 obj<</Subtype/Link/Rect[108.0 433.2 256.2 446.2]/Border[0 0 0]/Dest[828 0 R/XYZ null 633 0]>>endobj
-437 0 obj<</Subtype/Link/Rect[108.0 420.0 330.7 433.0]/Border[0 0 0]/Dest[828 0 R/XYZ null 240 0]>>endobj
-438 0 obj<</Subtype/Link/Rect[108.0 406.8 324.3 419.8]/Border[0 0 0]/Dest[831 0 R/XYZ null 211 0]>>endobj
-439 0 obj<</Subtype/Link/Rect[108.0 393.6 185.9 406.6]/Border[0 0 0]/Dest[834 0 R/XYZ null 362 0]>>endobj
-440 0 obj<</Subtype/Link/Rect[72.0 367.2 431.7 380.2]/Border[0 0 0]/Dest[837 0 R/XYZ null 798 0]>>endobj
-441 0 obj<</Subtype/Link/Rect[108.0 354.0 170.0 367.0]/Border[0 0 0]/Dest[837 0 R/XYZ null 706 0]>>endobj
-442 0 obj<</Subtype/Link/Rect[108.0 340.8 187.1 353.8]/Border[0 0 0]/Dest[837 0 R/XYZ null 569 0]>>endobj
-443 0 obj<</Subtype/Link/Rect[108.0 327.6 239.1 340.6]/Border[0 0 0]/Dest[837 0 R/XYZ null 246 0]>>endobj
-444 0 obj<</Subtype/Link/Rect[108.0 314.4 193.8 327.4]/Border[0 0 0]/Dest[840 0 R/XYZ null 581 0]>>endobj
-445 0 obj<</Subtype/Link/Rect[108.0 301.2 227.5 314.2]/Border[0 0 0]/Dest[840 0 R/XYZ null 417 0]>>endobj
-446 0 obj<</Subtype/Link/Rect[108.0 288.0 294.1 301.0]/Border[0 0 0]/Dest[840 0 R/XYZ null 292 0]>>endobj
-447 0 obj<</Subtype/Link/Rect[108.0 274.8 236.3 287.8]/Border[0 0 0]/Dest[843 0 R/XYZ null 768 0]>>endobj
-448 0 obj<</Subtype/Link/Rect[108.0 261.6 294.4 274.6]/Border[0 0 0]/Dest[843 0 R/XYZ null 313 0]>>endobj
-449 0 obj<</Subtype/Link/Rect[108.0 248.4 274.8 261.4]/Border[0 0 0]/Dest[846 0 R/XYZ null 673 0]>>endobj
-450 0 obj<</Subtype/Link/Rect[108.0 235.2 208.5 248.2]/Border[0 0 0]/Dest[846 0 R/XYZ null 483 0]>>endobj
-451 0 obj<</Subtype/Link/Rect[108.0 222.0 265.4 235.0]/Border[0 0 0]/Dest[846 0 R/XYZ null 332 0]>>endobj
-452 0 obj<</Subtype/Link/Rect[108.0 208.8 195.4 221.8]/Border[0 0 0]/Dest[846 0 R/XYZ null 181 0]>>endobj
-453 0 obj<</Subtype/Link/Rect[108.0 195.6 202.1 208.6]/Border[0 0 0]/Dest[849 0 R/XYZ null 541 0]>>endobj
-454 0 obj<</Subtype/Link/Rect[108.0 182.4 226.6 195.4]/Border[0 0 0]/Dest[849 0 R/XYZ null 258 0]>>endobj
-455 0 obj<</Subtype/Link/Rect[108.0 169.2 183.5 182.2]/Border[0 0 0]/Dest[864 0 R/XYZ null 278 0]>>endobj
-456 0 obj<</Subtype/Link/Rect[108.0 156.0 182.9 169.0]/Border[0 0 0]/Dest[867 0 R/XYZ null 726 0]>>endobj
-457 0 obj<</Subtype/Link/Rect[72.0 129.6 228.8 142.6]/Border[0 0 0]/Dest[870 0 R/XYZ null 798 0]>>endobj
-458 0 obj<</Subtype/Link/Rect[108.0 116.4 159.0 129.4]/Border[0 0 0]/Dest[870 0 R/XYZ null 730 0]>>endobj
-459 0 obj<</Subtype/Link/Rect[108.0 103.2 499.0 116.2]/Border[0 0 0]/Dest[870 0 R/XYZ null 700 0]>>endobj
-460 0 obj<</Subtype/Link/Rect[108.0 90.0 504.2 103.0]/Border[0 0 0]/Dest[870 0 R/XYZ null 348 0]>>endobj
-461 0 obj<</Subtype/Link/Rect[108.0 76.8 455.7 89.8]/Border[0 0 0]/Dest[873 0 R/XYZ null 768 0]>>endobj
-462 0 obj<</Subtype/Link/Rect[108.0 63.6 425.4 76.6]/Border[0 0 0]/Dest[873 0 R/XYZ null 639 0]>>endobj
-463 0 obj[418 0 R
+417 0 R
+418 0 R
419 0 R
420 0 R
421 0 R
@@ -716,8 +683,53 @@
443 0 R
444 0 R
445 0 R
-446 0 R
-447 0 R
+]endobj
+447 0 obj<</Subtype/Link/Rect[108.0 684.0 181.0 697.0]/Border[0 0 0]/Dest[828 0 R/XYZ null 608 0]>>endobj
+448 0 obj<</Subtype/Link/Rect[108.0 670.8 316.1 683.8]/Border[0 0 0]/Dest[831 0 R/XYZ null 726 0]>>endobj
+449 0 obj<</Subtype/Link/Rect[108.0 657.6 430.0 670.6]/Border[0 0 0]/Dest[834 0 R/XYZ null 607 0]>>endobj
+450 0 obj<</Subtype/Link/Rect[108.0 644.4 333.2 657.4]/Border[0 0 0]/Dest[834 0 R/XYZ null 232 0]>>endobj
+451 0 obj<</Subtype/Link/Rect[108.0 631.2 362.5 644.2]/Border[0 0 0]/Dest[837 0 R/XYZ null 359 0]>>endobj
+452 0 obj<</Subtype/Link/Rect[108.0 618.0 279.4 631.0]/Border[0 0 0]/Dest[840 0 R/XYZ null 768 0]>>endobj
+453 0 obj<</Subtype/Link/Rect[108.0 604.8 261.4 617.8]/Border[0 0 0]/Dest[840 0 R/XYZ null 392 0]>>endobj
+454 0 obj<</Subtype/Link/Rect[108.0 591.6 252.8 604.6]/Border[0 0 0]/Dest[846 0 R/XYZ null 739 0]>>endobj
+455 0 obj<</Subtype/Link/Rect[108.0 578.4 243.6 591.4]/Border[0 0 0]/Dest[849 0 R/XYZ null 686 0]>>endobj
+456 0 obj<</Subtype/Link/Rect[108.0 565.2 292.9 578.2]/Border[0 0 0]/Dest[855 0 R/XYZ null 303 0]>>endobj
+457 0 obj<</Subtype/Link/Rect[108.0 552.0 332.0 565.0]/Border[0 0 0]/Dest[858 0 R/XYZ null 277 0]>>endobj
+458 0 obj<</Subtype/Link/Rect[108.0 538.8 406.2 551.8]/Border[0 0 0]/Dest[861 0 R/XYZ null 482 0]>>endobj
+459 0 obj<</Subtype/Link/Rect[108.0 525.6 431.0 538.6]/Border[0 0 0]/Dest[873 0 R/XYZ null 274 0]>>endobj
+460 0 obj<</Subtype/Link/Rect[72.0 499.2 518.1 512.2]/Border[0 0 0]/Dest[882 0 R/XYZ null 798 0]>>endobj
+461 0 obj<</Subtype/Link/Rect[108.0 486.0 224.7 499.0]/Border[0 0 0]/Dest[882 0 R/XYZ null 706 0]>>endobj
+462 0 obj<</Subtype/Link/Rect[108.0 472.8 186.5 485.8]/Border[0 0 0]/Dest[882 0 R/XYZ null 621 0]>>endobj
+463 0 obj<</Subtype/Link/Rect[108.0 459.6 364.6 472.6]/Border[0 0 0]/Dest[882 0 R/XYZ null 196 0]>>endobj
+464 0 obj<</Subtype/Link/Rect[108.0 446.4 369.8 459.4]/Border[0 0 0]/Dest[885 0 R/XYZ null 726 0]>>endobj
+465 0 obj<</Subtype/Link/Rect[108.0 433.2 256.5 446.2]/Border[0 0 0]/Dest[885 0 R/XYZ null 588 0]>>endobj
+466 0 obj<</Subtype/Link/Rect[108.0 420.0 331.3 433.0]/Border[0 0 0]/Dest[885 0 R/XYZ null 490 0]>>endobj
+467 0 obj<</Subtype/Link/Rect[108.0 406.8 273.6 419.8]/Border[0 0 0]/Dest[885 0 R/XYZ null 339 0]>>endobj
+468 0 obj<</Subtype/Link/Rect[108.0 393.6 315.1 406.6]/Border[0 0 0]/Dest[888 0 R/XYZ null 411 0]>>endobj
+469 0 obj<</Subtype/Link/Rect[72.0 367.2 484.2 380.2]/Border[0 0 0]/Dest[891 0 R/XYZ null 798 0]>>endobj
+470 0 obj<</Subtype/Link/Rect[108.0 354.0 168.2 367.0]/Border[0 0 0]/Dest[891 0 R/XYZ null 706 0]>>endobj
+471 0 obj<</Subtype/Link/Rect[108.0 340.8 187.1 353.8]/Border[0 0 0]/Dest[891 0 R/XYZ null 423 0]>>endobj
+472 0 obj<</Subtype/Link/Rect[108.0 327.6 245.2 340.6]/Border[0 0 0]/Dest[894 0 R/XYZ null 567 0]>>endobj
+473 0 obj<</Subtype/Link/Rect[108.0 314.4 384.2 327.4]/Border[0 0 0]/Dest[894 0 R/XYZ null 456 0]>>endobj
+474 0 obj<</Subtype/Link/Rect[108.0 301.2 273.0 314.2]/Border[0 0 0]/Dest[897 0 R/XYZ null 581 0]>>endobj
+475 0 obj<</Subtype/Link/Rect[108.0 288.0 255.6 301.0]/Border[0 0 0]/Dest[897 0 R/XYZ null 551 0]>>endobj
+476 0 obj<</Subtype/Link/Rect[108.0 274.8 227.5 287.8]/Border[0 0 0]/Dest[900 0 R/XYZ null 652 0]>>endobj
+477 0 obj<</Subtype/Link/Rect[108.0 261.6 270.5 274.6]/Border[0 0 0]/Dest[903 0 R/XYZ null 727 0]>>endobj
+478 0 obj<</Subtype/Link/Rect[108.0 248.4 287.0 261.4]/Border[0 0 0]/Dest[903 0 R/XYZ null 523 0]>>endobj
+479 0 obj<</Subtype/Link/Rect[108.0 235.2 256.2 248.2]/Border[0 0 0]/Dest[903 0 R/XYZ null 320 0]>>endobj
+480 0 obj<</Subtype/Link/Rect[108.0 222.0 330.7 235.0]/Border[0 0 0]/Dest[906 0 R/XYZ null 602 0]>>endobj
+481 0 obj<</Subtype/Link/Rect[108.0 208.8 324.3 221.8]/Border[0 0 0]/Dest[909 0 R/XYZ null 581 0]>>endobj
+482 0 obj<</Subtype/Link/Rect[108.0 195.6 185.9 208.6]/Border[0 0 0]/Dest[912 0 R/XYZ null 739 0]>>endobj
+483 0 obj<</Subtype/Link/Rect[72.0 169.2 431.7 182.2]/Border[0 0 0]/Dest[915 0 R/XYZ null 798 0]>>endobj
+484 0 obj<</Subtype/Link/Rect[108.0 156.0 170.0 169.0]/Border[0 0 0]/Dest[915 0 R/XYZ null 706 0]>>endobj
+485 0 obj<</Subtype/Link/Rect[108.0 142.8 187.1 155.8]/Border[0 0 0]/Dest[915 0 R/XYZ null 569 0]>>endobj
+486 0 obj<</Subtype/Link/Rect[108.0 129.6 239.1 142.6]/Border[0 0 0]/Dest[915 0 R/XYZ null 246 0]>>endobj
+487 0 obj<</Subtype/Link/Rect[108.0 116.4 193.8 129.4]/Border[0 0 0]/Dest[918 0 R/XYZ null 581 0]>>endobj
+488 0 obj<</Subtype/Link/Rect[108.0 103.2 227.5 116.2]/Border[0 0 0]/Dest[918 0 R/XYZ null 417 0]>>endobj
+489 0 obj<</Subtype/Link/Rect[108.0 90.0 294.1 103.0]/Border[0 0 0]/Dest[918 0 R/XYZ null 292 0]>>endobj
+490 0 obj<</Subtype/Link/Rect[108.0 76.8 236.3 89.8]/Border[0 0 0]/Dest[921 0 R/XYZ null 768 0]>>endobj
+491 0 obj<</Subtype/Link/Rect[108.0 63.6 294.4 76.6]/Border[0 0 0]/Dest[921 0 R/XYZ null 313 0]>>endobj
+492 0 obj[447 0 R
448 0 R
449 0 R
450 0 R
@@ -733,207 +745,257 @@
460 0 R
461 0 R
462 0 R
-]endobj
-464 0 obj<</Subtype/Link/Rect[72.0 684.0 342.4 697.0]/Border[0 0 0]/Dest[876 0 R/XYZ null 798 0]>>endobj
-465 0 obj<</Subtype/Link/Rect[108.0 670.8 187.1 683.8]/Border[0 0 0]/Dest[876 0 R/XYZ null 706 0]>>endobj
-466 0 obj<</Subtype/Link/Rect[108.0 657.6 247.6 670.6]/Border[0 0 0]/Dest[876 0 R/XYZ null 582 0]>>endobj
-467 0 obj<</Subtype/Link/Rect[108.0 644.4 230.8 657.4]/Border[0 0 0]/Dest[876 0 R/XYZ null 484 0]>>endobj
-468 0 obj<</Subtype/Link/Rect[108.0 631.2 205.8 644.2]/Border[0 0 0]/Dest[876 0 R/XYZ null 359 0]>>endobj
-469 0 obj<</Subtype/Link/Rect[72.0 618.0 97.0 631.0]/Border[0 0 0]/Dest[879 0 R/XYZ null 503 0]>>endobj
-470 0 obj[464 0 R
+463 0 R
+464 0 R
465 0 R
466 0 R
467 0 R
468 0 R
469 0 R
+470 0 R
+471 0 R
+472 0 R
+473 0 R
+474 0 R
+475 0 R
+476 0 R
+477 0 R
+478 0 R
+479 0 R
+480 0 R
+481 0 R
+482 0 R
+483 0 R
+484 0 R
+485 0 R
+486 0 R
+487 0 R
+488 0 R
+489 0 R
+490 0 R
+491 0 R
]endobj
-471 0 obj<</Dests 472 0 R>>endobj
-472 0 obj<</Kids[473 0 R]>>endobj
-473 0 obj<</Limits[(aen1056)(winbind)]/Names[(aen1056)474 0 R(aen1061)475 0 R(aen1094)476 0 R(aen1100)477 0 R(aen1139)478 0 R(aen1182)479 0 R(aen119)480 0 R(aen1201)481 0 R(aen1236)482 0 R(aen1245)483 0 R(aen1260)484 0 R(aen1308)485 0 R(aen135)486 0 R(aen1352)487 0 R(aen144)488 0 R(aen1466)489 0 R(aen1492)490 0 R(aen1511)491 0 R(aen1519)492 0 R(aen1527)493 0 R(aen1535)494 0 R(aen1542)495 0 R(aen1578)496 0 R(aen1591)497 0 R(aen1594)498 0 R(aen160)499 0 R(aen1604)500 0 R(aen1640)501 0 R(aen1644)502 0 R(aen1652)503 0 R(aen1655)504 0 R(aen1658)505 0 R(aen1661)506 0 R(aen1665)507 0 R(aen1681)508 0 R(aen1702)509 0 R(aen1722)510 0 R(aen174)511 0 R(aen1751)512 0 R(aen1756)513 0 R(aen1768)514 0 R(aen1770)515 0 R(aen1787)516 0 R(aen179)517 0 R(aen1815)518 0 R(aen1820)519 0 R(aen183)520 0 R(aen1840)521 0 R(aen186)522 0 R(aen1910)523 0 R(aen1918)524 0 R(aen1947)525 0 R(aen195)526 0 R(aen1951)527 0 R(aen1964)528 0 R(aen1971)529 0 R(aen1975)530 0 R(aen1980)531 0 R(aen1984)532 0 R(aen199)533 0 R(aen20)534 0 R(aen2000)535 0 R(aen2008)536 0 R(aen2012)537 0 R(aen2015)538 0 R(aen2022)539 0 R(aen2035)540 0 R(aen2049)541 0 R(aen2060)542 0 R(aen2079)543 0 R(aen209)544 0 R(aen2104)545 0 R(aen212)546 0 R(aen2120)547 0 R(aen2131)548 0 R(aen2167)549 0 R(aen2189)550 0 R(aen2236)551 0 R(aen2246)552 0 R(aen226)553 0 R(aen2260)554 0 R(aen2262)555 0 R(aen2277)556 0 R(aen2286)557 0 R(aen2290)558 0 R(aen2306)559 0 R(aen2311)560 0 R(aen2314)561 0 R(aen2319)562 0 R(aen2347)563 0 R(aen248)564 0 R(aen264)565 0 R(aen28)566 0 R(aen280)567 0 R(aen291)568 0 R(aen299)569 0 R(aen311)570 0 R(aen323)571 0 R(aen328)572 0 R(aen336)573 0 R(aen341)574 0 R(aen344)575 0 R(aen356)576 0 R(aen366)577 0 R(aen394)578 0 R(aen4)579 0 R(aen402)580 0 R(aen419)581 0 R(aen426)582 0 R(aen431)583 0 R(aen436)584 0 R(aen457)585 0 R(aen501)586 0 R(aen508)587 0 R(aen528)588 0 R(aen56)589 0 R(aen563)590 0 R(aen583)591 0 R(aen592)592 0 R(aen60)593 0 R(aen603)594 0 R(aen623)595 0 R(aen638)596 0 R(aen652)597 0 R(aen659)598 0 R(aen681)599 0 R(aen74)600 0 R(aen745)601 0 R(aen766)602 0 R(aen788)603 0 R(aen799)604 0 R(aen8)605 0 R(aen80)606 0 R(aen834)607 0 R(aen851)608 0 R(aen862)609 0 R(aen887)610 0 R(aen895)611 0 R(aen899)612 0 R(aen90)613 0 R(aen909)614 0 R(aen912)615 0 R(aen916)616 0 R(aen938)617 0 R(aen992)618 0 R(body.html)619 0 R(cvs-access)620 0 R(domain-security)621 0 R(install)622 0 R(integrate-ms-networks)623 0 R(migration)624 0 R(msdfs)625 0 R(os2)626 0 R(pam)627 0 R(printing)628 0 R(samba-bdc)629 0 R(samba-ldap-howto)630 0 R(samba-pdc)631 0 R(samba-project-documentation)632 0 R(unix-permissions)633 0 R(winbind)634 0 R]>>endobj
-474 0 obj<</D[744 0 R/XYZ null 383 null]>>endobj
-475 0 obj<</D[744 0 R/XYZ null 166 null]>>endobj
-476 0 obj<</D[750 0 R/XYZ null 706 null]>>endobj
-477 0 obj<</D[750 0 R/XYZ null 608 null]>>endobj
-478 0 obj<</D[753 0 R/XYZ null 726 null]>>endobj
-479 0 obj<</D[756 0 R/XYZ null 607 null]>>endobj
-480 0 obj<</D[642 0 R/XYZ null 266 null]>>endobj
-481 0 obj<</D[756 0 R/XYZ null 232 null]>>endobj
-482 0 obj<</D[759 0 R/XYZ null 359 null]>>endobj
-483 0 obj<</D[762 0 R/XYZ null 768 null]>>endobj
-484 0 obj<</D[762 0 R/XYZ null 392 null]>>endobj
-485 0 obj<</D[768 0 R/XYZ null 739 null]>>endobj
-486 0 obj<</D[645 0 R/XYZ null 686 null]>>endobj
-487 0 obj<</D[771 0 R/XYZ null 686 null]>>endobj
-488 0 obj<</D[645 0 R/XYZ null 509 null]>>endobj
-489 0 obj<</D[777 0 R/XYZ null 303 null]>>endobj
-490 0 obj<</D[780 0 R/XYZ null 277 null]>>endobj
-491 0 obj<</D[783 0 R/XYZ null 482 null]>>endobj
-492 0 obj<</D[783 0 R/XYZ null 225 null]>>endobj
-493 0 obj<</D[786 0 R/XYZ null 684 null]>>endobj
-494 0 obj<</D[786 0 R/XYZ null 446 null]>>endobj
-495 0 obj<</D[786 0 R/XYZ null 289 null]>>endobj
-496 0 obj<</D[792 0 R/XYZ null 605 null]>>endobj
-497 0 obj<</D[795 0 R/XYZ null 698 null]>>endobj
-498 0 obj<</D[795 0 R/XYZ null 603 null]>>endobj
-499 0 obj<</D[645 0 R/XYZ null 332 null]>>endobj
-500 0 obj<</D[795 0 R/XYZ null 274 null]>>endobj
-501 0 obj<</D[804 0 R/XYZ null 706 null]>>endobj
-502 0 obj<</D[804 0 R/XYZ null 621 null]>>endobj
-503 0 obj<</D[804 0 R/XYZ null 239 null]>>endobj
-504 0 obj<</D[807 0 R/XYZ null 768 null]>>endobj
-505 0 obj<</D[807 0 R/XYZ null 630 null]>>endobj
-506 0 obj<</D[807 0 R/XYZ null 532 null]>>endobj
-507 0 obj<</D[807 0 R/XYZ null 381 null]>>endobj
-508 0 obj<</D[810 0 R/XYZ null 650 null]>>endobj
-509 0 obj<</D[813 0 R/XYZ null 706 null]>>endobj
-510 0 obj<</D[813 0 R/XYZ null 437 null]>>endobj
-511 0 obj<</D[648 0 R/XYZ null 768 null]>>endobj
-512 0 obj<</D[816 0 R/XYZ null 581 null]>>endobj
-513 0 obj<</D[816 0 R/XYZ null 469 null]>>endobj
-514 0 obj<</D[819 0 R/XYZ null 739 null]>>endobj
-515 0 obj<</D[819 0 R/XYZ null 709 null]>>endobj
-516 0 obj<</D[822 0 R/XYZ null 768 null]>>endobj
-517 0 obj<</D[648 0 R/XYZ null 577 null]>>endobj
-518 0 obj<</D[822 0 R/XYZ null 180 null]>>endobj
-519 0 obj<</D[825 0 R/XYZ null 633 null]>>endobj
-520 0 obj<</D[648 0 R/XYZ null 505 null]>>endobj
-521 0 obj<</D[825 0 R/XYZ null 240 null]>>endobj
-522 0 obj<</D[648 0 R/XYZ null 394 null]>>endobj
-523 0 obj<</D[828 0 R/XYZ null 211 null]>>endobj
-524 0 obj<</D[831 0 R/XYZ null 362 null]>>endobj
-525 0 obj<</D[834 0 R/XYZ null 706 null]>>endobj
-526 0 obj<</D[651 0 R/XYZ null 739 null]>>endobj
-527 0 obj<</D[834 0 R/XYZ null 569 null]>>endobj
-528 0 obj<</D[834 0 R/XYZ null 246 null]>>endobj
-529 0 obj<</D[837 0 R/XYZ null 581 null]>>endobj
-530 0 obj<</D[837 0 R/XYZ null 417 null]>>endobj
-531 0 obj<</D[837 0 R/XYZ null 292 null]>>endobj
-532 0 obj<</D[840 0 R/XYZ null 768 null]>>endobj
-533 0 obj<</D[651 0 R/XYZ null 615 null]>>endobj
-534 0 obj<</D[636 0 R/XYZ null 730 null]>>endobj
-535 0 obj<</D[840 0 R/XYZ null 313 null]>>endobj
-536 0 obj<</D[843 0 R/XYZ null 673 null]>>endobj
-537 0 obj<</D[843 0 R/XYZ null 483 null]>>endobj
-538 0 obj<</D[843 0 R/XYZ null 332 null]>>endobj
-539 0 obj<</D[843 0 R/XYZ null 181 null]>>endobj
-540 0 obj<</D[846 0 R/XYZ null 541 null]>>endobj
-541 0 obj<</D[846 0 R/XYZ null 258 null]>>endobj
-542 0 obj<</D[849 0 R/XYZ null 753 null]>>endobj
-543 0 obj<</D[849 0 R/XYZ null 552 null]>>endobj
-544 0 obj<</D[654 0 R/XYZ null 768 null]>>endobj
-545 0 obj<</D[849 0 R/XYZ null 213 null]>>endobj
-546 0 obj<</D[654 0 R/XYZ null 683 null]>>endobj
-547 0 obj<</D[852 0 R/XYZ null 626 null]>>endobj
-548 0 obj<</D[852 0 R/XYZ null 465 null]>>endobj
-549 0 obj<</D[855 0 R/XYZ null 404 null]>>endobj
-550 0 obj<</D[858 0 R/XYZ null 452 null]>>endobj
-551 0 obj<</D[861 0 R/XYZ null 278 null]>>endobj
-552 0 obj<</D[864 0 R/XYZ null 726 null]>>endobj
-553 0 obj<</D[657 0 R/XYZ null 706 null]>>endobj
-554 0 obj<</D[867 0 R/XYZ null 730 null]>>endobj
-555 0 obj<</D[867 0 R/XYZ null 700 null]>>endobj
-556 0 obj<</D[867 0 R/XYZ null 348 null]>>endobj
-557 0 obj<</D[870 0 R/XYZ null 768 null]>>endobj
-558 0 obj<</D[870 0 R/XYZ null 639 null]>>endobj
-559 0 obj<</D[873 0 R/XYZ null 706 null]>>endobj
-560 0 obj<</D[873 0 R/XYZ null 582 null]>>endobj
-561 0 obj<</D[873 0 R/XYZ null 484 null]>>endobj
-562 0 obj<</D[873 0 R/XYZ null 359 null]>>endobj
-563 0 obj<</D[876 0 R/XYZ null 503 null]>>endobj
-564 0 obj<</D[657 0 R/XYZ null 463 null]>>endobj
-565 0 obj<</D[657 0 R/XYZ null 325 null]>>endobj
-566 0 obj<</D[636 0 R/XYZ null 593 null]>>endobj
-567 0 obj<</D[660 0 R/XYZ null 435 null]>>endobj
-568 0 obj<</D[660 0 R/XYZ null 285 null]>>endobj
-569 0 obj<</D[663 0 R/XYZ null 768 null]>>endobj
-570 0 obj<</D[663 0 R/XYZ null 268 null]>>endobj
-571 0 obj<</D[666 0 R/XYZ null 210 null]>>endobj
-572 0 obj<</D[669 0 R/XYZ null 660 null]>>endobj
-573 0 obj<</D[672 0 R/XYZ null 371 null]>>endobj
-574 0 obj<</D[672 0 R/XYZ null 260 null]>>endobj
-575 0 obj<</D[675 0 R/XYZ null 768 null]>>endobj
-576 0 obj<</D[675 0 R/XYZ null 529 null]>>endobj
-577 0 obj<</D[678 0 R/XYZ null 633 null]>>endobj
-578 0 obj<</D[681 0 R/XYZ null 581 null]>>endobj
-579 0 obj<</D[633 0 R/XYZ null 647 null]>>endobj
-580 0 obj<</D[681 0 R/XYZ null 304 null]>>endobj
-581 0 obj<</D[684 0 R/XYZ null 594 null]>>endobj
-582 0 obj<</D[684 0 R/XYZ null 271 null]>>endobj
-583 0 obj<</D[687 0 R/XYZ null 753 null]>>endobj
-584 0 obj<</D[687 0 R/XYZ null 639 null]>>endobj
-585 0 obj<</D[690 0 R/XYZ null 706 null]>>endobj
-586 0 obj<</D[693 0 R/XYZ null 179 null]>>endobj
-587 0 obj<</D[696 0 R/XYZ null 726 null]>>endobj
-588 0 obj<</D[699 0 R/XYZ null 706 null]>>endobj
-589 0 obj<</D[636 0 R/XYZ null 178 null]>>endobj
-590 0 obj<</D[702 0 R/XYZ null 673 null]>>endobj
-591 0 obj<</D[705 0 R/XYZ null 706 null]>>endobj
-592 0 obj<</D[705 0 R/XYZ null 525 null]>>endobj
-593 0 obj<</D[639 0 R/XYZ null 739 null]>>endobj
-594 0 obj<</D[705 0 R/XYZ null 348 null]>>endobj
-595 0 obj<</D[708 0 R/XYZ null 686 null]>>endobj
-596 0 obj<</D[708 0 R/XYZ null 443 null]>>endobj
-597 0 obj<</D[708 0 R/XYZ null 187 null]>>endobj
-598 0 obj<</D[711 0 R/XYZ null 673 null]>>endobj
-599 0 obj<</D[711 0 R/XYZ null 232 null]>>endobj
-600 0 obj<</D[639 0 R/XYZ null 379 null]>>endobj
-601 0 obj<</D[717 0 R/XYZ null 594 null]>>endobj
-602 0 obj<</D[720 0 R/XYZ null 730 null]>>endobj
-603 0 obj<</D[720 0 R/XYZ null 302 null]>>endobj
-604 0 obj<</D[723 0 R/XYZ null 693 null]>>endobj
-605 0 obj<</D[633 0 R/XYZ null 616 null]>>endobj
-606 0 obj<</D[639 0 R/XYZ null 268 null]>>endobj
-607 0 obj<</D[726 0 R/XYZ null 450 null]>>endobj
-608 0 obj<</D[729 0 R/XYZ null 686 null]>>endobj
-609 0 obj<</D[729 0 R/XYZ null 302 null]>>endobj
-610 0 obj<</D[732 0 R/XYZ null 686 null]>>endobj
-611 0 obj<</D[732 0 R/XYZ null 496 null]>>endobj
-612 0 obj<</D[732 0 R/XYZ null 385 null]>>endobj
-613 0 obj<</D[642 0 R/XYZ null 768 null]>>endobj
-614 0 obj<</D[732 0 R/XYZ null 247 null]>>endobj
-615 0 obj<</D[732 0 R/XYZ null 149 null]>>endobj
-616 0 obj<</D[735 0 R/XYZ null 713 null]>>endobj
-617 0 obj<</D[738 0 R/XYZ null 768 null]>>endobj
-618 0 obj<</D[741 0 R/XYZ null 730 null]>>endobj
-619 0 obj<</D[639 0 R/XYZ null 698 null]>>endobj
-620 0 obj<</D[873 0 R/XYZ null 798 null]>>endobj
-621 0 obj<</D[741 0 R/XYZ null 798 null]>>endobj
-622 0 obj<</D[636 0 R/XYZ null 798 null]>>endobj
-623 0 obj<</D[657 0 R/XYZ null 798 null]>>endobj
-624 0 obj<</D[738 0 R/XYZ null 768 null]>>endobj
-625 0 obj<</D[699 0 R/XYZ null 798 null]>>endobj
-626 0 obj<</D[867 0 R/XYZ null 798 null]>>endobj
-627 0 obj<</D[690 0 R/XYZ null 798 null]>>endobj
-628 0 obj<</D[720 0 R/XYZ null 798 null]>>endobj
-629 0 obj<</D[804 0 R/XYZ null 798 null]>>endobj
-630 0 obj<</D[813 0 R/XYZ null 798 null]>>endobj
-631 0 obj<</D[750 0 R/XYZ null 798 null]>>endobj
-632 0 obj<</D[633 0 R/XYZ null 753 null]>>endobj
-633 0 obj<</D[705 0 R/XYZ null 798 null]>>endobj
-634 0 obj<</D[834 0 R/XYZ null 798 null]>>endobj
-635 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 86/Kids[636 0 R
-882 0 R
-885 0 R
-888 0 R
-891 0 R
-639 0 R
-642 0 R
-645 0 R
-648 0 R
-651 0 R
-654 0 R
-657 0 R
-660 0 R
-663 0 R
-666 0 R
-669 0 R
-672 0 R
-675 0 R
-678 0 R
-681 0 R
-684 0 R
-687 0 R
-690 0 R
+493 0 obj<</Subtype/Link/Rect[108.0 684.0 274.8 697.0]/Border[0 0 0]/Dest[924 0 R/XYZ null 673 0]>>endobj
+494 0 obj<</Subtype/Link/Rect[108.0 670.8 208.5 683.8]/Border[0 0 0]/Dest[924 0 R/XYZ null 483 0]>>endobj
+495 0 obj<</Subtype/Link/Rect[108.0 657.6 265.4 670.6]/Border[0 0 0]/Dest[924 0 R/XYZ null 332 0]>>endobj
+496 0 obj<</Subtype/Link/Rect[108.0 644.4 195.4 657.4]/Border[0 0 0]/Dest[924 0 R/XYZ null 221 0]>>endobj
+497 0 obj<</Subtype/Link/Rect[108.0 631.2 202.1 644.2]/Border[0 0 0]/Dest[927 0 R/XYZ null 567 0]>>endobj
+498 0 obj<</Subtype/Link/Rect[108.0 618.0 226.6 631.0]/Border[0 0 0]/Dest[927 0 R/XYZ null 285 0]>>endobj
+499 0 obj<</Subtype/Link/Rect[108.0 604.8 183.5 617.8]/Border[0 0 0]/Dest[939 0 R/XYZ null 206 0]>>endobj
+500 0 obj<</Subtype/Link/Rect[108.0 591.6 182.9 604.6]/Border[0 0 0]/Dest[942 0 R/XYZ null 713 0]>>endobj
+501 0 obj<</Subtype/Link/Rect[72.0 565.2 228.8 578.2]/Border[0 0 0]/Dest[945 0 R/XYZ null 798 0]>>endobj
+502 0 obj<</Subtype/Link/Rect[108.0 552.0 159.0 565.0]/Border[0 0 0]/Dest[945 0 R/XYZ null 730 0]>>endobj
+503 0 obj<</Subtype/Link/Rect[108.0 538.8 499.0 551.8]/Border[0 0 0]/Dest[945 0 R/XYZ null 700 0]>>endobj
+504 0 obj<</Subtype/Link/Rect[108.0 525.6 504.2 538.6]/Border[0 0 0]/Dest[945 0 R/XYZ null 348 0]>>endobj
+505 0 obj<</Subtype/Link/Rect[108.0 512.4 455.7 525.4]/Border[0 0 0]/Dest[948 0 R/XYZ null 768 0]>>endobj
+506 0 obj<</Subtype/Link/Rect[108.0 499.2 425.4 512.2]/Border[0 0 0]/Dest[948 0 R/XYZ null 639 0]>>endobj
+507 0 obj<</Subtype/Link/Rect[72.0 472.8 342.4 485.8]/Border[0 0 0]/Dest[951 0 R/XYZ null 798 0]>>endobj
+508 0 obj<</Subtype/Link/Rect[108.0 459.6 187.1 472.6]/Border[0 0 0]/Dest[951 0 R/XYZ null 706 0]>>endobj
+509 0 obj<</Subtype/Link/Rect[108.0 446.4 247.6 459.4]/Border[0 0 0]/Dest[951 0 R/XYZ null 582 0]>>endobj
+510 0 obj<</Subtype/Link/Rect[108.0 433.2 230.8 446.2]/Border[0 0 0]/Dest[951 0 R/XYZ null 484 0]>>endobj
+511 0 obj<</Subtype/Link/Rect[108.0 420.0 205.8 433.0]/Border[0 0 0]/Dest[951 0 R/XYZ null 359 0]>>endobj
+512 0 obj<</Subtype/Link/Rect[72.0 406.8 97.0 419.8]/Border[0 0 0]/Dest[954 0 R/XYZ null 503 0]>>endobj
+513 0 obj[493 0 R
+494 0 R
+495 0 R
+496 0 R
+497 0 R
+498 0 R
+499 0 R
+500 0 R
+501 0 R
+502 0 R
+503 0 R
+504 0 R
+505 0 R
+506 0 R
+507 0 R
+508 0 R
+509 0 R
+510 0 R
+511 0 R
+512 0 R
+]endobj
+514 0 obj<</Dests 515 0 R>>endobj
+515 0 obj<</Kids[516 0 R]>>endobj
+516 0 obj<</Limits[(aen1003)(winbind)]/Names[(aen1003)517 0 R(aen1022)518 0 R(aen1025)519 0 R(aen1046)520 0 R(aen1050)521 0 R(aen1062)522 0 R(aen1089)523 0 R(aen1134)524 0 R(aen119)525 0 R(aen1198)526 0 R(aen1203)527 0 R(aen1236)528 0 R(aen1242)529 0 R(aen1281)530 0 R(aen1324)531 0 R(aen1343)532 0 R(aen135)533 0 R(aen1378)534 0 R(aen1387)535 0 R(aen1402)536 0 R(aen144)537 0 R(aen1450)538 0 R(aen1494)539 0 R(aen160)540 0 R(aen1608)541 0 R(aen1634)542 0 R(aen1653)543 0 R(aen1661)544 0 R(aen1669)545 0 R(aen1677)546 0 R(aen1684)547 0 R(aen1720)548 0 R(aen1733)549 0 R(aen1736)550 0 R(aen174)551 0 R(aen1746)552 0 R(aen1782)553 0 R(aen1786)554 0 R(aen179)555 0 R(aen1794)556 0 R(aen1797)557 0 R(aen1800)558 0 R(aen1803)559 0 R(aen1807)560 0 R(aen183)561 0 R(aen1836)562 0 R(aen186)563 0 R(aen1867)564 0 R(aen1888)565 0 R(aen1919)566 0 R(aen1924)567 0 R(aen1945)568 0 R(aen1947)569 0 R(aen195)570 0 R(aen1964)571 0 R(aen199)572 0 R(aen1992)573 0 R(aen20)574 0 R(aen2008)575 0 R(aen2013)576 0 R(aen2033)577 0 R(aen208)578 0 R(aen2103)579 0 R(aen211)580 0 R(aen2111)581 0 R(aen2140)582 0 R(aen2144)583 0 R(aen2157)584 0 R(aen2164)585 0 R(aen2168)586 0 R(aen2173)587 0 R(aen2177)588 0 R(aen2193)589 0 R(aen2201)590 0 R(aen2205)591 0 R(aen2208)592 0 R(aen2212)593 0 R(aen2225)594 0 R(aen2241)595 0 R(aen225)596 0 R(aen2254)597 0 R(aen2267)598 0 R(aen2289)599 0 R(aen2306)600 0 R(aen2317)601 0 R(aen2358)602 0 R(aen2411)603 0 R(aen2419)604 0 R(aen2433)605 0 R(aen2435)606 0 R(aen2450)607 0 R(aen2459)608 0 R(aen2463)609 0 R(aen247)610 0 R(aen2479)611 0 R(aen2484)612 0 R(aen2487)613 0 R(aen2492)614 0 R(aen2520)615 0 R(aen263)616 0 R(aen279)617 0 R(aen28)618 0 R(aen290)619 0 R(aen298)620 0 R(aen310)621 0 R(aen322)622 0 R(aen327)623 0 R(aen335)624 0 R(aen340)625 0 R(aen343)626 0 R(aen355)627 0 R(aen365)628 0 R(aen393)629 0 R(aen4)630 0 R(aen401)631 0 R(aen418)632 0 R(aen425)633 0 R(aen430)634 0 R(aen435)635 0 R(aen456)636 0 R(aen500)637 0 R(aen507)638 0 R(aen527)639 0 R(aen56)640 0 R(aen562)641 0 R(aen582)642 0 R(aen591)643 0 R(aen60)644 0 R(aen602)645 0 R(aen622)646 0 R(aen637)647 0 R(aen651)648 0 R(aen658)649 0 R(aen680)650 0 R(aen74)651 0 R(aen744)652 0 R(aen765)653 0 R(aen787)654 0 R(aen798)655 0 R(aen8)656 0 R(aen80)657 0 R(aen833)658 0 R(aen851)659 0 R(aen862)660 0 R(aen873)661 0 R(aen898)662 0 R(aen90)663 0 R(aen906)664 0 R(aen911)665 0 R(aen921)666 0 R(aen924)667 0 R(aen928)668 0 R(aen950)669 0 R(aen983)670 0 R(aen999)671 0 R(body.html)672 0 R(cups)673 0 R(cvs-access)674 0 R(domain-security)675 0 R(install)676 0 R(integrate-ms-networks)677 0 R(migration)678 0 R(msdfs)679 0 R(os2)680 0 R(pam)681 0 R(printing)682 0 R(samba-bdc)683 0 R(samba-ldap-howto)684 0 R(samba-pdc)685 0 R(samba-project-documentation)686 0 R(unix-permissions)687 0 R(winbind)688 0 R]>>endobj
+517 0 obj<</D[798 0 R/XYZ null 632 null]>>endobj
+518 0 obj<</D[798 0 R/XYZ null 277 null]>>endobj
+519 0 obj<</D[801 0 R/XYZ null 768 null]>>endobj
+520 0 obj<</D[801 0 R/XYZ null 204 null]>>endobj
+521 0 obj<</D[804 0 R/XYZ null 633 null]>>endobj
+522 0 obj<</D[807 0 R/XYZ null 768 null]>>endobj
+523 0 obj<</D[807 0 R/XYZ null 234 null]>>endobj
+524 0 obj<</D[816 0 R/XYZ null 730 null]>>endobj
+525 0 obj<</D[696 0 R/XYZ null 266 null]>>endobj
+526 0 obj<</D[819 0 R/XYZ null 383 null]>>endobj
+527 0 obj<</D[819 0 R/XYZ null 166 null]>>endobj
+528 0 obj<</D[825 0 R/XYZ null 706 null]>>endobj
+529 0 obj<</D[825 0 R/XYZ null 608 null]>>endobj
+530 0 obj<</D[828 0 R/XYZ null 726 null]>>endobj
+531 0 obj<</D[831 0 R/XYZ null 607 null]>>endobj
+532 0 obj<</D[831 0 R/XYZ null 232 null]>>endobj
+533 0 obj<</D[699 0 R/XYZ null 686 null]>>endobj
+534 0 obj<</D[834 0 R/XYZ null 359 null]>>endobj
+535 0 obj<</D[837 0 R/XYZ null 768 null]>>endobj
+536 0 obj<</D[837 0 R/XYZ null 392 null]>>endobj
+537 0 obj<</D[699 0 R/XYZ null 509 null]>>endobj
+538 0 obj<</D[843 0 R/XYZ null 739 null]>>endobj
+539 0 obj<</D[846 0 R/XYZ null 686 null]>>endobj
+540 0 obj<</D[699 0 R/XYZ null 332 null]>>endobj
+541 0 obj<</D[852 0 R/XYZ null 303 null]>>endobj
+542 0 obj<</D[855 0 R/XYZ null 277 null]>>endobj
+543 0 obj<</D[858 0 R/XYZ null 482 null]>>endobj
+544 0 obj<</D[858 0 R/XYZ null 225 null]>>endobj
+545 0 obj<</D[861 0 R/XYZ null 684 null]>>endobj
+546 0 obj<</D[861 0 R/XYZ null 446 null]>>endobj
+547 0 obj<</D[861 0 R/XYZ null 289 null]>>endobj
+548 0 obj<</D[867 0 R/XYZ null 605 null]>>endobj
+549 0 obj<</D[870 0 R/XYZ null 698 null]>>endobj
+550 0 obj<</D[870 0 R/XYZ null 603 null]>>endobj
+551 0 obj<</D[702 0 R/XYZ null 768 null]>>endobj
+552 0 obj<</D[870 0 R/XYZ null 274 null]>>endobj
+553 0 obj<</D[879 0 R/XYZ null 706 null]>>endobj
+554 0 obj<</D[879 0 R/XYZ null 621 null]>>endobj
+555 0 obj<</D[702 0 R/XYZ null 577 null]>>endobj
+556 0 obj<</D[879 0 R/XYZ null 196 null]>>endobj
+557 0 obj<</D[882 0 R/XYZ null 726 null]>>endobj
+558 0 obj<</D[882 0 R/XYZ null 588 null]>>endobj
+559 0 obj<</D[882 0 R/XYZ null 490 null]>>endobj
+560 0 obj<</D[882 0 R/XYZ null 339 null]>>endobj
+561 0 obj<</D[702 0 R/XYZ null 505 null]>>endobj
+562 0 obj<</D[885 0 R/XYZ null 411 null]>>endobj
+563 0 obj<</D[702 0 R/XYZ null 407 null]>>endobj
+564 0 obj<</D[888 0 R/XYZ null 706 null]>>endobj
+565 0 obj<</D[888 0 R/XYZ null 423 null]>>endobj
+566 0 obj<</D[891 0 R/XYZ null 567 null]>>endobj
+567 0 obj<</D[891 0 R/XYZ null 456 null]>>endobj
+568 0 obj<</D[894 0 R/XYZ null 581 null]>>endobj
+569 0 obj<</D[894 0 R/XYZ null 551 null]>>endobj
+570 0 obj<</D[705 0 R/XYZ null 768 null]>>endobj
+571 0 obj<</D[897 0 R/XYZ null 652 null]>>endobj
+572 0 obj<</D[705 0 R/XYZ null 643 null]>>endobj
+573 0 obj<</D[900 0 R/XYZ null 727 null]>>endobj
+574 0 obj<</D[690 0 R/XYZ null 730 null]>>endobj
+575 0 obj<</D[900 0 R/XYZ null 523 null]>>endobj
+576 0 obj<</D[900 0 R/XYZ null 320 null]>>endobj
+577 0 obj<</D[903 0 R/XYZ null 602 null]>>endobj
+578 0 obj<</D[705 0 R/XYZ null 175 null]>>endobj
+579 0 obj<</D[906 0 R/XYZ null 581 null]>>endobj
+580 0 obj<</D[708 0 R/XYZ null 768 null]>>endobj
+581 0 obj<</D[909 0 R/XYZ null 739 null]>>endobj
+582 0 obj<</D[912 0 R/XYZ null 706 null]>>endobj
+583 0 obj<</D[912 0 R/XYZ null 569 null]>>endobj
+584 0 obj<</D[912 0 R/XYZ null 246 null]>>endobj
+585 0 obj<</D[915 0 R/XYZ null 581 null]>>endobj
+586 0 obj<</D[915 0 R/XYZ null 417 null]>>endobj
+587 0 obj<</D[915 0 R/XYZ null 292 null]>>endobj
+588 0 obj<</D[918 0 R/XYZ null 768 null]>>endobj
+589 0 obj<</D[918 0 R/XYZ null 313 null]>>endobj
+590 0 obj<</D[921 0 R/XYZ null 673 null]>>endobj
+591 0 obj<</D[921 0 R/XYZ null 483 null]>>endobj
+592 0 obj<</D[921 0 R/XYZ null 332 null]>>endobj
+593 0 obj<</D[921 0 R/XYZ null 221 null]>>endobj
+594 0 obj<</D[924 0 R/XYZ null 567 null]>>endobj
+595 0 obj<</D[924 0 R/XYZ null 285 null]>>endobj
+596 0 obj<</D[711 0 R/XYZ null 706 null]>>endobj
+597 0 obj<</D[927 0 R/XYZ null 753 null]>>endobj
+598 0 obj<</D[927 0 R/XYZ null 598 null]>>endobj
+599 0 obj<</D[927 0 R/XYZ null 298 null]>>endobj
+600 0 obj<</D[930 0 R/XYZ null 691 null]>>endobj
+601 0 obj<</D[930 0 R/XYZ null 530 null]>>endobj
+602 0 obj<</D[933 0 R/XYZ null 417 null]>>endobj
+603 0 obj<</D[936 0 R/XYZ null 206 null]>>endobj
+604 0 obj<</D[939 0 R/XYZ null 713 null]>>endobj
+605 0 obj<</D[942 0 R/XYZ null 730 null]>>endobj
+606 0 obj<</D[942 0 R/XYZ null 700 null]>>endobj
+607 0 obj<</D[942 0 R/XYZ null 348 null]>>endobj
+608 0 obj<</D[945 0 R/XYZ null 768 null]>>endobj
+609 0 obj<</D[945 0 R/XYZ null 639 null]>>endobj
+610 0 obj<</D[711 0 R/XYZ null 463 null]>>endobj
+611 0 obj<</D[948 0 R/XYZ null 706 null]>>endobj
+612 0 obj<</D[948 0 R/XYZ null 582 null]>>endobj
+613 0 obj<</D[948 0 R/XYZ null 484 null]>>endobj
+614 0 obj<</D[948 0 R/XYZ null 359 null]>>endobj
+615 0 obj<</D[951 0 R/XYZ null 503 null]>>endobj
+616 0 obj<</D[711 0 R/XYZ null 325 null]>>endobj
+617 0 obj<</D[714 0 R/XYZ null 435 null]>>endobj
+618 0 obj<</D[690 0 R/XYZ null 593 null]>>endobj
+619 0 obj<</D[714 0 R/XYZ null 285 null]>>endobj
+620 0 obj<</D[717 0 R/XYZ null 768 null]>>endobj
+621 0 obj<</D[717 0 R/XYZ null 268 null]>>endobj
+622 0 obj<</D[720 0 R/XYZ null 210 null]>>endobj
+623 0 obj<</D[723 0 R/XYZ null 660 null]>>endobj
+624 0 obj<</D[726 0 R/XYZ null 371 null]>>endobj
+625 0 obj<</D[726 0 R/XYZ null 260 null]>>endobj
+626 0 obj<</D[729 0 R/XYZ null 768 null]>>endobj
+627 0 obj<</D[729 0 R/XYZ null 529 null]>>endobj
+628 0 obj<</D[732 0 R/XYZ null 633 null]>>endobj
+629 0 obj<</D[735 0 R/XYZ null 581 null]>>endobj
+630 0 obj<</D[687 0 R/XYZ null 647 null]>>endobj
+631 0 obj<</D[735 0 R/XYZ null 304 null]>>endobj
+632 0 obj<</D[738 0 R/XYZ null 594 null]>>endobj
+633 0 obj<</D[738 0 R/XYZ null 271 null]>>endobj
+634 0 obj<</D[741 0 R/XYZ null 753 null]>>endobj
+635 0 obj<</D[741 0 R/XYZ null 639 null]>>endobj
+636 0 obj<</D[744 0 R/XYZ null 706 null]>>endobj
+637 0 obj<</D[747 0 R/XYZ null 179 null]>>endobj
+638 0 obj<</D[750 0 R/XYZ null 726 null]>>endobj
+639 0 obj<</D[753 0 R/XYZ null 706 null]>>endobj
+640 0 obj<</D[690 0 R/XYZ null 178 null]>>endobj
+641 0 obj<</D[756 0 R/XYZ null 673 null]>>endobj
+642 0 obj<</D[759 0 R/XYZ null 706 null]>>endobj
+643 0 obj<</D[759 0 R/XYZ null 525 null]>>endobj
+644 0 obj<</D[693 0 R/XYZ null 739 null]>>endobj
+645 0 obj<</D[759 0 R/XYZ null 348 null]>>endobj
+646 0 obj<</D[762 0 R/XYZ null 686 null]>>endobj
+647 0 obj<</D[762 0 R/XYZ null 443 null]>>endobj
+648 0 obj<</D[762 0 R/XYZ null 187 null]>>endobj
+649 0 obj<</D[765 0 R/XYZ null 673 null]>>endobj
+650 0 obj<</D[765 0 R/XYZ null 232 null]>>endobj
+651 0 obj<</D[693 0 R/XYZ null 379 null]>>endobj
+652 0 obj<</D[771 0 R/XYZ null 594 null]>>endobj
+653 0 obj<</D[774 0 R/XYZ null 730 null]>>endobj
+654 0 obj<</D[774 0 R/XYZ null 302 null]>>endobj
+655 0 obj<</D[777 0 R/XYZ null 693 null]>>endobj
+656 0 obj<</D[687 0 R/XYZ null 616 null]>>endobj
+657 0 obj<</D[693 0 R/XYZ null 268 null]>>endobj
+658 0 obj<</D[780 0 R/XYZ null 450 null]>>endobj
+659 0 obj<</D[783 0 R/XYZ null 686 null]>>endobj
+660 0 obj<</D[783 0 R/XYZ null 403 null]>>endobj
+661 0 obj<</D[786 0 R/XYZ null 684 null]>>endobj
+662 0 obj<</D[786 0 R/XYZ null 401 null]>>endobj
+663 0 obj<</D[696 0 R/XYZ null 768 null]>>endobj
+664 0 obj<</D[786 0 R/XYZ null 211 null]>>endobj
+665 0 obj<</D[789 0 R/XYZ null 713 null]>>endobj
+666 0 obj<</D[789 0 R/XYZ null 575 null]>>endobj
+667 0 obj<</D[789 0 R/XYZ null 477 null]>>endobj
+668 0 obj<</D[789 0 R/XYZ null 366 null]>>endobj
+669 0 obj<</D[792 0 R/XYZ null 459 null]>>endobj
+670 0 obj<</D[795 0 R/XYZ null 707 null]>>endobj
+671 0 obj<</D[798 0 R/XYZ null 730 null]>>endobj
+672 0 obj<</D[693 0 R/XYZ null 698 null]>>endobj
+673 0 obj<</D[798 0 R/XYZ null 798 null]>>endobj
+674 0 obj<</D[948 0 R/XYZ null 798 null]>>endobj
+675 0 obj<</D[816 0 R/XYZ null 798 null]>>endobj
+676 0 obj<</D[690 0 R/XYZ null 798 null]>>endobj
+677 0 obj<</D[711 0 R/XYZ null 798 null]>>endobj
+678 0 obj<</D[792 0 R/XYZ null 459 null]>>endobj
+679 0 obj<</D[753 0 R/XYZ null 798 null]>>endobj
+680 0 obj<</D[942 0 R/XYZ null 798 null]>>endobj
+681 0 obj<</D[744 0 R/XYZ null 798 null]>>endobj
+682 0 obj<</D[774 0 R/XYZ null 798 null]>>endobj
+683 0 obj<</D[879 0 R/XYZ null 798 null]>>endobj
+684 0 obj<</D[888 0 R/XYZ null 798 null]>>endobj
+685 0 obj<</D[825 0 R/XYZ null 798 null]>>endobj
+686 0 obj<</D[687 0 R/XYZ null 753 null]>>endobj
+687 0 obj<</D[759 0 R/XYZ null 798 null]>>endobj
+688 0 obj<</D[912 0 R/XYZ null 798 null]>>endobj
+689 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 93/Kids[690 0 R
+957 0 R
+960 0 R
+963 0 R
+966 0 R
693 0 R
696 0 R
699 0 R
@@ -997,9 +1059,34 @@
873 0 R
876 0 R
879 0 R
+882 0 R
+885 0 R
+888 0 R
+891 0 R
+894 0 R
+897 0 R
+900 0 R
+903 0 R
+906 0 R
+909 0 R
+912 0 R
+915 0 R
+918 0 R
+921 0 R
+924 0 R
+927 0 R
+930 0 R
+933 0 R
+936 0 R
+939 0 R
+942 0 R
+945 0 R
+948 0 R
+951 0 R
+954 0 R
]>>endobj
-636 0 obj<</Type/Page/Parent 635 0 R/Contents 637 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 19 0 R>>endobj
-637 0 obj<</Length 638 0 R/Filter/FlateDecode>>stream
+690 0 obj<</Type/Page/Parent 689 0 R/Contents 691 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 19 0 R>>endobj
+691 0 obj<</Length 692 0 R/Filter/FlateDecode>>stream
x}SMsÚ0½ó+vr"3‰±lÇN%iK;“4´8ÓK.²-ÀÔ¶\I.åß÷I6Ði‡Á kwõ¾ôsÀÈLJÑ8 0¦¬Ü%ƒÑÇ[
|JV؉È’œ|Ï÷ñ&.gw3Z(¹™¡÷2k+Qn
Y_&[×ÊÐa[¯Ç¾7Asß“^Ù’É
@@ -1007,31 +1094,31 @@ Y_&[×ÊÐa[¯Ç¾7Asß“^Ù’É
èIµ½­u ¶ÿ‹7Q¼ †¯x.JÁµ -p`ë̇\òH"Ÿ!m/·80ù ¸ùªOïÃV(µ÷
ó(=÷þ,DYÜå±iÊ d¸€·êc2ÿòLsQ ÅKZ´iYdôPÀ4ÐzÎ/—ôj_
endobj
-638 0 obj
+692 0 obj
652
endobj
-639 0 obj<</Type/Page/Parent 635 0 R/Contents 640 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 22 0 R>>endobj
-640 0 obj<</Length 641 0 R/Filter/FlateDecode>>stream
+693 0 obj<</Type/Page/Parent 689 0 R/Contents 694 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 22 0 R>>endobj
+694 0 obj<</Length 695 0 R/Filter/FlateDecode>>stream
xV]sÛ6|ׯ¸¦‰:cS¢>,Éov§NóÐfë¥ Š¨H€À(šéïÞ‘´å4êÔeK{»{ þ5JiŠŸ”V3šßPVî·£ÉÆfSÚøæfµ¦mNÓd:Å'Ùø§R5Q{JúÅ):zoCTUEÊæ´Õ!Òãݯ÷w?nÿ”:颫s=O“*Ó[£nhzKµÊ)–šje©Q{º} JÓ~ßlÅ»¶çk(7!z³k£ÎéhbÙI™³QKT¹ÈÔ]´[8œ¢"h©«†ïu¤“k ð=*%Dï þ€!Lé:w€sgßF:Xt[v{Fý„˜ñ[ŠþD\­ciìž*sз]/`÷©—›täã¨û*í¿[®¹f¨wy²¦¿©v^˺Ÿ·#¦_4
&ê+¡é%.¿§1•16·“ÉñxLïHœßóÚmHCXŽ¿´\ÌñºX¯ð:Ã/N/öYN7¢Æ³a§ÞGé-Ý·¦Ê™wöÒ½±Ê›ËVr”³L¸¢ÂxÖ·Ðïö^Õ½8ËAœdcfßözLfÇ°–ì숄/½Î¢ó§„¶¨O¡tm•“j£cj3Œ \òTM|6ZÇ/d`zröØ„¦Â)D]'½=©TŸ4µ¶ ­ªˆ¬Öy`VÌ\«\J}u>ûŠ½sñû/mxÞéõµÌIW`hc1ë=ÜQ‡S‚Ötäá
Î ¹†]NGk«v•Æxm¤þ¬³–Ûz´ZôE,2ÖÆ2j‘c×; ¡6Ódâ[hÑf°z@tÔ©ào
w¢BLøïøØ.k)­‘šÿ¬›…ÜIçÁ:ïƒuvË#K|¹›ºq>*‹)ÇÕýoQå’¾‹(ŒÄ^wiÔ"^ ³’ßú «P‘€EÔ€Äìyʽ±Ù …h궒ìK莂L³çÇ ¶
endobj
-641 0 obj
+695 0 obj
1091
endobj
-642 0 obj<</Type/Page/Parent 635 0 R/Contents 643 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-643 0 obj<</Length 644 0 R/Filter/FlateDecode>>stream
+696 0 obj<</Type/Page/Parent 689 0 R/Contents 697 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+697 0 obj<</Length 698 0 R/Filter/FlateDecode>>stream
xV]oÓH}ï¯¸Ë A¢ÎG“4©´ÀªÛ¦ÚEtµÛc{¨=fÆ-ù÷{îŒÝÓò° BZ_ßÏsνߎ¦4Áß)ÎèdIYsôrsôzs4IV+ÚØ?Lh¾^&+š¯Nñý”¿ZIl'ðqÿÑÙ.WëdÞÙÎ`Lá|üfMÓ9m
„].É’6yx{B›l4Mæ ]z¹¥“3ze¥ð’|%É5)eFªl­ðÊh*T-“g›¯p8§é4:<žÂÝhSI„øçD³­å¯:R:x–߃‰#rmš++3o쮚+ç­J[™Ð9lÊR:O;Ó¢"‘³‹†³˜Ðñô$™qô ‹¶®wäL0Ì„&'%Uæ.„4[vç¨4äM)áÂr<ÚZ‘y•It
¿»Æ N¥á¹‰B'RƒŠÌZ«<4Ez๠œ%u$"W±âÿÂIp¡`XBa¸“µÔCd\}8ÿûßËׯ®.Î7Ÿ9!Ÿ þ:™­ïµþ1ýž­‡ê½èÔ{~F›N'm§BqNUäñ ø ʹç(<PôÜ?…>7[c½
v°:6hU#à\ä·>¥ !
endobj
-644 0 obj
+698 0 obj
1435
endobj
-645 0 obj<</Type/Page/Parent 635 0 R/Contents 646 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-646 0 obj<</Length 647 0 R/Filter/FlateDecode>>stream
+699 0 obj<</Type/Page/Parent 689 0 R/Contents 700 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+700 0 obj<</Length 701 0 R/Filter/FlateDecode>>stream
x•WaOã8ýί¸×ÕÒ´iK[¸O¬v¹Cºe9èiµÒJ'7qZC÷l‡¶ÿþÞØM[²ôX@
E±Çã÷Þ¼™þ{S¿1zÔRR}˜}šu£ñ˜v3Ã?]÷¢1 Æ#| ¢I–â¿áîM¿ ÄÂKÄß>§suNñ€&ŽŽñ!õï»4IZq4Œâˆî\Й¸Àaœ*g”]*¥K£D—Ù»ÉÃQçj@qâ´{#ÄiÝ|™|ú&sd¥ó\/yçRå9M%¥*ˤ‘¥#•­uE••ts}OÚðŸ÷ä4YgÔ´r2%+Í“J¤¥B,lÄ'v©ÝâÖ8éO­I8Žc(d}6­ŽtI§Þý<ÓVDôuŽ}ÊR*3\(å( mÅýóŽK]gTj7çä÷–‘›Ë’DŠ ”c#r“UÜzœ6Ù‹pb¼‡Í&g 7UÚ¶­-©>íyz{´ªP¹0ùP¬uªtáa³s]å)ÍÅ“$Q5kŸÌë'—¶Žtðܹr$Sõ?Ð’A é
á…) ‚³Y®ý2P_J,.×à‹
@@ -1040,83 +1127,91 @@ E±Çã÷Þ¼™þ{S¿1zÔRR}˜}šu£ñ˜v3Ã?]÷¢1 Æ#| ¢I–â¿áîM¿ ÄÂKÄß>§suNñ€&Ž
sWÓ–»0\íR±ŸÍšÃT¯¦¦]æM)œz’ä¡ò2…ºÀ!¥Bº|ž9Ï¡§À0jÖü` övíóÀÀá͈¸áó… m£k
Ð=1Ð̘€p|íÞ{ùÓá_ÏókmŒáõ^þËqhÍóù-ùpCoôÂâœÞ²×SºÙ»›XwÝÚK÷
endobj
-647 0 obj
+701 0 obj
1365
endobj
-648 0 obj<</Type/Page/Parent 635 0 R/Contents 649 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-649 0 obj<</Length 650 0 R/Filter/FlateDecode>>stream
-x­V]OëF}çWL¥V q’‡J÷SºÒ½Ð6iQÕôaco’%ö®ïîÈ¿¿gvíKH€>´ ÀÁöÌ™3çÌìדõñ= qJç#ÊÊ“·ó“ÞÇ! 4_áÎh2¦yNý¤ßïÓ<ëÌ mUQòä¤ÎIÄN­µ(ÈòI•5™tN::ß"ÜE®Cº\æñmŠ „9xÎ?–ð#}ꦣdD«ëù‡)}ZÑÎÔT;Ïþü}HÎï
-IJ3Äó²ä[šÂƒ¥ØQ¡¶xÚPaÌ–„ç»1=xhªîΓ”³ÈQV…t=wg‡]ç…õuuX€Ë¬ªÇP)z&Ê¥ Ò+AŽ$Ôða~6it>JF4œŒqâÇJZEò/i€
-ùý4™<¡ŒšyYÑhJsËÅ8¯ô:Tï6‚sq'T!–àÀh.ÚZeï¤=ª2åÞv~lØ´]ûY¡¤öÔýÜÜ;oï…€ã¼eC[ÛɽæüÅYÝÆÔENkéi)2PÀ’YáÎ1Ј4MÚ¾æFÿ¤É™Rú —ªˆÍŒµ2óÅ®‘EÛ0'Ñ „èÊx–Dh/^àwMN™Ð$
-gh)Y39÷ÌII÷ü`ƒŠ€í)‡
-±ôYè/B‹5.#;î õ¢ãêlCÂÑÍêf½8=Tl£Õlc äŠô–
-y' Èj«ü.ê”õÌ2])ø"–eå×Z:S%œ»76G+¸ÐÚ=»’ÕÀQÅÊÀÊ µâö3v‹%E…´ í
+702 0 obj<</Type/Page/Parent 689 0 R/Contents 703 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+703 0 obj<</Length 704 0 R/Filter/FlateDecode>>stream
+x­VaOãFýί˜J­$â$&$!*ÝwÒIwÐ6nQÕôÃÆ^'Kì]Ÿw äß÷Í®]BôC v=óÞÌ{³ûídDC|hÓù„Òòä}r2ø4¦Ñˆ’+“Ù”’Œ†Ñp8¤$í%†¶ª(H9²Rg$ÂG«ÖZä ¹¤ª6©´VZ:Mîî¢ ×#]®²ð¿.EÂì³ÇÛ"Þ2¤~<‰Æ@Ô»¾I>ÎésN;ÓPc¥O¼øý×1Y·+$)ÍwÖÉ’—4ù¥ØQ¡¶Øm¨0fKÂñjH:´¬û£ó(æ,òQ”U!íÀÞ×ã¾u¢vMuHÀ¦µªÇP)z!Ê• é•öAŽ
+-Öx µ±´ìÙ&Ý°­2»ä·ùízyÚAêôÚ*5ݱ"}M…¼—¤M­Ü.¨”ÕÌ"Í\(=Õò[#­C{©Ö>˜:Ü
+ñØå)gi]6¾¸Ä¸xÛeãøNÜr£hÖºl\–­!7ë“r­[-„Âí5VxãÉUƒµóÕ@0•¾n°dW©TÐÿSCãΣû¡B¢Î¢=TŽM ð{ìa6$?sn8ABOÜ_¥1ìŠ& žFøK³íédõŠ—9ôà_ŽˆaÑùEhv±çëSoĽ„Üà
+Ùœ–ø
+ó‚åžá·ö}íuƒ‘T5tÌ€ÿCQ¹ÑœŽqTÆÏÌ¿§Æ®õo³ô(q~Ò+?èFd!WµpòŒ [™Ã4´jÖ¸ŒT¦vßíig‚™ø¢tfíÔM¦_#qKÜ»..Þ}}ÿŽ~®Í\FW&mJÜ+ŽƒCüV?¼ÖûÏ·›ñl]âÖŠ[͸ÿËÉß°œ6‚endstream
endobj
-650 0 obj
+704 0 obj
1189
endobj
-651 0 obj<</Type/Page/Parent 635 0 R/Contents 652 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-652 0 obj<</Length 653 0 R/Filter/FlateDecode>>stream
-xWÙnã8|ÏW4ò²`+¶ã\ƒ=à\‰'3öÂX /´DÙœP¤G¤âøï·š”r(³‚ŠE²««««é{êãg@§C::¡´Ø»˜ïÞœÓ`DóoNÎðQ?é÷û4O;ƒdÐOh±ž&9Í×ʬ]Y󋧅-ÿ8˜Çþ qoxŠý¬5ÖójÚb™#a2ÚÙŠœ¥'o‰_>Òþvmi[Z/‰?q´QZ’Íɗ­÷ñ™44!W­VÒùpBfqˆÜÐÄJ(CœÍ0úÔ%CÞ<WZ‡M©Ðevk’zåð$áD;sÀÀ
-µZ{*¥È8(åŒãj2þ<ý2›ÌÿìC
-üŠnÆ_fƒ·‰R‡q¾J#`_îÂ!…Pš)Ð
-ØmÙiäÖ­J[m‚¶ö‘ Ÿÿíz|uwM¹-)“G¸‡ƒ„f¢X
-Z GK È $M¥sy¥õ;Á«Ö2#ÔɯmåÀ‰còÒµ£":ÛªLvÉY*Än‰¤œ-¤5’¤v2„Y«ÀwI›Ò.µ,Bþß>É2ÅjR>¡¿ÀAj+ Ó*ìæ$‹E+*#á»TZ
-p¥œ«d@É;'Ø˺]¥ES¥\=‡ãL÷·×ãÙ59 y'AÕ&H:Š ™e6­
-i¼ðʲ\À«³U™J
-Êg†Ѯ耶K6lº·Å= ÐWñfÂÙÇò%t¹¶Qà :ö6µšnå“ÔïųŽ“bŽ…³» ÖY\ÌS(¡eêN­Ê¬ *µ(\µÙØÒ;:î¬ïòË·ënø{ûç¬K·ãéÝx:h³?Æì@O烶Ñ;ƒ?¥œ‡¤-ÛB!žUQ¯Áp €ώɽ´
-™¤Öäïsî„©ÂÚ•/"GÁG=\+øÁ‡–<ü¸ÄLë“À?…ønKåw/ßÎdbÈêL–·v0¾à³qˆ°háúÑAr[Õ–f$ €eÌ”2™±V…ŠÊ”Y÷¶¥æ Á ÑÂ:®X˜V°m™A‘!=c·ØëÆâ£ÄŠpcŠ:ÛxaÞ›¦œŠ5z׊[J [à ²'´®XÁ»0ÿš"¯@Í,†1a—.­àÑèw¶÷E¾X¡ÄÒÉò æ˜NXÀ!áz*kÒ0°Q°F»]FòyNA}£AªŸ†¸„jc‚@Á£
-I[vÜ’Œ(ÃVùu#8˜Ã •«O¯–ÖnÄEíÕÓ9êTþ=?æ{Nps?›ÉxŸh:ꡃU€k*Á¤¡ÊŒ¦`ÆêËR;½).—ŸhþÚ³›RÁÚT²ââ³4TrS„ ÿªÉè¶ÑÖç—÷‡“{By¹ ›1Õ¿U©¨€ «„n€1 ›Š—G-y†O¥_ÊJµÏåkZbO¸WBf?nM+räv¸$ðκéXÙU!–è7µ¾¬VªÃ›³úv089Mønð³ñÝŘ-ü;<7þ7w(Ž×‹‹{§C|MÈþ×ׄÑY?9ÇW ,?æ#p›øº÷7¡‚ñ¡endstream
-endobj
-653 0 obj
-1513
-endobj
-654 0 obj<</Type/Page/Parent 635 0 R/Contents 655 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-655 0 obj<</Length 656 0 R/Filter/FlateDecode>>stream
-x•WßoÓH~ï_1êË©õ%iš–RZtèhË5©mì5Y°½fwÝÿþ¾™]‡`¸“N)µ½óã›ï›™ýz0¦þé|B§3ÊëƒËåÁõò`”hvñ4›Òôâ¿'øï4•üú÷Oi<¥e‰ƒ³³³lFË‚p`4¢e~4ÎÆ£lšÑkgš`šOT:[Ó›Û—S°¤èyetèõó'ËÏ05¥ñ8š:™œÃÐÑÒRç5>lÙ€vÖ*ñ¤•©ÔªÒôhÞûzu²R^D^»G|)žuùFkëmmGSUÔh|÷¹­[ a­ÙýˆNƧلÝÂZ#kýäTÑ{œÆ‡Íî´i|P°†‡äsgÚ@tˆƒéaF÷ZÁ ^ò‡®Ëƒ± ~s¤ò •ÖQmÝÐw¡Ró¥˜&3àÎP¬50çÔ+ÏÐ-Þ/Þ’[$Ü 6…Õžê._SŒLÕœ CŸ#Z$ÞûÏüÖ?fô2
-KaÛâ”-û¯“ݾæ+MÔjìk`±Ú27—‰3d*[àïÐéܺ¢·t8 I  Ú ŠB‰0àljN5Ÿ4G²Ú„„Ò+²-T‚t‰/MÁΘ)‡…n¶àD¡ý!€éœ•ounJ£‹ŸüÖkÄØö›û2@šµ‚sYÐÈŽB/[¢Â”%8=Šv~Ì>xgšùfôV;F{B†ƒÀª^)Zi€¬Ñ+&´V(ŽC
-,;4gÛ¨`ðœÊ¼ ÕÃÑÓ¨UÐ2èZØÊ_›º­tÍAAŠ¨¥¯ÊÀ÷J‡.ßs‰ÑÄê îåùæ
-:¶,èPvUµ… *:g Qœ)$#1¼Änôõ*UþcÕ(ÁÔ“.…'€ÄáEbIײ×É‡Ó ¡+L>̦ÇTh´`å¢q0`‰at·xž¥Ñ%‰àrò]ÛZüž#^<±«qF à+Tg0Zë½a©!’A•|É:‰¼vúk§ý0mµ²(e4
- ¡îÌ\éŒ_»zäÚÃïà ¨ *^ò79¤ “èeÇßs¡ÏZ:z¥ƒFÜà©àÇÌ?á|µeD,ŠTC,I ÐdͦÚH¹¤®{EH0€þkÕ¢N°¥’çæºÜEýN•cŠ™¬‘Π!sð‚$AOÍÀ{² ò샜ö…]'u€‘žÄ@Ð3åÑÌ$-€¾QÛŸ„þò
-‚—iФ¡².xU
-üÿ‚?­&¼qe3)Œ—½ AFìðĺ•Ä‰À^ûWÏб2IoFu1!Е…«ȱFݘ jØx
-ÛüúN·KDŽ/dì#ч#Ï+3¡ÀꞀIMbŽ½1£”:ˆzuè\ƒŽ‚a¼·N 0f-ˆô ä¯v4“n!ÐâH9Ýý9Tä²Hó?¯¨¾·´à
-=4êQ¢*¨Ö˜Ù[h&¶‡…£WÖØ
-endobj
-656 0 obj
-1764
-endobj
-657 0 obj<</Type/Page/Parent 635 0 R/Contents 658 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-658 0 obj<</Length 659 0 R/Filter/FlateDecode>>stream
-x“_OÛ0Åßû)ŽúT¤ÕKš6i‰4¦fo¼熘&vf»|û]'tƒJC(Še+÷ïïœüš¤HøIQ,åPÝ䢜|¾Ú ]¢¬ùK¾æM…D$I‚RÍR‘&"¸‘}¯Í~zrFväÏÊGN\"MÇÄù¢àÄÙug»G#„J×592ûc¬Ah·—ÒT{£ŸÀrñÌrGh­ÝA†!fz,NöÓØ<Á<ÍÄ"6µ}ÐÖ`K4Dûî^(kj6è塶©[/bö×rÂ3"Ï2^—ë‚׿Ž#O‘¬6›¡Í ”Bà;ßÖᲑNªÀ»-…pé½o©óŒ%"­uKRüÖ¡TŠ‘³QÇÂzÀÖánÖjf~#ÇÓ}ÂV ¬;²U XyÐÌà_-üÝÙúšV¶ëˆ¥ˆ²½!~­®†D?FÆñ"áFeëí ×I÷·ê ¥â8,‡ÚEEÆ‘@O²ë[òì¾K°îùµ>«lõ}Ö/ÎKóBD;³[_Ùv{~sqŽ[g¹&¾XµçƒŒ6‰Yó1í}“/׉ØðŸÁ>+^œócòp›ûendstream
-endobj
-659 0 obj
-452
-endobj
-660 0 obj<</Type/Page/Parent 635 0 R/Contents 661 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-661 0 obj<</Length 662 0 R/Filter/FlateDecode>>stream
+705 0 obj<</Type/Page/Parent 689 0 R/Contents 706 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+706 0 obj<</Length 707 0 R/Filter/FlateDecode>>stream
+xWÛnÛ8}ÏW òpT_â\
+,Îma qÓÚ c¼Pm³¡HW¤âøï{†”GmÑEÀ‘HΙ3gÎÐßúÔÃOŸÎ4<¥¬8¸œ|¼½ þ Í—xszŽ9õ’^¯Gó¬ÓOú½„kái²¤ùZ™•£kkŽ<-lùô÷‡ù7ì?¡~?î?œakõ¼š¶XæH˜œv¶"çEéÉ[â—Ot¸][Ú–ÖKâ'Ž6JK²Kò¥pëC<“†&äªÕJ:NÈ-‘X e豃³FŽûÃdÀáÛÇä•ÖaS&tA¹Ýš¤^98M8ÑÎœ0°B­ÖžJ)rJKÆq=ÿ3ý<›ÌÿâC
+üŠnÇ_fƒ·‰R‡q¾Êž"`_îÂ!…Pš)Ð
+ØmÙiäÖ­J[m‚¶ö‰ Ÿÿõf|}CK[R.=Žpš‰"´ŽR È $ˤsËJëv‚W­eN¨“_ÛÊÇ<:å¥kFEt¾U¹ì’³Tˆ]Š¤œ-¤5’¤v2„Y«ÀwI›Ò¦Z!ŽoŸe™a5)ŸÐà ³•Î‰„Æivs‹Å¢•‘pá]& ¥\)ç*PòÇ çŠ Ý®Ò¢©ÒR½„ãLw7ãÙ 9 y'AÕ&H:Š ™å6«
+i¼ðʲ\À«³U™I
+@ Iá”,â 7óô gÐÔÉù>ð e,Ûíur1LNn°~B×J¬Œu,—‡Hx(Û¯{‹•·Ï(A,|L­&™3]+de¾·èøП÷’fðo:1–®yrUšê‡ŠÔ‰žŒFÉùŸp#¶|d
+æX8»¿d!ÅÅì!…0(´ZfÞáÔª,Ñ¡ ½®º«6G£.Á»ÙÙ®>½é†¿wÿκt7žÞ§ýn‹ÐøÃÙOçý¶“¿‚eœ‡¤-÷}!^TQoÁh €SŽÉ½öÑ~5÷;ˆÇ‹S¾ªbõô@4®ØOF“òtã’2­Ïÿâ›-•ß½šx;“‰!«sYìØACÁHã”`UÂÖ£E,mU{–‘<1DìpÖ)SÊdFÄZ*š$#RfÝÛ¿ArA’…u\±0ŽàË2‡CzÆn±×9̽'‰á0Æu½ßYaÞ›¦œŠ5z׊[JLSÃÊù3zS¬`NpM‘W fð©Ë*˜0šý{±\¬Pbédù wLg,àp=”·'e˜È(X£Ý.#ù<§ ¾Ñ ÕŸ˜ò¡ÚP0æ$À¾ÐÛ¯!@ r#›é´ÒDý‹.qçʬí™Êas
+øEÇýuHÑ?X¥!篭–#“·Çrn5
+ó׈ž)$mÙe g#
+ä°U~]ÇÐ
+½ê0IåêûZ´qQ›ñtŽ:•„/F|‘©n.`3/ MG=v°
+pM%˜4T™ÑÌX}j§7ÅíñÍßzvS*x÷÷JV\|ö‘†JnŠ0Âß4Ý5úöüêáãäP^nÃf5ÅoU** È*¡[` ¨Å¦âíPKÒSLY©ö¹|`@)ö„‹#dö+àÖ´"‡@n‡[p﬛Ž•]"E¿‰¨õ´Zªê©=ýævr^_ú§g 1À½opÏÆ÷—cvúo°jÜü÷îR ë8î:ŽÛþ××…“ó^r¯¸}øàûrðìñrendstream
+endobj
+707 0 obj
+1505
+endobj
+708 0 obj<</Type/Page/Parent 689 0 R/Contents 709 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+709 0 obj<</Length 710 0 R/Filter/FlateDecode>>stream
+x•WÛnÛ8}ÏW ò²)hm'q’‡>äV Ø6é&n»‚.h‰ªÙJ¢JRqõ÷{fH9®ÒÅbQP,q.gΙ~ß™Òÿ¦t2£Ã9åõÎÅbç÷Wg4=¢E‰7óS<4É&“ -ò½i6dG½s¦ ¦ùB¥³5½¿yýKŠ.+£›@ï._,¾ÂÐM§ÑÐÁì†ö–:¯ñaË´£°RŒ'õ¨L¥–•¦G£ðÞ×˃¥òº òÚ=âKñ¤¨kÌZY¨·­MUQ£ñÜç¶n ,„•f÷:˜f3v kyŒ¬uö‹SuFŸp6›Ó¦ñAÁ~$Ÿ;Ó¢]”Hw3ºÓ
+^ð’?t]ŒmðÌ‘Ê'TZGµucß…HÍg”bšÍ3Æto±ÒÆzåºûO÷ȇ $÷‚Maµ§ºËW#S5'ÈÐ爉þ3ßûÇŒ^àÐÀeã·#õ»¿^ì ”t|vˆŽNOð<ÃÄQŽ+||–ÍŸ×þ8£76ÿÿÿRáÛåuZÑze´·µ¦F¹Bå=g;.3¯¢!‰ ÅúØ °¶ú§l9|ì5_j¢V;`_‹eÏ@¾½HœÉ SiØ»NçÖƒ¥ÝIbÀ
+vÆLÙ-tÓƒ…ö»øLç¬|«sS]<ó[J¬[`Ûclî~Ê
+:Ì=dQ@#ïY8
+½ôD…)Kp zíüœ}:ñÑ4òÍèƒvŒö„ GÝ«z©h©²_f´R(ŽC
+,;4gÛ¨`ð;•yª‡½‡Q« eе°•¿6u[隃‚Q9OŠ2Teä{©ÃZ—§\b4±:ˆ{±B¾¹‚Ž- :”]UõЀƒá@E‡à,€$ª‚3å‘d$†—XÀ¡^¥ÊÃȬ%˜RÀ¥ð$ø!¼H,éZö:û|8#t…ÙçùÑ>-X¹h XbÝÞK<#ÏÒè’Dp9ù®m­ ~Ë
+/žØÕ4£{à+Tg0Zë½a©!’A•|É:‰¼vú{§ý8mµ´(e4
+ ¡îÌ\錧M=rí÷áÀÆwð„
+T/ˆù‹ÇRIô²a„¸0d-½ÒA#nðTðcæ@ƒŒŸp¾êQ‹"ÕÐKR#4Y³©6R.©ëV  ÿJµ¨l©äy€9….wQÿ“FeŸb&+¤3hȼ IÐS3òž,ˆ<‡ ÏaÛ®“:ÀÈ@b è™òhf’@_«þ’Ð_
+™W¢&žUÍs]U°Í­Ñ`—W®ùW¼Ls€& •uÁ«`Þ¢ ‚¯Õ7Ð1ŽÉscÀÇ h™ÌÓ¤1~äL2è¸ì ¥ÃqÑC×¥ê*t‘H ‘*;Þ ¸äyÍÛ†þÑV&7R8ÿ 1³)[1¥}ZvPpÉÛÍÈ»× ‰”}“ÓKêãli(_Ö¡§¬#†]þÁ€g« ïF\FÙL
+ãe/CQ<±n%qb°—ÝáÕKtc¬LÒ›Q]LteácÀêr¬P7æ‚7žÂ6¿…¡ÓmÒ‘ã ûHôaÏóJÄL(°ú‡`R“„˜coLÅ(¥¢^:× £`o­#ŒY "}ù« ͤ[t 8EN·Œ¹€,ÒüÏ+ªo--8ÀAl/Òóh¤0jË,
+endobj
+710 0 obj
+1723
+endobj
+711 0 obj<</Type/Page/Parent 689 0 R/Contents 712 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+712 0 obj<</Length 713 0 R/Filter/FlateDecode>>stream
+x…’ÁnÛ0DïúŠANP³¢cXò1i’"‡¢-¬c.j1I—¤Ýæï»´Àè¥, ÌÛ™ýª4jy4šnV0®ºëªÏkè%ºA¾¬ZzÔª®ktf¦•®U£ð=ñe¤H&˴ᜮ»7Ñ.¡õI;_4¢= x{Œt`ìbx™Ø%ì“õ¯ìÄž'ü¶yÃ>s˜p‚õ]ϳÉn¹ÌøÊÑ‘ÿ„ÇÈÞŒ±l®1×7jQ6n ùÞz:Xò,$1ù|]Oˆl‚sìû£½)„-(ùWšl4‘®€°Ë6øb$¹e‚ |Д2mùŸí„KÖUâ$`GfK¯|ŽþCn7IøÞŠ—â»*¨‡®’sc¥×ªÅ²md^Èéö|a½jTiNŠ¹hhsûíî?bx&îƒÙKÆL%B¡ÏOªùIöß>—m­ÖòÈU›³¹ŸÕ_Éf© endstream
+endobj
+713 0 obj
+355
+endobj
+714 0 obj<</Type/Page/Parent 689 0 R/Contents 715 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+715 0 obj<</Length 716 0 R/Filter/FlateDecode>>stream
x¥V]sê6}çWì#™)66ÞhÚLïL“¹í¥s_ò"ljlɵdÿ¾gå0é¶sÃLléh÷œÝ³úkÑŸˆ1Í攣7£Ÿ7£i°\Òå_µÇ,[̃%%˾Ç1¾V’v¼/ÓÿÃòðéâ)mv@Ÿ/–´Éü{<IÇQ:YQÐ'íä¾Né==¡¯JgæÝ’–îÝTo–Þ•;ÜmþMi'
8]|ßX,µQŒ‘‡OÔþÎM*ræ“úoÿÖ4ËÄþÊÚ£<`>Í—˜Q ÎVí·æ
ùÀ#r©÷ý½¥¿ â8Mw.9/l)Q‹Ø *1Aw¦®èuœ¼ÞaÎ¥ª@æ¤köãE¥Àm ;¶g¨–AŠ×1‚,e¥Lözç‹™|q­Q›w%àd.=
endobj
-662 0 obj
+716 0 obj
1213
endobj
-663 0 obj<</Type/Page/Parent 635 0 R/Contents 664 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-664 0 obj<</Length 665 0 R/Filter/FlateDecode>>stream
+717 0 obj<</Type/Page/Parent 689 0 R/Contents 718 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+718 0 obj<</Length 719 0 R/Filter/FlateDecode>>stream
xWÉrÛ8½û+ºr¥Ê¢Û’œ99[Uª&‰'Qj.¾@$("&
ñ$Ihúx÷†D–Yé\BwΙT /3:*_‰ásò…„+•8ÑN’Ñø±/·ß/æ4]\%KŸT >Ü·'Jœ¹ ›”£OŸ ‘”Â+£]¡8Ä¥ÔìE¿WÙ¹ÙKeI®N Ω½®¤öndXÀ®°;åb6–2åR+ÙßPš´ðµ•ÑsTä`'œJ©”O² 6ºd¥¦ªj­Òè+yñ(JN^í”ÞŒrˆ‡ }U+ùnŸˆ˜uäm_š: ü¨%¢CÀ{©¥ w­¬„ÒŽrõ r„‚§‘Áƒ°^¥u)lƒ+<» qõ"“2[…0œÔNåÖTÈsKJh±—œY:Hë2õêI&#»^_
f „sH¬€q“‚øt`yC=ð2V€ÐGZ>-B°Í›Ô”¤ªC’ˆBÈ,86¦fð•ýzÑ¢E%_°/
-¦!¸É×›Mù„HàÊyU 4'4hÂ
- i¬‚p­’¾0ð‘b¾9úööž&ߘzo…{+*jO~xÉ€£09j+¡
-8‹)
-íbY£.Íc’ø?14]^Ý€–ÿMÐå|FísŠ^ýš¢œÞAÛæ4"A;A,jéú|(ãfB«$‚cÉðÏI~¾çÉk\àfxOyŽaRf }S˸{¦V&Æ”0X ¦™[b›¡‘ö¾Œ«Šm£—¥2CgnûÓéÊ` ¸è¼­S~/€v‡úc±¿e%X E7qj¤æ+Ú ÑåNé¬= ïo\aí²ª.½B?Œ¸·Ùœò«ø’„¤jÚAËÚvÁê««fº/¥À¨neÎC_(âýqé¸Òá®òÚâh¼ûH4ŽÒ…†Ö0k}Ý¿Qž)ߦQŠÅjðë)‹EO­¯w_ßñ˜ò¢\Òš‡‹Ð¶8¼iÜ5Û&VŽ‰À+¯7óä6*Ñ-_í¿/þ0WÈendstream
+¦!¸É×›Mù„HàÊyU 4'4hÂ
+Xe °ÊO¦AY¶ö!{‰ä1DÑ@pžó¨A”¹‹RHô…¡¨ƒ£÷ ܱTa\ŒÌî¬Y*
+ÀµJúÂÀC†Šuôíí==L¾1÷Þ
+/öVTÔžüð’GerØVBps
+ºÈ(êAz±Ùèòô'ÛS¨­£nÔ­+X9&@[À”ç¯Î¿C§ˆuK‘>¦¨Qš1Ùns$ D3x”•þ¬1k‰š¤wLã-v²ÙAQü¾&¸˜—¹©uø LZ¿iõ<ûKéú™š’„Â{à"ñŒ;þ˜_Wu• Q"çxâA:xç9þµÕÇØ6ùïrÁšƒª;ѱPHŽ=<jF»ÿïM·j˜º;ÍÁ²< åls—@Þëê@Üá*gízÀðDÐÕ7ù¬¸1KÔâXÍЩãX\íƒ#°Îñ> UŠ]#NaÔšÓÕæÓT3Xa¸ßÃ\5{K tž¢®nx駨eŸ†‹fÙ$!Ø}JX^#OúYlºäYlÒgÇ˲Œ-,„=p¹T;+ î‚épÚ¶+&`XÝŠ§áÑ€YÕaÖ"ÁÍ·4zïGÓFƧkŒi0›<,Wëæaë&?ë&·ÖØÃÄA`‘Ó‹ì7
+,Ž\d‘ ò1h1¯gÑ´£æïú9{vP
+!²–ô6f”>1¿J‹‰¹ ¶r…{ŒJˆy”¬"?õNÕ¼ÚŲF]šÇ%ñbhº¼º-ÿ› Ëù"ÌÚç½ú5E9½‚¶ÝhD‚v‚6XÔÒ#4úPÆ͈VIÇ’1àŸ“ }ϣ׸&ÀÍð¢ òÓ¤ÌúÆ–q÷L­
+LÍ)a²
+L3¸Ä*26C#í}WÛF/Ke†ÏÜö§Ó•ÁpÑy[§üb
endobj
-665 0 obj
+719 0 obj
1684
endobj
-666 0 obj<</Type/Page/Parent 635 0 R/Contents 667 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-667 0 obj<</Length 668 0 R/Filter/FlateDecode>>stream
+720 0 obj<</Type/Page/Parent 689 0 R/Contents 721 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+721 0 obj<</Length 722 0 R/Filter/FlateDecode>>stream
xWÛnã6}ÏW ܇zÑD¶¼Þ8»oIÛè^ŠèK€‚’h‹‰TIÊŽÿ¾gHÉV”¸ÛHli8sævføÏEJsü¦´ZÐÛkÊë‹»õÅïë‹yrsC§?v‹/sZ¦i² åÍ
Ÿé
Ÿ­¤ Á[è9þüìã{J—´Þ@ýõ >áýœÖùt‘,’eBoÖß/fÓNl:“>ŸiçöÊçe’½‰KJÓ¨çj±‚žéºTŽ6ª’!oMåÈ—’Dî[Q‘µ.gªÖ+£É »•Þ%´†L<æÊEU¨.Êî¤%“}—¹'×È\m ÀÇ Ç0æt•¾…Ã0¿1UeöîCD7§÷ .¥«Å»„ÝœR÷ó½î«BhŸ‰ö&ÆÏé {s/íNåøBÃ^oÔ¶µ`ð(9w¾{¾H“롽F ÌŇ)4Öðç”Ðmå¥Õ0·“$q%c)¨1¶ Ñ"Úw1#aeˆÎkžÆCGÛÑrp‘F^«B4´W:Sº8È•¢0ûÿ‰~kMÛœdŸ»:ŽKiœwa.²«ÐÇ2x‘£sáam/Êñ?cóÜ~´Ë!0Î/T¢®UAEÖùq ×9tZú½±G§8ÄG½gªC"™öx‚‚õpæL>k¼Éц]äŽ6ÎÈÛ&ÄøÇú],ÿ^ýs<³=?\q^ÇýºA€Zëä%I‘—d6LNR-óR
@@ -1125,42 +1220,46 @@ M°/È)3¨~éBGõj8¶ütP¸ý«L²áÐaY‹ëØM¿š¡ûÅl¸†¥/Ö°·I\0ëœiò=ïè ñz^˜òq/
99îvL­­/#ÚôÚ—#WÂ\(R,l…0Jñ Ô)âä@E Ì,nYÌî¨ZNzŒ*ÏõÓ&w²"¼À[w+tŒàÈøÐNƒØr‘¡ áìqôÑ8–,Bd% p€ûq
ò6Ò<ÜC"Ì‘eø†Ed§˜'ÁA!»qØÍBìx¯‘‘x- l³Ýçˆ3ó="ØÀâ%¢¿ÌÜt¬Ÿ^¯’׶4^Sîo?ßÝÒ7kÂýè7“‡9bÇȯ¢øÕjÛ]Ñßî^¿ü,WKè r霃¿þ¼ø&wÂendstream
endobj
-668 0 obj
+722 0 obj
1574
endobj
-669 0 obj<</Type/Page/Parent 635 0 R/Contents 670 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-670 0 obj<</Length 671 0 R/Filter/FlateDecode>>stream
-x¥X]S7}çWÜÉéÔÆëP ´3@œÔS ›Ix‘we[aWÚHZ ÿ¾çJ«µ³™iši°¥ûqî¹çÞåËAF#üÏètLoN(¯.“ÅÁhxvF»»Æ/#úåô ¯Çg§xÍÆüŽ•´â+øvºœ?ú0¢·´XÁö l-Šðñˆù!µÿîµúÒHº–þbz3§kQI÷ëëÅçƒ 28Ç¥îlº3;¿ücz=¹>ŸMÞF¿Óo4—öIÚðMå’”#Ûh­ôšŒ¦½ã?bø þ(µ´*§™È7J#NÄG‡)\_^ÿ€Õq÷Jè™Ð)j‡àÿOÔŸnîþüxwsû.[rÌïM%ÒΓ k¶ðÐÆ8Ά'û~´¦©ÿê;7£¯  X¹VìN´|!Q–TÉj)­#³¢îæw€êνËò½D.öÖ”%[;b¦”f²Æš»ÿn³`›W&e›°!ÙÆT#S-}dÃt¦û‚•£Ç”eLùAFƒñÉpÌhO=¹iJ€#I”üFø€S¢Ræ¶PâˆT–ÌV1Ï G5*Š÷I,Í“Òbªó—¦'”;añ&ºÍ8¼MÞÐâòöhzK8é<Ê#¼2ÚÑvƒ’ŠßÀ/Á¼{A1+E¥4êj…7–¶
-e¥B"y¼.Óáì‘ôùÑÆ8ßÁغǕöÈûë9‹¥p>‘yLˆ¼ çL®ƒ²U~C@BEa¥sÃÄÜ“á1cyÏ«ÆKµQÚ3ÃòRXµRyH«õÏ!L6Ãz«søuÔ»²ÒJ•Js‰$qäVæÆŽ
-õ£Úš'UÈÖ|8•’“#ÿR3D+c«ì!ñÙœ>)] '´’Úî¬%ÜÒ¨S ~z܆¹`É%}àû=¯•x¡À)) Y é\“|U pÑ·ìˆoD 7¡äé}ÑVp8» Rf)é9íÇQI;$p{…„¢³j‚×Ö‘!—@a@Ñ öz P›ÁbÑ€Á<B˜Ÿ” Ñ á¼´F9þðšp•¤n* ®‚ÉÁ«Pêª
-tÝã+>En<¤o Ej‚Þ)ÑSáŽåÒ éÓFù$kÏw›€¶¸he æ´a€9Ž€T“ÁcêìJ„ÁòM -p"dýjkìãšGÀ+~¯b¹_ÁCP‚4`AFVcÓxÁt…´10Ù
-ŒœœZëЂ|Ĭz€!¡;a$°1¢óÆ* ‹ëeÌZîÊ}ŠBm9VV<
+723 0 obj<</Type/Page/Parent 689 0 R/Contents 724 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+724 0 obj<</Length 725 0 R/Filter/FlateDecode>>stream
+x¥X]S7}çWÜÉéÔÆëP ´3@œÔS ›Ix‘we[aWÚHZ ÿ¾çJ«µÙÎ4Í4a ØÒý8÷Üsïòõ £þgt:¦w'”W‹ƒÉâ`4<;£Ý‹]ã—ýtz†×ã³S¼fc~ÇJZñü ;Ý Î}ÑÏ´XÁö l-Šðñˆù!µÿîµúÚHº–þbz3§kQI÷ËÛÅ—ƒ 28Ç¥îlº3;¿ü}z=¹>ŸMÞF¿Ñ¯4—öIÚðMå’”#Ûh­ôšŒ¦½ãßcøþ$µ´*§™È7J#NÄG‡)\_Þ~‡Õq÷Jè™Ð)j‡àÿOÔŸoîþøtwsû>[rÌL%ÒΓ k¶ðÐÆ8Ά'û~²¦©ÿê;7£WÐH¬\+v' Z¾(Kªdµ”Ö‘YQwó@uçÞgù^"—F{kÊ’­1SJ³FYcÍÝ·Y°Í+“‹²‡ÍwØlcª‘©–>²áN:S‚}ÁÊÑÇcÊ2¦ü £Áød8f´§žÜÆ4%À‘¤J~#|À)Q©Š s[(qD*Kf«‰˜gŽ„£Åû$–æIi±ÕùKÓÊ°xÝæ Þ&ohqy{4½%œtå^íh»Aɇ
+Åoàƒ—`Þ½ ˜‰¢RuµÂK[…²R!‘<ÞF—épöHúühcœï`lÝãJ{äÃõœ
+áÅR8 ŸÈ<&DÞ…s&W‚AÙ*¿! ¡Š¢°Ò¹abîÉ𘱼çUc‚¥Ú(í™ay)¬Z©<¤ÕÇúÇ&›a=ŠÕ9|õ®l‡´R%‚Ò\"I¹•¹±…£Âpí¨¶æI²‡5N¥ääÈ¿Ô ÑÊØ*F{H|6§ÏJèI­¤ö°+k w 4êT‚Ÿ·a.X@rIø~Ïk%^(pJÊBC:×$ŸEU#\ô-;âQÃM(¹Fzÿ „h+8œ])³”ôœÆö㨤¸½BBÑY
+5ÁÇŒkëȉK 0 h{=‹¨Í`±h À`!L‡OJèp^Z#ŠxK¸JR7•WÁäàU(uU
+ŒœœZëЂ|Ĭz€!¡;a$°1¢óÆ* ‹ëeÌZîÊ}ŠBm9VV<
œ
-4ΣæÉ‘1ÿãünB³¼$“¯CDuóM; ¢þ~•r‹PâœÇ9ÇÛY+óÛaŠðˆÞK­ƒ Ž § J/dêÐ3:ÚtñðFâALmm\„ éÆ–½ŸOîÂûIè”÷Ø~Iö
-Êêßp7~i”å<ÀX]Î&6ë•€XxÞòÖ”`ìÏž=ñÞ&0.jl?i8v¥J­Û<&
-hÆP²åKÏõ5 ‚ó#ª†b«¿ì1ºl—¸„‰£>(ßäï÷bÁºÏ@-â–Ä?òsXÈ0ºû—&èši¡rüz†–[ì%©0dP#S6a(W’AQ®Â´£y&[\„HF}VeKλv»¶
+4ΣæÉ‘1ÿýünB³›“ÎäÃÛDÑFÝ|ÓNƒ¨¿¯RnJ¼‚ó8çx;ke~»1LÑ{©uıáDé…Lz&PG›.ÞH<ˆ ²­‹p!Ýز÷óÉ]H¡ô£×%Ù+(«ÃÝøµQ–ó`
+ÓŽæa˜lq"õY•}d ,9ïÚínØ›ƒe¶÷Ü{*NÀ°ч‡Y¬~'#,ÆñÑu¼÷àzôñgÊ°\®ø);;ï™»'ÕñðÝ0‹—йæ•á«Eè™ÝòUŸò’zŽjî‰E‡“@ÏGšÉŒ'$ƒ‘´lV+Щc7gâ°o#g.gò„»xzÛ+c»aaü%y‘ ¸Å:OIWx[€È†—$Ið%«Í£9A*ÏŽYt<e£Aöa+k<ï(ÓþŠh‘º|…õ›÷YžQfé±6rš» ‡bp) ZYS…yã-Áu Éñš8„ ­ ÞÀv²ÞÍDP½Äy3Qkl Å¿Q­½ÔöpÊ{hÂ
endobj
-671 0 obj
-1999
+725 0 obj
+1991
endobj
-672 0 obj<</Type/Page/Parent 635 0 R/Contents 673 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-673 0 obj<</Length 674 0 R/Filter/FlateDecode>>stream
-x•WïOã8ýÎ_1*Ž•hi»,¿´:©”rW ºÍÞj¥J'7q[‰ ÷×ß;i §À-H¥$¶gæÍ{3ã{=êâ·G§}úxBq¶wí¢½nç쌶Åÿt©ßÇÇñÙ)~:ïô©´àx‰c6X~t}L½E œ~rvJQâßw)Š„Nh‘–v%ñ·0¹•¤XÄ+yÈ_5‘Ð$œ“YîÈ’ÏñJè¥$A™´VàÛ“r+¬Ž2ìSšŸ¤)Í%Ùrþ·Œaã‡èï½.µ{ái”8•É¶)%2kÛ!%/hì~±¤E&IYRz×k`п*¤5ié”k©1eÌÙ2Ž¥LiŽS9ˆÚ™XèWƵq@ËæF'ŠV0†5ì/(­+„SzI SPiea©íÏTŽÝ„ø ;Y(ëTLfá­å…q&6i§²Õ?és <¹Ò7¥ód Ž§Ê­\"Mù™|™Ò0ŠªÓ&Ò]Ž¿L)„ìÓÁÆcì@žZzÅÞKšŠl.^…(”êQ¤R»p$6¿8 ›ìZÞ_O2p£×Ev§˜]5£Ž®Ï©‡h˜?ŸNC`[õ;Èiðäæö÷/ÓhJ •Jvh—xí>xÀ~ÏDDkä1!ç;XM":†Hõ»à´òy<º†D*2oè4¼˜Í¾'“h6›~ŸF£ÛýÙìê~üçè~:›¢áKo@ê„b£PÈ0]Æw4HÐ9ÆË]Jj0ÊAÉ+¨s¡
-˜3¬ÔþP…Çkã>ü\`Xf©Îµ·Âƒ'¢ò$yÎ\4…B*eòš]cP}+æ£h,¥êA^ÔŽœsÒzÔî
-l¤êgŸ†&_j¹r4;ˆg¨w~~F·*.Œ5 ‡×E^+Î8u›Í5
-Ë båÊm4zŒX@攬a³7¶3-„JíÏ‹d´*¾ N­ý]†µP–)a­‰ª‡ÝˆX@ksZ *ÊŒŒÕB…T³—ë ÷.()v–VæéÍ“çf7`Á%05Koü÷¨b`<—+ñˆG×:–úQFsÝáIÁÔ(7ºÍ™dé„7¡&¡n0$§C
-S©–°kz
-h Rž–“„6CákÕ3Ž—²ße|7©‘ðsnú„¹¼vH‰Ô¡]-WlÑÏ÷`K£ÿ<û@MO|…xÉK>ýQIt¡ŸgÊÔ'nÍÅ­µÿßzR‰sº[½¿næ+4ã˨YÒÄsÏó¸ 5<ø¶LÙV-Ÿr/
-ÆBલð È7¤ÅnÚÙ)}ŒÂ¶e ú:¶ç‚uÆ¢:Üè8gsc&·HÕ?ØTuŠ0Y#
+726 0 obj<</Type/Page/Parent 689 0 R/Contents 727 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+727 0 obj<</Length 728 0 R/Filter/FlateDecode>>stream
+x•WïOã8ýÎ_1*_X‰–¶Ë–ZT ÜU‚.G³·Z©ÒÉM\ê%±³±Sèýõ÷ÆNÚÂ)p R)‰í™yóÞÌøç^ºøíÑIŸ>(Îö.¢½Q´×휞Òö£xÀ?]ê÷ñq|zŸŸÎ:}*$-x^â˜Í–]S¯GѧNO(Jüû.EñÐ -ÒÒ.%þ&#·”‹x)ù«&š„s2Ë9Cò9^
+ý IP&­øö¤Ük…£ û”æ'iJsI¶œÿ±#lüýØëR»÷žFÉS™l›ÒQ"S±¶RÙ9§±³¤E&IYRz×k`Ñ¿*¤5ié”o©1eìÙ2Ž¥LiŽc9ŠÚ›XèWÖµq€ËæF'Š–0†5ì0 (­+„Sú¦ ÒÊÂRÛŸ©»%
+¿gwJ["¢5ò ‡Àó¬&à ¤ú]Zù<]C#›7|º<ŸÍ¾'“h6›~ŸF£ÛýÙìê~ü×è~:›¢Ë—Þ€Õ ÅF;¡4aºŒïh˜$ rŒ—»
+”Ô`”ƒ0’WPçB`0g"X©ý; 
+×Æ}ø¹,À°ÌRko…5ODåI&òœ¹h
+…TÊä5»Æ ú:WÌ FÑ<ZJÕ£<¯9ã¤õ¨ÝÿØHÕÏ>]š|]¨‡¥£ÙA<û@½³³SºUqa¬Y8¼.òÚXqÊ©Ûl®xý<h ydE–#Ç»„`1%4gîCKP†¥Ë”ãƒ+ÌJ]Þïà4D?z¡Vú:;mÚÙô<øì3²áCȽGÞ²|¶ ‘–bÆ&ËKÔ
+µR „TjÙ˜O¸­g;‡å©ˆƒ˜8ØéàoZfPqÉÙ¤¡ÑñØUdöíˆ^ó³V
+¯¨Ðh<s­•9J( l@ßH¥€‹ÃæpïÄ<Xjí·¶·ñlpîAjYxxž!M‰D¡—žn Já+!ʷɲÀ5+ÃKô4Àêۜȹl³ÉhtìE¹c”Pæç†oš[Ü 't+4ÚiAýÎsÅpJ³¥±®Ù-¦m(Wf±àNåîsÌy“ÏNjËù‚Àý÷µd÷bß¿»½³âêËíùçÄd(¤¿½³t<¹¼ùz5¢Ïì6Ëá½ £ßÇ“¿‡7Ñè~2ŒÞód4¹ú¿kg³î³Ö(7Úèv^(íþ¦±cpÉsS¸Ù‡¦ˆšžÓõ|¡×•Ì«IÆטjXÂŒUO–Z s+L1±
+ÃC@JXkb…*Âa7"ÐÚœˆŠ2#cµP¡
+£¹îð¤`j”ÝæL²ô›P“P7’€Ó!…©TKص=4)OËIB›¡ðµê‰ÇKÙŽï2¾›ÔHø97}Â`^;
+¤DêЮ–lÑø`K£ÿ<ü@MO|‡xÉK>}¥$ºÐ¯3eê·æâÖÚÿo=©D„¹
+]„­Þ__næ+4㋨YÒÄsÏó¸ 5<ú¶LÙV-Ÿr/
+ÆBલð È7¤ÅnÚÙ)}ŒÂ¶e ú:¹lÏëŒEu¸Ñq8Îæ$ÆLn‘ª°©êa²F
/=¿­yüOqéã‘°5)Ót
-Í¡»NÙ–õFL‘ HF'mu 屑 ]ŸU——ÞÉI§G'ç½Î ÏÖÓÁíå€î
-ãïËW&.¹Xø;!ïk÷NN±¼}ÚÇ¥=9xãÊu|zŒiݯêõy+îvìý Ì£Åîendstream
+Í¡»NÙ–õFL‘ HF'mu 屑 ]ŸV——Þ`ÐéÑà¬×ðl=Þ^ é®0þÂ|eâ’‹…¿ò¾vop‚åí“>níÉÁW®ã“cLë~U¯Ï[q·ûsï_A×Æ#endstream
endobj
-674 0 obj
+728 0 obj
1741
endobj
-675 0 obj<</Type/Page/Parent 635 0 R/Contents 676 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-676 0 obj<</Length 677 0 R/Filter/FlateDecode>>stream
+729 0 obj<</Type/Page/Parent 689 0 R/Contents 730 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+730 0 obj<</Length 731 0 R/Filter/FlateDecode>>stream
x•W]OÛH}çW\%›• $!å£o@Ân$HYânµ’¥jbÉ´öŒ;cù÷{îØqZïBiilïç¹çžü8Ò
;Í/œ?¾Ð lŸÂVûÇ
¢Õº´”$–©¤ÂÀ’ˆ©XIJ³•q…£Dá+£H:—”iºîS°RŽ¾Ë5á¿RÇÒþ|;ÐÑ‘ÂÃŽá0ÌD´RZ†¡[»Bfa•ÖJ]DFÖ¤Nx$í“‚ý0L…΄ækiÃ0Vd²O4\;„ Œv+a¥kõ©´ßÊGå
@@ -1174,72 +1273,70 @@ lÈ2*Jn¯ÞÉ÷b™£1~áì
šG ßcùy¥@+ÊUý\y›5=Õð•ç¹‰Ñúu{›¯ û†Îƒf¦í98P&ñ}ƒ!H´\Z샨£°
²ôyòMÍ‘ðwŸŽ—ªÇ5uWŠÈ3*Òå,]¹ü&#!¨J†yE›ü>óUõ-¤nN¢?÷*ÏŒ+}¼õœïhÆÅaÍ'<‘·w· ·Pã2úÎXGïÐq–¼;…8¯¥³Ø”à•KàýU9xøV•¾ãÙ¨”´² …—a|Ï,yÁÝël—Ooc=ÜÚìzbAcM™ió:ŠÅeÞ¥ß-ì{^óÞðô¬Ï߬ñ¥wçÛïâòîê’î­ñ]™˜¨dnðXçôª·Žª×z¿dëñÙ3Ìf{Ã~ ᯃ§Ç•Ìendstream
endobj
-677 0 obj
+731 0 obj
1654
endobj
-678 0 obj<</Type/Page/Parent 635 0 R/Contents 679 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-679 0 obj<</Length 680 0 R/Filter/FlateDecode>>stream
-xWËnÛ8Ýç+.ºrD¶\ÇN t‘ôhÓ ìA1@6´DGlhR©8þû9—¤YMÁ4¨a‹ä}žs.õë$§ þrZLéÍœŠíÉÕêäÓêd’]\ÐóGs:ÏgÙŒf |ŸN³ j$m°+‹9~Æ•|Ša¶°‡~KùŒVø_àKÖ'´*FÓìMvžÑë›%}µö¡­_¯~žŒ?Ï(Ï㉳é'F—qÏÝè‡2¥Ý9º6^6Fzº[IKÙ<Êæî59|Q…$åÈW’ä¯V=
-i<ÙMx@ͦÈ'“|Œ)¹Zj£dI7W7Kv=¡³üM6e—w£鯮¿/]d”baW²!çm#ë±8¦¤ë[e‰‡¾ž*ÔÈ{å7®÷$(%3p\hÅ“Š!¯>ÜŽaÎIßÖT Gk) Ý«G|®–Â!=#c…b%ØÿeôŸ%ëÓ9Z‰´V–
-k6ê¾E@K±] ò69nCJ‹«·±ZÛ2÷T‹©!r2R–œm<R–Hßywì°:7rÛuÆŽâ㮡#Ú(-ßu{ßr“s:›žÇà(ýƒSG®­kÛxzOÿHwlæŒÏÌcŸ^N¨uÿ1#ô …y!eB.]ðÿ+ÚËÁ2’@(.ùqV6ïééé)ëýÿs‚»
-ˆIåvåíd+ǧGþŸaHzMÐäŸÐlñö™ê=>÷Ù;›gs$Ôçï,£/vGë¤d¤lZSxeÑ>¦A…%À£”µ¶{PE¬5Ú‚~$MÉ¿»b±  XKm°zœ*›Dñ£mbmå)}[v”¢­(*e@¾ŽsÜWÕPÇéHUº)ù.´< ^
-ÿýñv0(Jxõ­¸+
-eÉF?¤|ÚBC®Ö˜G§Ô Ù§®<0
-*©!þ!ÖMdÈõÐûald˜q0
-l8åÛ
-$„*†ˆ1:²ÞZ/û C²;Û<€B‘©ŒíWi›0ÆBä«çÉq÷zØß¡›Çc'UëôeøÒN¡›,íèˆf·‰æÀòòL¦8 yÆŠd´ä¢Ö¢xÞQ! —¦±-W ˆ“¯Zñ`ñe#ñò
-zJë–™éÂM×\ÆbâQ(-ÖJ3ðL›R0HõùaŸ˜¤xñxàë~÷¾1î d§»ú_šýáîæ J7ˆ5ãáw‘ÆǨíºÐ0§
-žª\Kù='Ûð;I!8mĵ«ƒ*(Aø…€öÒs×’eWáæ«€MÉP‡ÞðJ‚—º(ªãÏéœÏYNóyß–—ß®.鶱<Ìè£-Ú-Øòä`Îâö³ÅožåÞ<g‹n¡aC>ãS¸ÿuò/9šë©endstream
-endobj
-680 0 obj
-1693
-endobj
-681 0 obj<</Type/Page/Parent 635 0 R/Contents 682 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 29 0 R>>endobj
-682 0 obj<</Length 683 0 R/Filter/FlateDecode>>stream
-x¥XÛnãF}÷WæI,Ú”us€}¯g’Æž$V0»À¼´È¦Ô1ÉVºIy”¯Ï©ê&E3Ùd± ‚l6ëzΩjÿz‘Ò5~RZÍèfIYuq·¹x·¹¸NÖk:¸~¹Æ!|Ì×+|ÎfÉšœ¦‚_À3Xé?púêýœÒ”6Œ/×+Úäòüš6ÙäIU[E¾=¬k<)*´jZØjöª!U–öÅSa]¦sò§:ÛÛÚxÕ[Ù‚¶Ï5•ÆóË™³Þ“³mƒÓµn^¬{öÔzSï`O³ùå⚦éM2C “7NW¶ÑÔaóoè œªt£™š_"_m“ÌÖ¦Ô möÆS¦Z¯=…ੱ„Êy¡´™*©Rž„
-³cˆC¡»ô–ð òz­«’dêFï
-äÌÖú’¿f¥VŽýÐo0""GÞT‡ÁD‚&ôaH§Ui~Óù(Ó +šôôpG ˜Æf–6ð ²?ÔÀÁn~ÖIR$<ÿP*ÖCáë®nÀàìÈûDé”õa” •k¼ Š;µL€›|ò…=[ï t
-HÑá·F-S°\³Í"¼ÊÉ?þüñ#óÀaÀiˆê%ä >X+)ëbI[üíþÝ=ëja»Ò“¹zS©Á¬]‹:ª²Åd•’µ%ôxG)ìqô¢²Üª~Põ.n‡¡¾¾A­â2’òFòÓwéõž™³ŽT(Ñm²Š¿•ôÄûËp[¹™sg†2öoÛvÃÊé‚ùb¥ëœ!ü íÁúí:Y¾¶~^Œ$ lG]@cO?t"ð.-
-ÜÙ€|ƒ 7"7àñûOŸ7Ÿ0i \aèð ª,(”ëF™ÒCÏ%jS×Z”u¢è1È›«Rl\WÚ”Þ. 'z
-’MÆr’=Sz9Tx¸õ"î7É×
-¡Þ¡ q/ª_'PÊY(Àu¬b¯ÝÄÙ«#ÀËA`¹³‡üÓÚ
-ü“9 qâ ΋®™˜^Sejì¶h_?ã¼ ñ&$úÉdõSM£«æ•ëÈOØXž;,Ž¼·Ö#¯ÕTâcÁ<<ºÙ1ª«¯®%'zÙ›, ñ ÄÅÊÀ`µU[,µ{›9 d*ãß3{À>Ô·«ó¸¶’áƒáµË C
-qÆnœÑÁx¹äÐ)®7Îuå‚Š[îA粟q£,ûX‚ŽVZa_‘z½°úrœÞat'ÆfÀE¡ ×ê©®‘ºô†]Fjç
-endobj
-683 0 obj
-2036
-endobj
-684 0 obj<</Type/Page/Parent 635 0 R/Contents 685 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-685 0 obj<</Length 686 0 R/Filter/FlateDecode>>stream
+732 0 obj<</Type/Page/Parent 689 0 R/Contents 733 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+733 0 obj<</Length 734 0 R/Filter/FlateDecode>>stream
+xWËnÛ8Ýç+.ºrD¶\ÇN t‘ôhÓ ìA1@6´DGlhR©8þû9—¤YMÁ4¨a‹Ô}žs.ùë$§ þrZLéÍœŠíÉÕêäÓêd’]\ÐóGs:ÏgÙŒf |ŸN³ j$m°+‹9~Æ•|Ša¶°‡~KùŒVø_àKÖ'´*FÓìMvžÑë›%}µö¡­_¯~žŒ?Ï(ÏãgÓÞ]Æ=w£Ê”vçèÚxÙééFl%-eó(›»×äðE’”#_I’¿Zõ(¤ñd7á5›"ŸLò1>¦äjY¨’%Ý\Ý,Ùõ„Îò7Ù”]Þn¤¿ºþ¾<v‘QŠ…]Ɇœ·t¬ÄâH˜’®oI”%øJx¨P#ï•CÜp¸Þ“ ”ÌÀq¡GL*†¼úp;†9'}[S%­¥4t¯ñ »Z
+‡ôŒŒŠ•`ÿ—Ñ–¬Oçh%ÒZY*¬Ù¨û-Åv-È[Øäp¸ )-®ÞÆjmwÊÜS-¤†ÈÉHYr¶ñ•²D*øλc瀭й‘Û®3vw ÑFiù®Ûû–›œÓÙô<Géœ:rm]ÛÆÓ{úGºc3güÎ<öéå„Z÷3B¿PˆrQ&äÒÿ¿¢½±,# „â’gaóžžžž²Þÿ?'¸«€˜TÞiWÞÞ›låøíQ‡ÿgRÇ€^“4ù'4[¼}¦zÏ}öÎfçÙ õù;Ëè‹ÝѺ))›Ö^Y´iPa ð(e­íTk¶`ISòï®X,((ÖÁRì„g‡Ê&Q
+ñ°ß„.º$
+¾ø} ‘1dkÙÎÚc ‡ÀR[C%´³§º‡TéIžÀ§Ê!ØUª¨D+øŽ!G»ÿ^< §Z‹¨q%sr‹<“˜Gº±>äÔ«H”•qâ÷oJÒgÿÀiR²Sû¾~ûò}¹Z’Ê Ár$ ·´<å _!(\É~ÕÑguËE;zCúb¨Uב…
+ªöLÈÔÂp€è0Ä€Š„ "pŸ“«Ònäï8”È–AÉÓ΃¬ó aBœQ Œ‹”Ñ0•“jä÷xŒãôà«3 ±€ªpõ^t=pú#…ɳ­AvÙm¨@¬å @yØÆã™{àÍa^BÂ6Ýv”†Øcˆ |ʧ¢æžß9";ÆyÎ%-ÙˆÇýÐu¨:V ¨®õžìÚs‰"ßÖBß#£Öç‡qw8kK\­ÇŒ>Ÿy~–Ÿ&°~ <ÖâJê S‡±’$¥ŒcÀ„Ý pµÞ…çc&Ê~P^ Ï²Q"clë³DßJÝWÜnk¯¶îè< Üo-v8iVA'o « ™:p)¼¤+?Œ0Ö/ãáùð"®†,þÎæ\‡àÔì^±Q ð—E*Ü:PXVÑSZ·ÌNÎC8üàHÃBi±VšÁ Ú4ƒAª/HûÄ4Å-Æã:À‡þîÖ1î ‘d§»
+J{Īñð»ÐçcÔö@_ è˜SOV®% ýž“møfRNqíÃê …J J¾F! øܵÄdéU8=Ä*`S2Ô!8\Lpµ‹Â:þ|‘NÂù|‘å4Ÿçñ±¼üvuI·åFmÑnÁ¨'s·Ÿ-¦¸–¸Î3œEÆ|ÆoáŒü×É¿¨=ífendstream
+endobj
+734 0 obj
+1695
+endobj
+735 0 obj<</Type/Page/Parent 689 0 R/Contents 736 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 29 0 R>>endobj
+736 0 obj<</Length 737 0 R/Filter/FlateDecode>>stream
+x¥X]oãF|÷¯hì“X´)ëËîa}ÞMX{“XÁÞû2"GÒÄ$G™!åU~}ª{†frÉá òr8ÝS]UÝ£_/RºÆ¿”V3ºYRV^Üm.Þm.®“õšú·Ç×X„ùz…ÏÙ,Y“Ó´ãð »tX}õ~NiJ›6_®W´Éåù5m²É“*·Š|s<ZW{R´Óªn°W}P5©¢°/žvÖe:'®²ƒ­ŒWµ±‘ÝÑÖṦÂx~9sÖ{r¶©±ºÒõ‹uÏžoª=öÓßl~¹¸¦iz“ÌÃäÓ¥­5µ›ðöo訜*u­™Š_"_n“ÌV;Ú™B'´9O™j¼ö’§ÚÔ*«å…Âfª RyÞ$$èF¡‘½`>æIªÊ‰·rú×FûºÍŠNÇ,ôn§³ÚœtqÆj“ï‘áÐýÑÄQhl½æS2HÛs€ËyÞ¨ãí–ÀR¢&m€‡IåŽG[åhà…—¼-©‹uôùÃãÓ(½¤mS“Á¶)Ž¦
+%ÉCõý¿+ÒÑÙ“ÉqðF‘…6=x4P3ÁPË
+µÛ9[†Ã 
+*Ïq$©;×%Â
+båþ’yIs¾Ù®Q`II¸gi× ³6³Î¡j(Žð„(ºª ((ÿ)P©³ƒ‚
+Þ/ÍZhOFÑýãÓ%ñÒ«÷Pºˆrr¥ëìê`!¡ð Uëä’*oÉV ?3¸¦Åú‚Ú‡þ[é_½¿¥t„¾X@ß¡Ï’EBOôÙT9kÚë¬q¦>“=2.P/ø°/QM;³gˆÐíñ–ˆ ñz­Ë‚ dªZïAfìñ:{(}Æ^3Í
+¬=Ä]eî|d•÷RURž= fwQDÀ»(t¥÷ú
+T8"QMª P²,øPis]´éEoù2QÉs¢zÜ||8¥_¾!Pvf+}É_³B+Gµþ
+êד#oÊcÊÆd¢ÀFú0ŒÓª0¿é|”éŠOzz¸#&Lm3ËDÄ
+0ú~·0tãęʗÙ#Z}0ÖÂ1l’üƒá‰Êîjf5ŠÀ³ óV€î ÏTäP†ëÚb1V–ámCvíktŠ.—`‘¥VEŠ6VŽíô#¢;3íº»î
+ë¡ »‘÷}ãq ™…&2K‡†ÓYÝ ’VKô1ùþߤ³âQ®¿â·þϹôyšÊÄ&×÷»Î~ã%At
+w¸_…ù¡
+endobj
+737 0 obj
+2022
+endobj
+738 0 obj<</Type/Page/Parent 689 0 R/Contents 739 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+739 0 obj<</Length 740 0 R/Filter/FlateDecode>>stream
x½WMoÛ8½çW |r‹F±ÇNÈ¡Ý6ØštÝ´DÙLDQ%©8þ÷û†”äXMŶ-RÙ"çãÍ›7“G)Mð7¥Å”Nç”é£Ë£OË£Ir~Nûv8vzšÌiv¾Àól–ÌÈJ*pŸ¦i2mß„Cá lá%ô?`èäjJiJË~çç Zæáý„–Ù¸qÒVBK*å“,ß,ŽN®fíé1ÕÂâ—–”#+¬,w„sURæ2Oøü„Ž§sD¶Ìǘ-ÞÚw¸çÜÖØœLEwןÿ"·s^jG¦ð¸­Å£$xÆGÒêYæ” |Ê6p—Á›Kˆ–¸ÔRTŽüFxRÁ ")Œmݦ§@
Ö—.ÑV®@+kŒU¬h&umÍ|£«`ƒí±óåE/;¶F]¬Éð!j´ ²7¢]ŽPZûSÏe&—¯5¦FuìAô‹ÞÐ8äï€ÿÜsH À ÂSl®hV
g0³â” ÚYËùÎ
¯è(öÔǵ5M Áq¿@¼ôó•[}÷´ÝwIo!(-s$*‹¤ÑÛ†íºÑíz:Efg‚︰®2câ"cãÉì-æhƒî¬áâ ¬s d¸8ÒvÈšóÞ²U îå®—ÃîùübùŽ<Ço<Ca•ñ ¦#©Z<ø„àôÁÀ8{~IêŸùÅKˆNŠ.DL„H"×ÎÚóv'Nç‹$¥ùü4ÜÛ÷_>¼§¯Öýûh²
endobj
-686 0 obj
+740 0 obj
1525
endobj
-687 0 obj<</Type/Page/Parent 635 0 R/Contents 688 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 34 0 R>>endobj
-688 0 obj<</Length 689 0 R/Filter/FlateDecode>>stream
+741 0 obj<</Type/Page/Parent 689 0 R/Contents 742 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 34 0 R>>endobj
+742 0 obj<</Length 743 0 R/Filter/FlateDecode>>stream
xVïoÛ6ýî¿âÐ|ñ€Z²äŸí–I“t»›C7 ´DÛl%Ñi;þï÷Ž”,ÇHV` àXy¼{÷Þ;~oEÔÅoD£˜zCJòÖõ¼u;ouƒñ˜šr…‡.ûAŸú㾇ø(%-±´KñÉ›¨‡}þbá-8~ Pxק(¢ù’ŽG4OÝ‚.Í“ö´ »–t?£ÏªHõÞÐdN©Î…*(Ñ…-u–É’¶F+rKg²Üá?÷¢+üiJ‚r‘¬U!I$‰Þ––ºäÅ?Í¿¶ºÔ‰zAŒSÛ3‘/ ~Þ%UnŠ¨þGÕû:w~݉‡À&òѾ&ísÿ¨Ší#™ƒ±2'ù(“­•o«Ýƒ*z›L¾Øcö)uJútóîŸÉÕý-u¾ÒÍôþêÃÄ=>“@JÛϤӉǨé˜Ðƒ‘¤—(YÊuêÄV%Â*¤šjiÐ¥ï[….â jZH|ÆŠ"eJ…z<àgôC—)¾X}†*ªR«Q¶*&‰‹~ ²‡H¼oÒ‘)-®™¥Ìµ•ÇÞß¼ ˆæ\DÝÈDØ~vâ"ÓÉ7Aþ›RîP$ez¥ œt Ò\¢cç ­’La[”Š•!³Mք쌴–Ù…õªØ‰ U˜µÌ2.¹âPxÉ8
Ÿ°)”6 }O}ãjª´ '•‡€ÿë¤U+"bYüñ¾Õï ƒ74ŽÐÂœú£XåŸ2š± »xäþž*å
-fV–Ú¹s½óÀsên £Qkˆ;f˜Ÿ‚È“>—ù¨xî
-' ç%<TÍM¢Ã=:‡l'“ú(Ôa¢Á÷ºüvÚSURB±¼”NpsCHÜ%î¯Yµþê7u¶Õ•âdÂLæaÜ…Á×—/ȆÔÆ–ÛIJ9ÌÝ NO .ÆXxÑàªéw=ÓÏ .
-èMŸÓk`:Qà•+é8WSåâ€9 w
-Akô‡RÜ«Ëf ÞfÔÐ{…ÎyAO,)Äx†ÚMö°Á%ÄÏ©G&2e T¼š¿•c9PxæžË»æã…+†¯~C!æS¸fM”B®"|ŲQé+êäT¯;£6 Ã_Ë~°ŽèÓW7^ 7|K¿lö¿VAk-4ù\÷ÄRx9´¿=.ãgn¬Ž®|¥çÛbÃŒÙÕýõ}*õW´”nt²…È­» rÞ¿«ã·µÿß ìúÈÍÝR£GEÊ¿·þj¥µendstream
+fV–Ú¹s½óÀsên £Qkˆ;f˜Ÿ‚È“>—ù¨xî
+Í#–†.éOy¤^m0BJeXÄB~!f5$+ãû¯x?3Õ§3Ê`•‰^^Ž9rPe)ç²H¥S9;\UU6ÕÞKl­Ò‰£`ÈX}™ÜÎ?NßO'/Õ¾àú%…Fçr¿¥ UrC?2_(¯”‚§ ÈyIUs‘èpχΠÛÇÁäg>
+u˜hðý.¿uöT…”,/¥œÆ\çW ‡ûk–G-¿úMmu£80“ywáïõ]Ä ²!µ±å6±ì@s7‡ÓS‹1^ô·jøÄ]Ïôs‹z`Ïçô˜NxåJ:ŽUgT¹8` èÂ}AÐý¡—ƒÄêò€¨·æ4ô^¡s^ÐGc
+±žáƒv“=lpqÄsjÄ‘‰LÕ¯ÆoåX¹çò®ùxáŠá›_ÇPˆñ.„YS'¥«_±lTúŠ:9ÕßëÄΨ Ã𷲬#ºÅ°ÄÍWà ßÒ/›ý¯UÐZ M~'·=ñ£^í/„ûÁøÙ¹‡ «ãE„›ßèù²Ø0cvu}EŸJý-¥l!rë.ƒœwÇïêømíÿ7'û£>rs—ÔhÄQ‘òï­")¥Qendstream
endobj
-689 0 obj
-1424
+743 0 obj
+1423
endobj
-690 0 obj<</Type/Page/Parent 635 0 R/Contents 691 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-691 0 obj<</Length 692 0 R/Filter/FlateDecode>>stream
+744 0 obj<</Type/Page/Parent 689 0 R/Contents 745 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+745 0 obj<</Length 746 0 R/Filter/FlateDecode>>stream
x•Tßo›0~Ï_qêöÐIÃByLÛU{é-H}©49Æ$nÁN±IÖÿ~w’(ê4 $ØwßÝ÷Ýç·Qc¼#˜Å0IAÔ£«|ô-Y–ÁñѬñc ÓyÆH²¾O&,…FBI¸ˆiÜÞÎ!Š /1{šÍ /ºõ1äâ2fS6a1ƒ»%<)]˜½…ûî¸Ø(-a!„iµ³_ò—Qx›ÒqŠèyq™o¤•À¼‘o­jdFWï°ßH K^¯8( ­Åÿ܇ÂÔ\i
endobj
-692 0 obj
+746 0 obj
736
endobj
-693 0 obj<</Type/Page/Parent 635 0 R/Contents 694 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-694 0 obj<</Length 695 0 R/Filter/FlateDecode>>stream
+747 0 obj<</Type/Page/Parent 689 0 R/Contents 748 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+748 0 obj<</Length 749 0 R/Filter/FlateDecode>>stream
xW[oÛ6~ϯ8@6ÌùçÒ{h»õi:Ä{ Ñmq•H—¤â¸¿~ß!EKV4,›
(5ÅsûÎw¿Íi†sº]ÐÕ åõÙ‡ÕÙ¯«³YvwGÝËnñcF7 ¼–w·xÏ—ó솬¤ öÎh±¼ÊéÓõ"[ÆOP†¯°p|AÓôÓ[ZÌhµá›Û;Zá;VòÉÇRì¼´t•ÑG£7jÛX¥·ôåýgÚK…rÞªuãeAx¿Yýu6£ËÅ:&¹ÔÞŠª:ÕB‹-¶ˆÆ—XU¹ðÊhÞͶçØζ/¯æð’WÙ<£{Q¯ ]°±¸uIóy»uqËß“nê5Ü3úC«grçeíèa"·ïè¾Ñto*a•{xsAÂÑ^Vÿ…DÏx>ÜÿBQ+xɦ~Sºy¾ möÔxU©ï’·¶aÍRXýR5Û­XW’ÞŸÄCôÙM%Ù<|~xÍ9”øyC;kžT! ˆ p¸ °`¬úp žXéLcó¡íÜ
˜fíÒâÌÌCÙ…(
@@ -1248,11 +1345,11 @@ xW[oÛ6~ϯ8@6ÌùçÒ{h»õi:Ä{ Ñmq•H—¤â¸¿~ß!EKV4,›
â|µŽ3ŽPV“i<"ÏåÎæPÜ™ST{¡ïDý¸Ûë̵{ŽôIcR½åSaŽƒç:ÖÉùàåå<›¥`prrýœw8›Û%%´ŽöÏîO©ÅU ~syPïiÛB{ÊPzhCààZ^#®Mðè¥ðy87’%J-öÄv<5»—ÜC-õü®…ª^J¾Æå6_ä@mœ¥uq=€ ®ç¹i´oÍØœò8–ÃðyUËó'rãA÷èÒÃÚ½|¦g,Uã’ç C_v ¬
myzéðùñ<†ÇÌæE[)æ8²èíáç«`éL~…óÔ»Óø’Kä¦bиQyfïÂ@€sØÊ]%òÐJê8Çd(ÃÓˆ>
endobj
-695 0 obj
+749 0 obj
1567
endobj
-696 0 obj<</Type/Page/Parent 635 0 R/Contents 697 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 37 0 R>>endobj
-697 0 obj<</Length 698 0 R/Filter/FlateDecode>>stream
+750 0 obj<</Type/Page/Parent 689 0 R/Contents 751 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 37 0 R>>endobj
+751 0 obj<</Length 752 0 R/Filter/FlateDecode>>stream
xÕXÛnÛF}÷W PQ
K£v¢’aãÍÞ©ê9sy*¡gD(«¨òäeÒ†9•+ŽWƒøiÍËR±*¶¤ IÊA0T^f2—ˆf¥p.ʃ® ý^¨ÇðgUÔd¶’9ÇKžÙò|*s×™$„¶4z§bws &¥;i,T왳`ÊŽgˆ« è}E‘(h#)Òy©2/–2RÉcŒø-Ž÷Hà¸gœ?ÑL—쮚dA¦.
å öÊú³mÖ{9èµ­J³‘QeÝÁð BÚÉÜÇ´ ÿ©Ø~ Åù°]’•Ò¹ë¨îRDÀçSi=#-²Éðßced¨H'N~Sbþ&ÅÊVFmjPЪ¹æJžÒx¶æ\Cß}ÿáæ~< &|€µ£¿¸ÏJð éòÁjp…Ì9pqºþÌôV¯àŸÙ©È¹Ò1)ê*¥Þ‘_jx·õ<E7¡BÇ2‡¡(ÒuQµwÐì¾AZ#öŸ i›R+åå–t}eÌ™XúnÆU™è,Ó{†0J#üLÚ¢©TTgÂWx,Qg¨:æáz·âmK?6SŽ~¹7çü_ÂŽk¼ß€“8‡™Ú„VFµQÕÁÕJã5Bù¹EÙTÄzO¢F,ž†Ô e;)­è´¶^(íë@ïÁë…róxá“Ü6É>ÈÞû ÒáL>
@@ -1263,21 +1360,21 @@ K£v¢’aãÍÞ©ê9sy*¡gD(«¨òäeÒ†9•+ŽWƒøiÍËR±*¶¤ IÊA0T^f2—ˆf¥p.ʃ® ý^¨ÇðgUÔd¶
‚×Å–àœ[9÷”GrûÖ7X&öàj8ÚH‚(ˬ!ÍWαNµ0†‰€3Þ­¦©Ø1Ýh95œ(QÃpMÄ;ܱnw…*p®B æFè‰Ýw7Q¥ é¶ÝÎXoxwÕ,µÓå
{ñòzê÷¯‡›ûw7ôÁèOXå趿 ò½±?>^Íð…K<zAqÌWslpîôÌ-u@Õ¯©®*endstream
endobj
-698 0 obj
+752 0 obj
1701
endobj
-699 0 obj<</Type/Page/Parent 635 0 R/Contents 700 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 42 0 R>>endobj
-700 0 obj<</Length 701 0 R/Filter/FlateDecode>>stream
+753 0 obj<</Type/Page/Parent 689 0 R/Contents 754 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 42 0 R>>endobj
+754 0 obj<</Length 755 0 R/Filter/FlateDecode>>stream
xUÁnã6¼û+Þ­°b$Ù–=8ÍîžRlk{É…–(‹[ŠtI*^ÿý)9¼Z1DÓä̼7óôï,£­sZTu³ÇrvÿiIYFeƒb³¦²¦”¥iJe5ß û*+A/óíÓî厤&g¨á–¸#²¢î+/&ÓÐIÖ‚¸œ´ð'cÿ!ÞûVh/+ã-oY±»òÛìc9ë‚å´Ü¬ñœãß
jJ”-GJËœáqBjÁŒ¾lŸé£yèípàÖíY…/¯ -”…¿?ϲ"
÷U8‹X‹†÷ÊÓ^´üU{ƒ
ÝPÛ»Aj(g¥’ãÅw› £Õ9ÂâɃ6(×øj¤„Ã?bô§ñ(iË}€F¦òu(øj±ÂgG‹,eëq5Ú;Å2$`§¡S\ø™À]lOà|bØ=8¥â…иS$஫EÀ®±[lÞ8ÆÝÉ»›A¸ž}7™·J`­Êž¶p#¨vô;Åd#Ë¡Ñ¡]c%“àÍîaÖt¦î•€•¹º87£ ¹×q
endobj
-701 0 obj
+755 0 obj
822
endobj
-702 0 obj<</Type/Page/Parent 635 0 R/Contents 703 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 49 0 R>>endobj
-703 0 obj<</Length 704 0 R/Filter/FlateDecode>>stream
+756 0 obj<</Type/Page/Parent 689 0 R/Contents 757 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 49 0 R>>endobj
+757 0 obj<</Length 758 0 R/Filter/FlateDecode>>stream
x¥WÛnÛF}÷W Ї*€D‹º;@
ØIÕä!(Z«ŠªKr%nBrU.)Eß3C.))M‹ à˜ÜÙ¹ž93üë.¤1þ…´œÐtAq~÷´¹ûqs7V+ê•{<Œi2›3š­–øûa…?KM;¾C¨é~Aü~ý@“1mvоX®h“È9Þăש:Tº¤Y@o­«L±'EïM\Zgw½1®*MTW:¡µÉô‹ÍÇ»1&3(<Ÿ]¥sªJ­Éô¬òH±
ó™(Wqj
@@ -1287,19 +1384,19 @@ P½¢çÇ÷O_•ÁÑ4AôÜmî6•ìÜ×ìXýÝcÙ²º‡$sÀW,õÝÙÛéÑ9B¦²½køìFi·³œé„äh0Í°nŒú
¡ÆèšO¤ïœKØæÆ2va]2›hv,v™ÉM³‚JðÑõœ“ª#,þ® u´&Ÿ%H°GÏ
°gå‘ÁD–,áÒ½pE ó¦%›U nd~Ú²Í7~ùoOjâ7[ÎÀMø¨J“ ¿ÀÖñËÝßgc!uendstream
endobj
-704 0 obj
+758 0 obj
1534
endobj
-705 0 obj<</Type/Page/Parent 635 0 R/Contents 706 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-706 0 obj<</Length 707 0 R/Filter/FlateDecode>>stream
+759 0 obj<</Type/Page/Parent 689 0 R/Contents 760 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+760 0 obj<</Length 761 0 R/Filter/FlateDecode>>stream
xuTËnÛ0¼û+æVˆUKvý8&MskÑ¢.zñ…&鈉Eª$eAß¡$'¨‘Z0 ˆ\ÎÎcùg’cÎ'ǺÀbYMîw“Kä9vG®¬6kìæÙ|>ÇNN§S‡ #š±Ô]up'#q2ö% :ÔÎؘ^Ò2¬Ž­ó/¥ð: s Zaã-„UQøˆŸ¢:ˆìf÷<™cV¬²%1§¿‚öÎâáf¢e1äÉh¤°°®ÅÁ»6膛½&+n&ûôgí!"öü…„³ß«cÈp'¥ÁØ' èù"+z"#à|¿xÀ~Ú–F–u­Ï PÆk7ä4RÚÛß
qáúªÅ˜íåvËD¿—mZÙßFùj¥›*Iùv#ý¼ûz‡ïÞ=sñàdSÑM‘¬K\gCÕl(›^ÏÂr½dzsŠEÚÏn~Lþ©pendstream
endobj
-707 0 obj
+761 0 obj
687
endobj
-708 0 obj<</Type/Page/Parent 635 0 R/Contents 709 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 52 0 R>>endobj
-709 0 obj<</Length 710 0 R/Filter/FlateDecode>>stream
+762 0 obj<</Type/Page/Parent 689 0 R/Contents 763 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 52 0 R>>endobj
+763 0 obj<</Length 764 0 R/Filter/FlateDecode>>stream
x•XMoÛF½ûW rb
Ñr®eÿªÅ?ÆÇLy½íJ²÷e®ª½Cç4‰X5r[¹–"®i)Ô|g-Çàì)GëÛçÑ´¦,Émônñ‰Û±5¥¦C§`¡Ô\I„§z»¤òÊX Á«UÍ”åBIZ·'Œ:ÍùÓ×'‹õ,]ÓòêºZÑâjÎû«’î»3\^I˘ýh{o¡« Qµqh™ë­êÊ–žUÙé˜>ÕÊ«J3Ð9O„2vUÑÅâ"½9_ãîêj2†uœ‰¢ó»E˜Ó4l²¨SVRÓÕµó­|0#¥3Ì ª¡Ö–„+:§-Z̯ßâ‚ø³àl€ßV•ì
É*²ÐµVm  .ˆ5§1ÒÁÖÕŒ&ÿp™dx?Rôó»¦)ÝH]¤,ˆ\¬ƒÚ{ׂëF3Å=þ‡ž5§SÓ_cä'É‹GéºË +ø‹YO&!ÞYí›ÂÔ“‡_–üE?â&ÂNËQž@£X{ U¯êIÓ5xô£Ó  G5Àˆâ[”ˆÅ¿ÐeŽÎ…Ñ`&qœ£n¨ºÖÊ“ Ã
@@ -1309,11 +1406,11 @@ x•XMoÛF½ûW rb
zö:|ñâ…]àµtß ð
1p6¦=’™6²é²d»Ìá]áÈíl¨ô$ÓJ󹕀 îh?)ÅÈÌGmúE»ZE¿÷ƒóè¦7÷·_ÿ¸ýúø(PzL~cub;o'±^‚LcP›qˆ'ÁÐ4_F ãQ·ï?~¾˃½D;Ÿµr3˜ãx~bLB•\£šË¶&_£hüÖˆÊC ¹³²¹M#?Êú'>sÝdÞÔa¥myFÉWì¨ü™sì+Fp¼ÅðËû­zÓ‡ÛckXŠú>…­^5ÍÎùœr5ÇæýøöHåcÑbÝ”B8¹ŸÐà¤#ìyèC Tà€AâŽ÷½Ãn–¼ÜÁÆ,†Y¬«ÌÆC\³’×÷ª8Þ$ p.èTè×
endobj
-710 0 obj
+764 0 obj
1797
endobj
-711 0 obj<</Type/Page/Parent 635 0 R/Contents 712 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-712 0 obj<</Length 713 0 R/Filter/FlateDecode>>stream
+765 0 obj<</Type/Page/Parent 689 0 R/Contents 766 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+766 0 obj<</Length 767 0 R/Filter/FlateDecode>>stream
x•XÁrÛ6½û+vx3£Ð’lËN/Û±;î$N«I¾@$h¡& €,«_ß·
ÚhóŒOnE¢\
ÂöŒDQè Z[iÂâeVªJYg„Ó†j£^T!Ÿä›ÅßGz;=If¸<NuUÉÔÉŒÈi|?9K&É)᨜&,­¯§+Q=IÄ" ±IcWª&å8Û’®h©— B§¢@·aik,I›ÁíF–ÚI*õºâü~ìj¢È³Lh±$ŒÊ‹P…X’#ª…q|3‡Â‡ßÎ\ã™jÙü¶E;fD­L×F¹-aݳ¥ ~rQoýŽJ”[º,
@@ -1328,11 +1425,11 @@ Np#PPF¡sÉ ¨¶o¿\ëºrwòî-÷s¹;9{IìA–»iB·|uG‘úuezì´Í:P\€C»¦8~2z]ƒX ¸[óÌ
¢!–èÔ0ð{6­É¯½À3èøö¢1ªÓùy2ÅŸ
ØKáùòpùñê’>ý7ƽ×éš †pà&‡ò6l{>Ã_²øÿ½OÏOñöô_œñix·þqô©B6¦endstream
endobj
-713 0 obj
+767 0 obj
1783
endobj
-714 0 obj<</Type/Page/Parent 635 0 R/Contents 715 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-715 0 obj<</Length 716 0 R/Filter/FlateDecode>>stream
+768 0 obj<</Type/Page/Parent 689 0 R/Contents 769 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+769 0 obj<</Length 770 0 R/Filter/FlateDecode>>stream
x•WÁrÛ6½û+vtRfÙRlÉéÍ©›i&Ý6ê´_ ”“¦õ÷}»€$
r:ÓñØÖˆÀâí¾·ËïgSºÄÏ”3z7§¬:û°<»øxEÓ)- <™ß,h™Óåäòò’–Ùx¹ÑäufëÿZ²åÆ鬵nKv•ñÞØÚÓFyª-9­Jª´ªM½&25µØÿ×ý§Ž÷Ö•9)ÄtºqÚëºõo–ßÎ.éíôÝd
SjÊ
@@ -1341,20 +1438,20 @@ SjÊ
N"“:G–¿]Ìð&›ÿïkÍÕâ
ÇÈÖÙœãð?Îþ²ãÓcendstream
endobj
-716 0 obj
+770 0 obj
1613
endobj
-717 0 obj<</Type/Page/Parent 635 0 R/Contents 718 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 65 0 R>>endobj
-718 0 obj<</Length 719 0 R/Filter/FlateDecode>>stream
+771 0 obj<</Type/Page/Parent 689 0 R/Contents 772 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 65 0 R>>endobj
+772 0 obj<</Length 773 0 R/Filter/FlateDecode>>stream
x¥XMÛ6½ï¯ä²°«•ü½zHФŠ4mãc.\™^3+‰Ž$¯×ùõ}3¤$Jv¢E€$’Èá|¼yóèoW Åø“ÐbL“9¥ùÕÛÕÕÝû1% ­6ø2_.hµ¦8Šã˜VéhcËTÓÚ”:­my¤J§ûÒÔGÊíZ¿^}Åæi»ùv<¦Ø>úT`“¢}¥KJ3“>UäÖÎüÚÑ«O¿½êoQmIívÙ‘ê­&Úé27UelQÑg•?(ÊÕ®’oæY½¦àÍl0¦ÛdÙ >þî±´ûÝÝÁ–Ùš¨¼;ܽP]š]¦J}CªX³É‚&Ë(ÝêôIŽH·ªxÔëÞ!È‚¢Áfõ¨LQÕ²öÁÔ[#S°ïVWœ>É!%ü¿¿~½Jæði>aÏrZŽÛ‡Œ>s øÉT¼îRÏYðö‚ 9%ñ2š{[Íöþyå#u5õ'­•TÕ“d®5"î‹‘¦¶#Ú©RåºÖeDoŠ#IÌõVÕD]jdÎåK^)¼(l-9A]®“k¤©2Ug†xQ¦75}+N¶…S™-€
IYká"*Ù×]iŸc¥[g¼ETjóªÍƒÉ˜»¦ÞzNG1(‹[±ChË;>Û´Q©ß‡ðÁ4¥]ïS½ŽhÎáú6TwRd¤ÙyQ[Ð!¨&[À sËË}¿[8¾x±Xø9ó³j>‹!”©ü랺ÊÇL3!™ÿ®_j·0cÓ¦uCgÕõ˜N"¨.ÄAx~NSÁcß›¶Š§8@(dè+¹ÉÓô«0@ÓåRà.ÃÆ=´1O—÷½ˆ›)ÕòE܆ð@n§Ü–Ú²ÔÕÎòÜðLã[å<Í ÏI,gH
"S¸SŠ7Ìd2]gW[ðS“UC‚¨j¾oŠzä¾å«*Kë–Y)¢8'r«0 \ãòh÷¾ÏNíw|‰awÀØ-çVþÔÍžo¾–um&—.GîžNN¼@€pΔ¢UÁNÅzP‘ÑFËW—ÕUq]{E§p{DçÔ&Ýgªôw*()‘B"nø
endobj
-719 0 obj
+773 0 obj
1658
endobj
-720 0 obj<</Type/Page/Parent 635 0 R/Contents 721 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
-721 0 obj<</Length 722 0 R/Filter/FlateDecode>>stream
+774 0 obj<</Type/Page/Parent 689 0 R/Contents 775 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+775 0 obj<</Length 776 0 R/Filter/FlateDecode>>stream
x­•MSÛ0†ïù;œÂ qãHÚôc¦Óii3í‹"+X`K©$“É¿ï»ò®n.1’vß}ö]é÷$¥9þRZ-èü’d5¹Î&o>-)M)Ûbår½¢,§y2ŸÏ)“Ó+O¹òÒéÊÏHºÕFÐ"™'K
…¢p¢RA9OïN³G[ôÁf‹KìÊò©tJE•ðO¼gNýÊÖ:©¨[·¹­çÚ)¬;¼~x°¥=?,¨Ï´WNQíUŽ*|P"'»Wk/kÏ{
ìNXËÇlt±\& Z®Wøâ ±¶ »·”¢Ffw‘2”!½‹d•Ðg:Bm íu(bR„É…Ë[ž[]*!€s P(v·Óæ¡úÒÙ‚»3mz€=ž¼­TWȇ›ÛAŒžî§¾– O'hANdMy8¹?ƒ`£»oŸÑN¹J{…žƒ b= e…öm?Òs”Ô•؃Æ€†hÝ$­Ù–Z|…½R¦áÚ¥¨Å«@ÏZ4å+Y;D¹¥} Ð8vh”ClqãˆX ,¡öDç¼£h/øˆöQ°/ìžêáSw•R@ÆRd9 )•÷D°gÌf÷F9Ò ,KêbôX#U0Éåù虾ôÅCÕHèÎ Y¨ ¥lõ¶l 5Šð44PáCf¬Ü,µ<G4bòÐ
@@ -1363,974 +1460,1087 @@ c¹eœ2šz0€?9VO‡ÛËhbðá
ÿËZO@눾êD2“C ã4„=í™<9îC´|‹æý‹®QpÚL(u3‰@b‹»†0&¡ÿ5×<a1¯4@{ÈÇŠ?ÂxèÞÖ›[ð`8ê2‡'0vž
ÌÌ8Ù{a¤*ÿiª¨”Ç 9îe|{(¢„GIIàßð<ÙgåœÎse†—ùyúÚe¾nm—^®~$ñÃÛ«¯×WôÝÙG¼IôÁʺRB¾ÙYð¬95kŽMÿÇå¿\-“5žܼ‹5çÀsôcòY.jµendstream
endobj
-722 0 obj
+776 0 obj
853
endobj
-723 0 obj<</Type/Page/Parent 635 0 R/Contents 724 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 72 0 R>>endobj
-724 0 obj<</Length 725 0 R/Filter/FlateDecode>>stream
+777 0 obj<</Type/Page/Parent 689 0 R/Contents 778 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 72 0 R>>endobj
+778 0 obj<</Length 779 0 R/Filter/FlateDecode>>stream
x•WËvÚHÝû+j‘9Ç$0†ìœ‡g2c;N '‹qÔ@g$µ¢–ÀÎ×Ï­~ð2™™ÛÇ GwÕ­[÷V?‹©Ÿ˜.Œ(-Î^ÏÎz×Jú4[àÎèrL³ŒúQ¿+içÍJT¬iÑ}­ÊF•Kš¶U¥ë†TISQÌ%Q=¾œ}³+ÅC·RwG Öꌢ8¢÷eSë¬M¥K÷äâØ?™\òs¯åR•%o°QÍŠš•´ ÷©–¹FžûÝŒÛÞ}¤ZKú¢ÊLo Ýͨ
q2]‰R™Â*ª\²ldÆ»÷©\tk%ˆn§ÝO÷oè¡£"Ùe§÷>ÜL§TŠBfT©J>¼Œȵҭ¡µ¬ R1¤äãÒeþD>8¼s#Ê[Qn£9Ú6yn"1E
Ü K‡š-tM
 w-IvíðЩå» [»ÃUë%uVMS½êõ@8¦¡‰ŒnëTö¥ŒJÎ.û‰ßbr€1ôgHžª.Ãà›ÂÓÚFÂÅ&Ë:p4]‘04mDݼÕé=G*ëszW¶ÅznÏ9É&"pþ¡3•¨ÖõXÆà ø:PL@7šD±ÿ¶ƒn8æRï+Éíôí¨—¶Ü†hZH4ÿba²2*TZk£M”ê¢wû@bbº–h|,Ü؃á€8 ’ŸuâÕý{ðçøÜŸ?˜D#¦ù~k1IÓTCo4+^N7Ê _@Ó77؆‘-8¤çßdŠ{'¶þ_íÃT×kBh~† ,þ½•­$ô§ªÚÜ(jÝ.²¶F²tA líYn2ш9tÖX,M…z¦–ßôœ>ü¿¶›ŒÑPÝ€Ül%Q°¨8—²$£ .äѤº\´,±$æºmh³[ šÈB*¤€öB}p]¢Ä@³¦RÓð‹ðŒï­ª­äs:–5;å (9Õ³z7ÅUilHy[/ë+m¬Õé:sඋp[-j]le*H$çŠæíòhgù>`ƒïì# …ž,D¶ïd‡’R
:‘ÖR°ºv^h=ÖjÖUÿš]߆rË$tj¸ï”Í0X{»Èш®©·Ø.'¥~Z6
endobj
-725 0 obj
+779 0 obj
1754
endobj
-726 0 obj<</Type/Page/Parent 635 0 R/Contents 727 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 84 0 R>>endobj
-727 0 obj<</Length 728 0 R/Filter/FlateDecode>>stream
-xXÛŽÛF}Ÿ¯¨##Hê#ÀÚÎÎÂv6™Y,™<´È–D›d+Ýä(úû=UݼH#g7<ÓÓ·ªS§ªN󛈦ø?¢eLÉ‚ÒòæÃÓÍߟn¦“ÕŠúìƒ)%Ód² Ùj‰ß£Õl²"«iË[0‹sº°þþaFQDO[Ši±šÓS&óSzJGO{í4”U¥®µuw”WiÑdyµ£·O_oîâ°wt°y…%”Ùü?¶y¡ýŠöôQÎ)سÑ|L¦V§¹ªuFªÊÈíMSdT™š°‚/[«#6ý×Ü$ëédM‹%\§’fÉr² £‚ÙQ8³Œ09t§q¸$¯¨ÒGüpµ*
-Uç¦r¢c©40+¯¶Æ–òw2ÕûÜQºWÕNßLÓZhõ~Ö+´€;‡vÀªÅª³1XÕ#/Ž
-FÙñ“óx2ÚÌæ` x¼ñÔ¹6ÓB0¿Š”¹YÔýLŒÓ[âÝ?¬)š1Ípcv h¶˜Ä“hB­†ÇàÄoB¦7¿³Ù==§4Ž—ìÛ§ŠŒÍ<ø®9Œ­%Í¡0J¸i¶tÁG!$øË,Wclñojªm¾k`¤’.S³߳Π··Ø"+d ÷ôð›ÀlÎpfæiö¨Êºu`£R…#gH,åó ë‘)'ÊKö@U5=û,zÃSÌ*§íKžJ ®oNDÿΫÌ}yòÞÊzd)“ò`ÍKžáˆ€8ý
-l®±ç·­‡ñL
-tÕ4vP× s µ ÂÁÁ·¼nYˆúdHÿ 7®ž\þêô` -oîøb>õj+Öh\ñr…l*i¾žÌà ´Ìaˆ—kɹ3…Ò6ßÁÖ’VóîÐï¶Þ^½.ïH:Õ$ÝóL:8ˤ03Ø\ßP‘è@“»ø‹&*ô‹.x¥‰æ^aÒ_„?kÇí¢ooÍ!CE
-ÐEñ*'^ÌÑâKŠ– vQF­‹¢—"7{€˜…Ž¼’oµ/ÆíɃ³JŠ§Ñ$œ<c6F³Ìž‰ÊVÕ´¦^ZÓvŽçÑüù-!*4‹Ï…WðŽ¤_em¾¶MÄûåZ³û“•hÃ(Z1¥dÔ㔬/´!7u«ÿhr«Y2ÉÕ-:ƒ€{Â*©?o8ÆìlÆ1ênŽ1 ŽÙnö*v÷ó ªƒ—¦úJy^*_ק͈5¶®2ô
-fð„°éJ0­á()©ýC3<}\³ÉÐ[ÒÚX¨uÉŠ8É“7¿K Ás äxÓ¤ÈíP±¹ð’Vø“D\\@ ñVá 4°c
+780 0 obj<</Type/Page/Parent 689 0 R/Contents 781 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 84 0 R>>endobj
+781 0 obj<</Length 782 0 R/Filter/FlateDecode>>stream
+xXÛŽÛF}Ÿ¯¨##Hê#ÀÚÎÎÂv6™Y,™<´È–D›d+Ýä(úû=UݼH#g7<ÓÓ·ªS§ªN󛈦ø?¢eLÉ‚ÒòæÃÓÍߟn¦“ÕŠúìƒ)%Ód² Ùj‰ß£Õl²"«iË[0‹sº°þþaFQDO[Ši±šÓS&óSzJGO{í4”U¥®µuw”WiÑdyµ£·O_oîâ°wt°y…%”Ùü?¶y¡ýŠöôQÎ)سÑ|L¦V§ªÖ©*#·7M‘QejÌóâcksĆÿú›d=¬i±„ãTÒ,YN–aTÐ#» W–&‡Î4wäUúˆ®VE¡êÜTnBô`,•FåÕÖØRþN¦¢zŸ;J÷ªÚé;¢“iZ­ÞÂËÚ`…(`çÐXµXu6«zÜÅ€ß:riëç|g½N§l$CÑo—ß°}DfË3ãdÅ—£dÃ瑘™´)uUO^Á(Û#~ÒbOfBšÙœ7ž8×fúpPèåW±ƒ27K€ºŸ‰qzK»û‡5E3&nŒÀ­É“xMè£ÕðŒøM¨ôæw6»'ç”Æñ’}ûT‘±™ß5‡ƒ±µ¡9F 3Í–.Ø(t{9€eãjŒ-þMMµÍw ŒT²ÁebV`{Ö™!ðáö[䄬
+2bEžæuH€T(ÔbÊí•g èGú[0;,#” x8LÓ Ã9Øxß8{_˜T÷Ž“á>œ|ÍÚÂY“ù†m§«îl,È®©ï.Ë2m¸ù½CÞ!šUÊL,]Þve
+™p8I²Èf© \¦pÛ'_®šÆê4c¡ŸVc¡C88ø–×- QŸ é?áÆÕÓ€ËÿC „ åÍ_̧^måÑ+^®M%Íדy„–9l
+Þ‘”àk¢¬Í׶‰x¿\«sÖb²mE+¦”Œzœ’õ…6ä¦nõMn5K&¹ºEgppOX%õç ǘÍ8FÝmÃ1fÁQ ÛÍ^Åîþa$uðãÒT_)ÏKå+ðú´±ÂÖU‚ h÷àf×Ö˜¶-˜:ó…)êÐ#‹œv ´? Úfm±XÕ‰!á/mKê–i"~p™«C¥‘ª†ë|)B1l´Ä«w¯šq«@Þ7õÞ°ÖøbjýCxjt 49Å«%…F·åÔóÎ ´‘÷‡eÝ™/áu1Ð
+w"ô¹‹@aq¥õ~°Câ>Z¹¡(3¥Bªú¤——;ØIæS}¯º^”¹*¸¿œp=Z ¤FΞQ¸î'êGSÕ: w⎾fÇoÿèè}ä¸ AD) Yôž0¡¼0\ü¸ª4W¨$Dýç^má:EGc¿y‰¢«—ÜšJRâ¸×¶k[ÁÖÓ_YOYÀ° føWiö"¶LƒÆÚ'¬Úð}¸@ŸîJ¡H56h¦'ovȾ$æ²%|aI +xHÈ(d3h%³‹²×‘Z‚è= :p€e†ÇžCéÞ‚3ÐQ(‹Sç+ÚÖ€Á•0`1;3`8Æìšß<½yÃ1ÞK(¬Ñ`v8Æ,Êûpïÿ(-.—ž—J:¾÷óGú D¸ ó& >^.AŸ]uƒŒ1¾ zÇ¿@{¡Ö_V0†¥•ÁHy¯²’:ê¢
+fð„°éJ0­á('©ýC3<}\³ÉÐ[ÒÚX¨uÉŠ8É“7¿K Ás äxÓ¤ÈíP±¹ð’Vø“D\\@ ñVá 4°c
˜tAq°îÅ›R¤O8¯­¼_ôŸPý{­µåÐB5l4‹ xg·¼™¥cŠ™C$àÇÜíX‡²¿
].Z,‘ ´y{>¾ÿüá=ýÓš¯
-Ÿ0äSˆ„Ù//cþ†0ú«O³%ù’eÉ”÷" ~¹ù/)¹¦endstream
-endobj
-728 0 obj
-2102
-endobj
-729 0 obj<</Type/Page/Parent 635 0 R/Contents 730 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 87 0 R>>endobj
-730 0 obj<</Length 731 0 R/Filter/FlateDecode>>stream
-xWmoâFþž_1E•Ž“ó 퇊¼õÂ÷R5UµØ ìÅör^;U|ŸÙµ 8½HmPx±wwfžyæ™ñד5ñjQ¿MùÑÉåüäf~ÒôÚ¿%+ühR¯ÓÆ{wÐçï=¼%’–¼7qLù†åÛ&]Ð|‰£{8jØÛMšûõß7‰ŠÓÿ8ã¿·ó/'M:kÁÕ)ÿûûìS§ýyÐ+~ãógª}Rq ·†Æsú6èÕ¾¿w4î6¶î½8o\ ^ÙÚiï&ï†åîc³Ãp³?O^=á~4™•‡ãÓn³Ù|u÷drµß\Ù=Ñ[™L®ìþÆí9µZãNßëÒY{àµÄá|~3žÆ?MoÞMo®ir3½Íf¸:cÜlŽ’6ý•ÓHç^/Ïqë"Ç3Îq㶛›kÓy¿ƒ‡IŤ“@&”jò³$‘qîH Šå–‚D=»»;ÑLD AkmÒS"KÒKJ·Ø©ã@¥Jdž¢Ì¤X”&™ü‰}AÏÚ=k¸>_K¾¯³8¥ÌH¬²»cé§ü5Åí½ÊOÏØD™
-Ø^“ëÊ“®$Z§Åio‰m5ný<Ú³>¨ âõÇv¯oo×bÚ¼N¯……ç(‘EÔmu£ûVìðºŽeü¾,þOD Ž'’ÑÐ2„ˆ:Oî¡}xsÞE&¼ÙW« À–l;¹¥ê¢-\˜B^#³¥ý)ö›=¥ IBeR¯
-g§Óòú@÷Ür$.Óü°'²ÄÈSøÁFº‹Ü[š˜T…!m´1Ò¾Å`Óo©Bi08&[*Á :Q¸º±éš
-EòlHP£Ž+¤©Ì±M× >ÌZ$Ø72ÒÒíM"H‡»7´ØQ —" S{ÜW,Hy¡uƒRL[­ØRT$¶W…þ!ö%q鬙Ä>ì1
-S"¿fˆ)(£€SɳÂrH•1ÚWvõqô§dT´A‘†z׋¦Ÿ‡¬gFÅ+èÊå±®“<µmê?JzìóZG]9[&:Â1jÞõšöù¡‚nxDSm,¡ ÉSÅ›±T«õ¤XkÔ :T»ßQ¾–&¡@ök6öE‚f…% Ô^Øž¡öK<]´§«±xV+¬)Ä¥6á&&ãy^ &BhŸG¿!Af­3¨–‘œ
->
-vQõr¬Óø&ÓÑx~3¥ëéè#>†‡£»áåÝ Ý>Liþndû(Ï.¹Zäëñ©{tÚ$„
-2¶±ùk¯líÂ)¸»#“‚P+{! õÖ‚…Ɔ N×™¢! ¡hy"P?‰„ùPb<o´1cäÕd<¦©Œ66‰°÷¬ÐŽÙ¶IôF&) "—Š(1ß®•¿F:˜œŒœSµÁ"ë6…Gèão-É$ÁÁTY¬\+oÜP3òž~-­lASÙWC¾ˆc4f4¹@™M(v2@‚™h9¬¿ŠÙH_-P-øy¯ŠM
-Ý–Á©Ug,Ô:”IÅç¬û‹×Ú*ïV`Ö
-“ar[Ykn’('*K¶ãYØyåP¡Ñ\Šb (ÒZîò€þźÉüu%¨ ¯î06îA¥ÒÝháTÆÅB{á<-Á6?Ôvñu¡Jæv§u °}Ô½±ã bg¹cMÖa;%q:´k8yÆ’ìEòºäM¿ìWV!yd±±m›%ÊM†¢òõH<qI±„Ú^jÝÄ2תlÓd·™ç<BV€+ñ"»ãqœØ²iþOñ,…~Vº³Dnqn^E |4?™»Çƺ‰Fꥻ\ÎíøÆí _Öêõ=~ŠçG4úÙðþrˆ&¤¿p©^k?ã<€é®¹ågý¶}fú¯“E·ß… Ø­û…¹æýÉ?n<üendstream
-endobj
-731 0 obj
-1856
-endobj
-732 0 obj<</Type/Page/Parent 635 0 R/Contents 733 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 96 0 R>>endobj
-733 0 obj<</Length 734 0 R/Filter/FlateDecode>>stream
-xµXïoÛ6ýž¿âl˜ ÄŠ$;¶ œ5m3´I»í
-³gÐÒE!cº{l”=wgÑ"½·à%Þp4ÛçqØðáŽԪ‡´–YÖýZ¨uA ­V¥Ç6-ipÕ½7pMAŽ_ŸRÐoèà‡Þh‡/ôzMVe©th™Ð h•ß&tã¶õ®Í¬nÈÌê\L³bZ€9`¡S# ŠWð¨],ïe¦ÊL¢K$<ù ü°´ãKA°à³i°ÄÑÑ`޺Ȕˆ÷ã›(MïÿféàPâv>XÂpàZTß|b3FårÍ8I¬¿®…®í‰Gç,5ö_&”+þà„¥Tâ&ÏN¶Û7Á`ètÒ!3s
-ƒ‘7lFMljbxŠÉv6@$ÙP›‘’98e>²`š‹mŸ
-ƒ®¸¶È6Úãœz¿ÁãltÁ‚¶âpÒˆƒƒ¿P—Q-ˆ¬‘Us ‘ÊsQÄ–ã›C­ìì(N‡ûtǾ5—)+ëOs ’BE©¨¤=©[cبÄ:­–¨“©D–á„z[“s‰Ê2µfRá*åƒÈËÌ2i©Ö°ï
-ò ²o‰ ]ÊøŒ1¿öé”s  nxbï¤ó ñLgã/•j¡¨û´RÕ¯FFØ»JdC ÄÚ
-\Sj¢3Z¯§(”Ø…Þ åƒ ÚX8‡"`»†ÖªŒVèâPL®KY4N]<Ì;œrØ
-mž¿€Y.8qžð Í+ŽKw·su ⼓zÒ³åÐ|Ô ]`mú“=n/ºó^³<j–w‡à‘ëŽçá`hçÑg ‹Ã]…}|æ48Ý ¸¢·†9zŸpg²=ÆìIŸ Øsxk{ŒFÂG?Кm¹•é£+Ûîm1ÛclÛÙ7ȶÍpqÁ áÉNBØKFœâ k×5)^Ò£¬Û¼ÿm1æfjÓ?Z¼vâÎN\G}”ÛÓ!>rêì¿4R;ßNG¶0o_M—h5yÆÝEC9÷bï3½Ûöù˜MÎB˜|;]^ °¡Éí`Û¾îžoíÖ>b6ï¢Ë\lÞX̽j’Dö÷Æ{ŸFuS´õù›¾|…WÚRÜ#.Ù¹Ù
-™‚׿›ÔB‹*õ•ìbÓ–cFÊ×éÒ¡â¡y4•Ì©N¹:›œ„µ’óXVѱ݉r/ç8EE ë˜GÃI žy9.v_éYQL¶OE[`ÛÉѧ%9õë”3 ­rD¡nŸ aÖ.õ[ªÛ×25èÄì‹ÚŠêQƒÈõæ¬Ò¶CÞÒ²Sk¤66Y;ì­ƒHò7­ð¸˜B67Ý{ûD…–¥à—t÷ÝP?[-˜Ð.¨Dw¯(SG˜1(oάu,À‹Ê^)ÿ
-endobj
-734 0 obj
-1839
-endobj
-735 0 obj<</Type/Page/Parent 635 0 R/Contents 736 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 105 0 R>>endobj
-736 0 obj<</Length 737 0 R/Filter/FlateDecode>>stream
-x¥WMsÛ6½ûWìø¤ÌØ´(Ê”•KÇùpë™ÄueÒC. IHHB@Ûʯï[€ h%v;ÓIb‡Âî¾÷öíêûQJcüIi6¡,§¢>zµ8:»šRšÒb…'ùÅŒ%“ñxL‹bdª*j´£R®T#Ë Ic´!½¢ãË¢ÖÒÙ(Y“²d¤k ^$§Ém$•’Kˆn´“¸#œ¿ýbñ']à‰²¤­Q“†é4Í’ rm^Q‡ÄLGJ>È¢uÕ6¥4!šÆ ŽsóÁuÓÈ¿b¥9ñ…àRFU;d4jE¡[$É1Þ.Ž¸z¥ü¿¿¥é,É(ŸæÉ”jJó,9ï®*úÈ¹é ‡Ø-6ÒHÎSP¡ëm%k
-qâË)ãëêÝí"}yâ1Û‹ôõŸïq“®®ß½Å/é
-@A]îuk!±Êj²íÖ‡í¤YÈ­W*ß$W†´b€½Úqÿ‰¶r'¤›jw]7{Nù0]Ôè‹ã
-lâ€)ãvi{gùöY<WÔ” +(¾Ã¾Ñø”I‚Sè‰DïáïýFr©•^«BT¿*€S÷¨uç\5 VhY/~D8!* Ò¢¤¥¨DSp? 7VBU¤¡1/ûAi×+Úépz@ #ØßÁÙK½•Õµdø­nN<PgW0loÏ#[/“B7+®>•Íæ
-âÒK'08—îÕdüæ­
-½¿Ì(ô7€xˆëÌ/눲íA û,¥sÞŸ—$/¤ùO’œ$ô:âýçM ö¶£ö ….@<ÎC€({–žà……¼”; À<¶Ð[É-æxÇî§/£Þ—"Ó‰{ðÎ;€Íï[½Eì=¢Û0ÎàTk^Õ÷"ÿò†qÝÝøuŠ‡N v 'ß~ À øú‡Únyh ƒ5¡‚CõT›0ž°R•´Xž$D„·¯o®¨»Å¢áo ì=•¿I”lvKl¤€5Jj¨¾¡Íýfð¬åç¿ ûp¬…Íù~{T›ŒF¿;–‰%O’î™ß~¨;žêß[ ·-éNa u(–B,·TËb#eklŠôËùºQ>þ‹[“G¤¶Áð
-endobj
-737 0 obj
-1730
-endobj
-738 0 obj<</Type/Page/Parent 635 0 R/Contents 739 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-739 0 obj<</Length 740 0 R/Filter/FlateDecode>>stream
-xW]s7}÷¯¸“'2 0œ—Žãĉ'qãÖtÒ‡}»/ÒFÒB˜Nÿ{Ï•´|¬=Ó™Ú Öê~œs ¨ïM†t1¦|}önvöavÖïM§tx±K|èÓÅàª7¤Ñt‚÷ƒ>¿·’|§°³Áóç·# h¶€ùñtB³"œ÷i–w”£B-•e¹#§–ZD%裮>Òv¥òåBÓ\Rípè m¤U‹ù•ðT‰üI,%f«K#
-¾›"÷u0éW’Œ–¯gßÏúÔ\ ÐYѱr!­Å³JÃŒ¤»ue•öˆEx1Nöˆî<â‹ç·ã‡´ññOMJ$ž›õZjöbò+\t2¯­ò;ÊW2"Ž¿PNÌKYôØB@xŒ/€`Äqˆw Šç·W4%̆Œï1jãÞEoÔ£‡®ƒ'¼2šnJ%u+@¤=dÌ;÷Æ•^»ŽO[¹¶PzyŠ:¶˜‹ÓP%'P‹8€þDíÝÍn §ûéë·Ù×^åÚÀ-T°•—5C·U~Q ÎÔ6— Å5NfÜ.E'$ß<úRÌ`EºëÖgí‚ h{oC€&OfA̠ЕJKz¶$—[UA1è<eÙôP ì>Ž'é°‘ŸíA€‚gŸ!SAK+*(Y”ÇK»H B鞸®þ§ëîp
-‰ìóbl^‚$ë@ðs Ùkª¬Ù¨8 ZK¡1?jiwÏtÑÔ0³(A6A‚á9*,(+_ñM é²O• 7!qZ›B–¤3#meYòïÆ9cÒT21)‰
-rùm=§£
-\¢Aâ
-endobj
-740 0 obj
-1527
-endobj
-741 0 obj<</Type/Page/Parent 635 0 R/Contents 742 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 108 0 R>>endobj
-742 0 obj<</Length 743 0 R/Filter/FlateDecode>>stream
-x­WMoÛ8½çWÌÞ –-ÙñGo ºéöÐEwc  Z¢-¶’¨%é8ù÷û†mEIEP}‘œyïÍ›ñ¿W)Mñ/¥eF³åõÕÝæjr¿¦tN›=Þ,V¸(hšL§SÚä£E2OèzóýjôUŒpJ7ä4í®éAÔ;AY2MžùY–dÉ3:¹ŸSš†ýÆÙû>«'‰…¥pÔÕ8i¨0xf¨8ÈZ6ŽJa)/EsmG'I¥n%©º5úIÛkR ñ)„[ÃûhCFVRXi?Pãã¦4NgøGûPECòYY§šYéŽm0åxC{]Uú„ØWTÔ
-WÚ„þF’ÀŸ+%µÚZµ«$Ù\6G[¬2t9õ# HÇ ãs¿ìéE©ÐÔhG…´ªÛª‘'zTM¡O–þÜP
-Ë™Œ{¼ñI
-Ú UYRŽè¤@Rat‹ìO¾dŽ–éì-öBè¼PTÕ0a­Îâ) ÈÈêöÑopbHì&&]ƒ“:ÞIÛi]…De5Š¦ˆœ“Ù‰üÇIH,×5„¯vªRî…y à3bb5×#W#gÓÈg‡*þ~)ÆwÅv“AR(‹Ÿ‰m±èj¬$`"ÊY'>jI&‚¡ÌLgF¥¶v¡y@uð³½f)/³žÊTêàk!C/ïÖÈ\²É¡ÐÃyºÒH¨½L>o{á¥#è¨C£70ÕäÕ±ÀwCfýúX(^spUf6úªF£›ü ¶Ù:é7¬±¾ï…ÝÏuÒ©å§e~ß/Áüh Ûµnª²º:rSˆEyË:ÚPª‘D6ŠÛo\j‘aFOCyÙ3Ø ;>ó‚Ç~ìÔÀ×æFµ(Š!¨¡¼BŽç²@‰ç•B°áùŘÔÁ·¦Íßýç?€x”¾ ”xhÐMX+áß\qóô”R¾úû3úB2¥ù|Ž¨)]fɺ»«è;ð`…9psžÏo|É\šqé\ûq2áŽÈQ$ÂÏ%|I#Ý„Ï¿l寰\µé• ê–ý/dþJgQG=EÓõ,™ÑxáË÷6/ݱ9üö&URÅÿ4OSôÞùj‰ëtKt>Ÿç¥Á`üXÝ â/Ém
-+?òlï’w‡Uã°,ü¼øõ_ó%[¨/šÙMì_Wÿ ‚Ôendstream
-endobj
-743 0 obj
-1405
-endobj
-744 0 obj<</Type/Page/Parent 635 0 R/Contents 745 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 115 0 R>>endobj
-745 0 obj<</Length 746 0 R/Filter/FlateDecode>>stream
-x•WÑnÛF|÷W,P`
- škÜuÊ~£ŸhFWqxªå‹¨6è¢HÔ³ÜÓB}WÜýàýN°õØ[Gø
-Ù€¸ý1g ¬xxS$JÕrSŠíï.:Ëë+‚^—l¹ðœëý‚°ÏqÛ²cnpyÓ²1a“%‡”¡=:Àc§×ÉSl-w$ì:µ­8Ù¯bû  Öø/ŠÌÎ4~õŽT¯©ÅD„tÛ°1ñ<ÉÝá6•ìRŒéýú믙¼R­»šiduj3šÜDã‘$–´3¶A&páÁ rc9 v@|…¸>LfáŽ?=›ÂñݧÎñ¡ØÉÙËß«í):Á‡J!%m-–Kr"ö¾¤Vì—$³¢qàmu¯6Àø¦ @ˆ+Ýê18{oì§6pÒà*ûûR9ZŽ˜¬Ázà ß뙸ÀÍœæ3ì¿Š¢ùÔèi˜ŸÙ ÞÁ»
-endobj
-746 0 obj
-1500
-endobj
-747 0 obj<</Type/Page/Parent 635 0 R/Contents 748 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 122 0 R>>endobj
-748 0 obj<</Length 749 0 R/Filter/FlateDecode>>stream
-xW]oÛF|÷¯Øú%jaÓ"eKr€ ðG]¨´VuNäIbBò˜»£eýûÎÞiŠ6š¢HàYÜ]};ˆiŒ1ÍšL)-.¿,Æѯ󗘿üñëÁì4Jh:ŸFc*)>Fóð[A÷üÐÉÍ)Å1-V7Ïh‘¹çÇ´HGwòÉRºÕZ’ÝHúqñ…“ô£ æÙ$:Ý9@¡×tr“„,Ï~"Ú*ýu­USÓ;NòÀýä´0GT䕤¼rþZj)Š¿ÉÈÔæ
-/*ÒRdoØ“›³öØå=N¦ÀºÈF½|týá–sö‰èÞ' ²ä†ðŸ ¨D)I­ÜÏ™*@l% -é‹Ê«¼ZGGgI4£é˜ù.)‰“(¿ÞÁöx†?öùþS5T6Æ’(Œ¢xô´×B#¯•º Þ‡à³8:ß—Á^â€l˜œd•ê]m©Æ€ŸÌ|¿FZ&ÜÓÍ9vÒ„—ž{¦%¬”¦j45Fj°ªøácê8ž@¬hhÀveóTXP ßw úx}ñÛYƒñüžMgx
-Qáe•Ñv“£E[xlÎòÈšTfL·WH£é,
-µmej‘O
-H`Ú {r)yMå¦ÄKÂê„sdJšˆ\SHO2ÇÓš–}J…±ºc¢ ¼àóû»{Ê„KæZ0´Ê¡îWdí¬§Ð»ÐÆ»ÂØa×;CÒÒX¡­wF_&$´4È·FCXk;gŸ”9Ü‘ÍY^c°{ZTØ„Îíî¦Áß4™Lp
-bŒV~ûŸã(ðÛ?9?ø%̵1Fñ¥s+’1N /4·#ö7'oöÑ­¨vTKUÒï1a¾¢¹Z®…Ϋëœe{‡h]ÁoPê2/
-ÝÀü/¥ÝJ鯔4×iS¢ÅU
-}±DAÅ·&ǃ‚]–CœËL¾,˜ !÷»øÙþ6
-Δ
-ÎBf›Ûtœ¨öÐõÁ"¢‹×¢¿P/£Wæ©’2ã\µt¿œ$ì.éåS°Çn
-}`¤½dZ‰¦°ØµÏ5Ñ=€~ Ë«À4u­ô‹Ñ•öòý‡{ÇÆÝâ·ÛÇØM@o¶˜j4³€²Ò]7†{¶·ª9r!Vp
-_¡à1wßÉA•ÎQBJ7hN@m,c_O¯ˆ‚Œ•µñp3§yÑ9[B®,ÏÀNè Ÿ’œòÖÍ' ‹²düÒuº’̶'©ï±|JeíNetÝIÑe<¼÷·&W¬¥>¤•V¥ã l 3Q˺lÒËÝ€2Æ|x 'ë5dZ…mü (1zP2]©²n°±Ì!ÝÞ^áøºÍS­ŒZYò™h¼«2ª¸Çꢱ9Zƒ…ñí’|ÇÂpòyÿ|ñÍ¢IDŸ7;À£`L%Ò¨»‚x£¤wÁ~æª^q³«FkÀãÅúÔ=
-I»Æ†©ÞXÐ&¥Û¤Ž?6?gw8p`à0³BaÓ§*ê.`æ €
-endobj
-749 0 obj
-1709
-endobj
-750 0 obj<</Type/Page/Parent 635 0 R/Contents 751 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 131 0 R>>endobj
-751 0 obj<</Length 752 0 R/Filter/FlateDecode>>stream
-x}WMsÛ6½ûWìQ‘i}KîLNœt<Ó8n¬Œ{è"! 0iÙýõ} @$D7eÁ°oß¾ýà‹)Mð3¥õŒæ+JË‹wÛ‹Û‹I2ÁÿùcÊ_~¿˜M–É5­6«dB%Í«dV=ò©« šNi»Ç}«Íš¶™»`BÛtô,ëW²ªT…¨©1Ôä’L‘ÉšE¹deÚÖªy¥Òd’~Ù~c ± X\.Ï,Æk<ÝÌ’é9ž õN.œcëÿ†¯5 ²ýþ´û†Ó£1Ñ1—µ ˜¦-2ª„µp§6í!g·øì¥7t9ñ6‰t£RÑ(£©–?ZiæAГҙ9Z¢ûm°NJ;~¬(%Å+ í»^’©»S×›2u¶äDäfÊ‘›3š’¦³93åV!rˆ×|á ö{(¤°X÷RˆXˆK|î[N’ùà¾sñ€»€`hÎïà?Å꧴Ó+ÏÒó
-¡˜WÛÈÒqØ6†Ÿ¤¢(^ lYuÐôõþî/jUî`àÀ_ã‚ã°tLøý·¸Ü·A8…¨V6!ÚæÊRÊÒÄ_ñ, ã]…¦L>ËÂT%ÂK»Zè4—–Œ
-ÚñŽg™±#µôœw÷XctNÎVÉ‚µ´Å"{ºɧ2‡ú²` ½”³ÉèaÿìËh I=€ÌÎDa}yxOi.´†e\*_DÚÀsÞىס:’·Ï›ÌjÏ,•RhëÓj`Õ'¤%mŽI(«J4žz®¦n‘KàΉÃ檲 æ¿ÑtIfá"ý=R‰LÆôjZJQdÙÀü©:qUàkÁ7´WKkÚ:•F§°\<#çq²Bñm_›2>|:ýpû>HsÒ „Ѥ©i!++¶¡îdÅEe 95¹Kø«ËP‡G]Y+[_§GÑ 0{/)²NŸ^®RŽÚŸ¿KYzjêÔÕ0SIT)WÈ”EQúpªiœÃ¸«0øßÉÚ ö
-a$™Ï1øÕœ…ŽËÈà‰sÎ.@ù¤ÒÚX³oÖ»
-÷
-¹92cÙq9
-âø ¼qD¯Þ!ø®\Ä1CH`p-­àG´zq™;/¡:fÍT ``º÷@›¼u 8©86¬¼~C'k;ÔÙ *è^i®¯°à,BÔåyÉ%ÀÅ÷,ÑcÌ|„½p6}ºûÊ`]ZsPÞ‚|æTÀŠ°Ý81é –”t¥›Tƽvê¶qç°mšs‡è7?ÞÝú …*böú §ƒký‰ê½>pZŒI6iB7(ãxŒ€Å¦\uc¨[+¼G±—/ÔŠgàoß6-&ŠPYÖÝ0Ä~….Ã5sR ÿPf¹ß‘¨ªB¡ípÉdB( 
-¯qmrØH_µz íÔw:y9 L{ÌnëA"¸\s݃žêŠCŒ}5o'Òï¾êñÆ'NÞ';°…[fc*ÅwV85Ê=|¯ŠO ˪À€Ädzå…Z)õ³ªæ΋¬ ¢Îùå˜á6>0ÜõÙ««n„½<uÜûÏÛ¿ò Œ¤óõ4YÒ|Ê͸¤Ål“¬ÂêÍ<Ÿ&<[»¶ÝÏUô‰5èåN äà¿C=™I[7G`è³È·‚¬Ú„™÷zy’;sÿ(íçä~Nuƒ:Ï©ô‡ÒíË“© ßκi¬›dO)àjáèð3?Í'~JœóPçìY´„ÛטûgѲ¤ ûÛ?‹–˜AF|)ÞÞ¢ŸàôpL¼5,—‚÷wWHʾʾuÎU¯àÎìz< À˜Ð ¿Hµ½WÙ„@OWkŒÃë^S¢÷•Ç›Oïnè¡6ßÐï0úȸ ƒ•péO]úc£u2K‚JY“§‘r6Á›Ó­›RœÔë$Á†FóMÔŸÿ8û|endstream
-endobj
-752 0 obj
-1490
-endobj
-753 0 obj<</Type/Page/Parent 635 0 R/Contents 754 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 140 0 R>>endobj
-754 0 obj<</Length 755 0 R/Filter/FlateDecode>>stream
-xXMsÓH½çWtqY§*Vüm‡[>ÈB-„@̲‡Tm¥±= iÄHŠ×ÿ~_÷H²¬À!+ÒôÇëׯ{øq2¤þ i>¢ñŒÂääjyr~{A£-×x3›/hÑ  ð—°w½UY¡-zkwTXº¶éÚlJ§éA%+E£`D*'uºüv2 þh‚ó½{gåötceR>S8ÇÚñWìoˆÏØ_<ÄyœXÀîvúGirShú¬UdÒ?1¡á°:1šó÷WzmÃÞ–ºIKMΟ x,¶&§ÐFY¬U®)Qß5å:Þ«B+<…6±B­bM;SlÙ¢ä÷´R¹ «ä†cìÚÄ:§\»'âüåÉ*àS¤Òˆ¶)ŠEþ‹Š“šœ‘ÌTžï¬‹ˆtº}V›²A3 Znu›ÅβÓ7Ë®…„†üëóŸ'Ãá Ót¶&”Ðp1
-.ª§˜¸¢<^àe»’…ÍLˆ:I¾OÀ9ò8i’䎸 ß‚'‚y¯Nî±7}<­¢Í^'Á´CcQ‹uë»1¢Bi¦6ZP,¶>4@Ð6g“Ù³„g‚œÕñu]¼9€^Ñã8ý:ØÙµgÑÛ_—AaÐ7äb‡ºÐtºf4Ỹa
-èJ…ß7ΖiÄöÎo§Úh˾§ø-ôk©Îùí¬®ÅeYl­û#'yëÖ°ö@Ð>²a™è´ üVLî•I•ÐŒsºQO&‚÷4µ)̼:tñý͵`Aýšç’ú+©FõÝݲîéÛËO¯@×+‹~©=zzåe¦]®#0lµ÷ÚT l}Én&Ôìý¯€gÎQù(2g¬c‘qÚw,‹ËVEà…Û ‰˜B•©•‰Ma¸G,©°õ¡¯&ì°,i‚B P'­ƒ=ööã)2ùÊß  Îh"¢¢ª‰3`V¦¡FÀk„ƒT3(A>:ôóbëŽãÈËal7œöÚÙ¤sJ ®S(£ßÃØ –¹(Ô&„NÙ²ˆMÊ  M ,YN©†å,»§ã¹­h>GÖlBî0üN¨r8\·ê É„ê;‹ ?‚Ç
-VWÉ$VfÂqT BÇŽfÜ“ÁD$j<BüS#Q“Á´#Qk€Ë<U¨ïžãZ‹DK,©e”ãØî@«CÎ ¢e’ò3!èÑ—»wÿüûîîayùþ}°-’øøæã2'xLð׬Aó1Tg|Áó*¡Éx «§&£ñóµ-ºONæ`ãTÏÎ?ƒžÄ{ZùI–…ZóÄCæ—Hw‹3k#4C3 ÌµFÛ!  é*ãÃã€ÚÏx;A§oyF<CªÎ°›Ä‘ü³Dc†m<µ ˆU› XŽ,Á _<fÊQ™)ßÚ2Ž„iœ œ¿fÄÛBÑi›g½v~Ü(|üü6¬³?.Øe¢Þ#HYÉi­˜ü®‰2‹UÈñ©¦)/þ«Ú#+AŠõ“FÛë°tàheí宜.œÑOÞ[ŒÅ€5 )±.ð\@C‹@¨ªùÐ[¬A­ØÎï–G™ÿ~4V"yì9«°§lO}² ¤ßt~ÑZɼ({I¤|¹J(³14öãýF'Æc5@Ži•Ö?ò˜`,á¬& ã’‡RÕFLójÎ<c\;pL7Yb WæÅ‹Â=b×Ãå¸Ë´ŸÅ²h¶ý@/Ÿ­Ë9(è
-Êù5F i«?¶µæ2ƨú€séãŽ"UÅõ‘ŸñØ4Â5àV%*ÜbY"iaìŒ!Ö8´2§ûÍâbâUkò²Bð
-˜#ØÚåy4=¤,2ø‰ ýD‘.”‰qE,Ã-sZfG-§g] <#]„A€¹;6Œ;ãpa­9V¯f&Þs
-endobj
-755 0 obj
-1781
-endobj
-756 0 obj<</Type/Page/Parent 635 0 R/Contents 757 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 185 0 R>>endobj
-757 0 obj<</Length 758 0 R/Filter/FlateDecode>>stream
-x•XMsÚH½ûWôek‰kI 6•Úr’u’Ã:ÙØ·8‡A  D_ &Þ_¿¯{HÄ@bW µ43ýúuOw¾]øäáߧ8 QDI~ñòîâï» o0™Ðþb–<Šñ„ÂIŒÛ0Ž!M ž—XfwÁðáuH¾Ow ¬Mbº›Ë{î’^® ›–…žSYd43©^àw¥<»ûâôcTº
-8 °ãd<™v©ÔRóÔ}xÊ4÷àƒëÒÀÈâA©.ýÇ4©M3­ ÊÒâ+˜Ø¤v%ƒTb×*Ûù“æºNLZqdK{Ôx  Þ2×Uþ®ò*ÓÂæð;OöHok'ÝGd€Ez˜Oˆ·?Ý`æ;·Œ–Oˬœ©ì³K}Ÿ¹rÂßsz©ê4¡Zø?–—¬y$6{ÀKc?Ä5'ìî°¶”îöõÖeÍ„1&tbOÛYZ"Þøb7qÇ8½h,üÞ‡÷oÞw`x#ÀÎ)樋pó'$8<^(ïó oÕ¥)×ÕÏ‚¹¹úxóîŠGï–î>¬t×™Mõª\gsöM³‰hî² ïÿ¬L¹Bú0Hoå¼· a]#£1;ᨑb[¦9Ðœé-Ùã‰ÈÏQØQyâ^ß›röéŒÎˆ-oû·2z¡ §gÚqZu'¶Âp*Nl¯gt]ðî}Ù°û«ŠGlmÔ¡g‡¨P­RÕöäYsŸŒ•Z'¨Cöq·éè¾—¯Q[Ö
-<lÞ¾ùþYÇg^$>sa"ÂôçÛ6þíúDZ3 ~û$x¤DóXYx¼Ruý4GâºÂòmÍ¥Ü%)NMmð£8”ºå#¯„ä¤ÓèG1W¸6úFý^ùq3šˆ{ÒŠz]U¥±Ûš•Ë²èÄç(ô÷ñé„3PÑvprý!>÷k?½)OÁÜHIFÑ®-—b‰Ê”‹4Óõ_j±‡9} ?Šh$¸¨Ý.Ip‚W»:Né=þ~»¹¿ßb€´æÑOrìÀsà¿×´*sMsÄHsÐb /ºAMêL­¨>,T3îDÖÇœ²³ƒˆûAlfnpÚì ŠÊ™=7éÉõV*ì¶.c.¯ ÙN8£uìªþ>6œVæã4Ù<ÂUè“TוNÒ¥¥.´AYw
-\ûávc–‰$Êшt{»‚ŸÄUFgèkÑá\^¾~{y)Á}#7‹Ÿ
-meåϨvØõ ~ÇŠÏíZ“Xΰâžô…}œ0Hò99ˆ¼ç­ÎZŠíM¥@S×êò[ìÍjäG®R„œµœpÚ ?îVŠÓ{i¸®ÍPŠÉ°æ³È0KgÃ-¿h¨™Xé|ÎàOˆÅYŬŽ³zPŸý›¾&ÆpFi89H(Ô8¹v»ú':¿ÂªyžJW¬ÛzîOÜÊI‘ÛàNZ ÷áýi›ª¤ÞƪÆPNPâZÎXç¢3ÎÅ õeˆ&~XØCÛ©Ó‘£—{Z¹?­Ê³]\~£EÙVˆ)½<gJ¹?­p2:h伋D¬ê¯ÇƒÈ‹<¯­!Ëû”XîO+EK{PBwµâŒÞØéÝŸ“úÒ$óq‹û>¿s"}J‚öÇ­rAU™VŽê8¯púg2w,V3sù( ›#ÜðzÒÐ|”_$Ø‘Ðp{õÏË+ú`Ê/¨nø®¬¹’‰ÌHß ïÇçˆÞ¯~’Ñ:áë O · ÿ{ñ?DŠ†mendstream
-endobj
-758 0 obj
-1576
-endobj
-759 0 obj<</Type/Page/Parent 635 0 R/Contents 760 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 192 0 R>>endobj
-760 0 obj<</Length 761 0 R/Filter/FlateDecode>>stream
-x­WÛnÛF}÷W Ü•‹º[vßd§nSÄIš¨(Šº(VäÊbBî*Ü¥eõë{f/4©(iŠ$ˆx›Ë™3gf?Œhˆ?#širAiyr½<ÜNi4¢åšo]\Îi™Ñ0‡´L{?¨´Úo­Ìh+ŒÙé*3TÖÆÒJ’TbUÈ,!ºÕ•º’”I+òÂV´Ñ;"«)Ód7¹9§J®e…;gË'?,OØ…óC#þõîÇ“ÉE2¤‹ù8¹¤’FãËḫ‚Þs _T.àùïwB~}óî÷·Ë—o^'[ìîùK÷ _öâƒÛ4äÞŸÃÌh’Œa«w?¾˜‡ç~Ü_$S~¾ÜH2²zD> So·º²Èµ¹¢B?heH¨ŒD0ÐÄ=úCIë^øÓôÈl <*ñå˜ḃ1¡@a†Ja,¢]Uz‡À A¢”ø±Få~ËU†ÛDi‘Ke¹h…N…õBžù8(©=¾¸AéßRÙ×ù|U®k|--(ó‘®Ùm®MZ—ð!lŠä*-ê ÜÚåvãXBYnl•¯j÷Á¸ ü:Z¼Xœ#ÅëƒLcêϘZ€raè½(W‚Ƹ›iiHiKzÍü”êr[HdŸóÿÏÑê5=TºÞR)¶[Nf…ì¤T ~¯—þWy,ŸŽg õìrâ”4]6W‘Ôx8r¬znº_UþMÝ÷¸{+)ŠbOŸê±¹ s.RÆõ’OÛ‚™‡¿<b.š­HåýÙ9íuÍ·ê"ëVÉAÛmBn O˜>Ú…fsÀTÒd˜LÂÇÞº,i6K®ZϸYqÉ ·;Sd%t v7]I¦\%©VkÈM%JTÁS4WàBéYƒ:¤ÀÂr N_øŽ[°esJÆî I"Mu­¬IÚYÌæ@yz9GFcüC§­½ú]ÑM½†.ÎÆhN;âËdšÐMôv'ÒM®$-+VÀEðâúüg+èƵášp÷ùð8Œg•BGXd{ 0É´Î`›k-Aã-»–ï×Æ×[Ô°®¬#
-=æYìKìpà3FÚÁó"ÚXºzj `Cíàå'©RyŽ¢DwÍKÌ4XX aUR)Ë•<ÔbWÐÇJ¦¹PÎ30èéVÃÙ~¡êðŒÜìsbƒÚ+}PúüA¶Á!4"Vø€t‹&Ÿ·/n XK I4ZSÒP,™\­Â;ùÀ#h€¡ açœ×Fäü œ·ïì@4QYT©®ÁLÌÃïݨÇÎÕ¬Ña Â¹>‹!:ºÉÌ
-endobj
-761 0 obj
-1878
-endobj
-762 0 obj<</Type/Page/Parent 635 0 R/Contents 763 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 197 0 R>>endobj
-763 0 obj<</Length 764 0 R/Filter/FlateDecode>>stream
-xWkoÛ6ýž_q—vˆ IJå·Óm@Ó.[‡¥Ýð -Ñ6[‰tE)Ž÷ëw.)Ê$0±-‘¼ÏsϽü|S1{ÔQ’Ÿ\ÎN¾Ÿt£É„vÅ]šö£ &cüìóÏBÒ[»4Âc¯^‰{xáV
-‹ß|@Nçj@qL³ÔŽ&cš¥n½K³¤5[Iz1ûxÒ¹‚InO«#ˤ³ÖnR¿N·Hê²ØÒFeeÊ–Tât.’•Ò’´È%a­\‘ Óç§$Ök©S™žÓÆè³’VâNbÉI6¿f9ü–Õt©³G³´%HWX±+‰O¡SÒ†he >U…LJSl#º2É{‘¯3ºoDJg©Y¯·gÐ[ei­Wz¹§î?ýÍÔ' W•½2¦̘ڽa4`‹¾ç÷Ãîÿq½±Gnc«¶îo­’O¦1­‹N*ï:ìòEg®tg!2[o ‘o³®‘Ϋ¹¹“çuÒz!i«ç[”MsDJo)•6)ÔºTH‡KÚ¡äL&™B‚ÏIE2:§KaeŽç×&_W¥,"ouиÀFwãÚN¯˜[“áx¶¥¼b`«z'ËË·ïo¼~³ØSO¥áM 0•òoOM.”Žˆfx
-ÅéB jؤ^ÙZëu„ˆ&f¶ùðƒã¥a<Må4áË?dt÷ã$·ßÓ°!¦aÌö©ÉæsÏB·­Éí çlÃjNÖµâ&Ï™-8uvÅήd!›š Ødª0¦|V×Q°£Õ(¥¶ v^/÷”Ù¨ïA`ÃzŸ,Ð'[.×HS]Ggö <jÔxû†êBÑrö6‰C®–RË‚¡t„‹Earƒß¼÷ûidÖu"FQðžxxÿ„ºôY„JóJ*Ïeª`C¶}
-)‚S¶B}¤,²ð‡©üÀŒ{¤z#
-tš¯\½zV£~<ù©kÊÀwð€©ß6Àݺ:WSŠÁÿ<bõÆCשwCDD½ˆNßë6ÂԾʶ§ôšSÎÖÂ…ëz„šq›¡W¾±¸íêù…G77±Yô*¤û¶ÅIçÆ…ºãQëömÄö
-ÄŽ}ýŒår‰aýY‚*_~!§ n`ð§H4|q×´öZð¥dD#ô{Ã-Áƒ>ÈôGÐ0Ó?+]Ý“ÝbÞÊ
-endobj
-764 0 obj
-1656
-endobj
-765 0 obj<</Type/Page/Parent 635 0 R/Contents 766 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
-766 0 obj<</Length 767 0 R/Filter/FlateDecode>>stream
-x¥WÛnÛF}÷WL
-aç|ƾ¯¨?%CŽ§Ü¨’LÀ£æÉäz­³#oÑCBtKô Š¥"•(E(½*Í“>¸XôL¢“ RͱڵØߨÐqë+éÙi `̵>:€_œSQ…’–šPoíÚ‘ƒä¶šCÀs;“ç´R&'³â¬‘¤±Êï‰!ìømAÆk„o‘™p¤G+7¸Û WåÇ@A é
-•nŒÕTz®TƒZ" ßk
-k@ãÏd{Ò_Á¿®[ˆ4:ü0 ÿ¸
-gÃ2
-b„Q
-m«Hã†&\ÃF…u÷±ªÐ´¬J(›,+$ÝèôQê¹t_ét* AdS½‚&è¶ÖYÝî¤%§D3ŽDNU€ÍÆi˧ ÈUþv–xú9N ÖýG:b þèf­ú ‚øŸ1l¥SCHCîxÿ »6xõÌèHEV;•£³(©¥C[d54äq@Ô4Ƚ«b[ Õv›ïŸæQ_íø:ˆ‡§CÝæu¶8èßÏO0.i4&×4¾™àó¿<ðºÓutuƒas<__'̦ô£wË\Ü2zï½óÒ¶/ï† Öxe™¡Æ¦y•aÐÙ«3ü‡ K¸õ´üqÞÒYÛŽ˜^ôÊý‚Þ0¢¶ õ;ý´Ó«8®8ácÐj»Õ6ÓYB÷^ëwwl¹­ÎEq(¸'ÜÆ$؇8ý†(vΞ•u;@î2µe{8
-•AÜh˜ìâÚ¯°0äû„\T7™VŒ†Mrå8CvVÃúº™SOf»‹H7ËU¬38m…£2ÌܸžÁZBú9µÛ¸¼]g‹-í²Þ¬Ü<"%I7ðÒÆ×8.…ð¬ùRiú›7£ÙýTÇÚ°³ìŒÖ2¬1¹Oÿfrl¯,”:k/G[d‚/´Nh÷té-kWTù…d‚Æ/ ^å¢6MDÐ-æW¹IQ^#eÆòÄb€0YÙÅŽu,3„/>K&ŽÑZíßÒN30^Z#GoÐdñŸ6ÂìÐ ‹¥‚Ó£ë%§´Â)™tlÊ sÞ¬²Ž*¶P]ôt²N`ÒÊ(Ãn©¡ö®(lʺèåÙÇé+\?Úý>ÞMë¥låòÜí ýIÊËCÇ«×7\4²ºdD­"‡·fÑbÊôíbñiöáÃ|±ø5òü@}¶'Ôû™.;;ZËÀ}å¡ï ÀËr½± ºX‚·èEJÔºö®Úžiìß,~SàÎ$í +_ˆÌëdÌŠ`›W™Eo©22™VÀ’oÊŠÀ@åP­5PˈXf $„è• ®ÐØ
-endobj
-767 0 obj
-1534
-endobj
-768 0 obj<</Type/Page/Parent 635 0 R/Contents 769 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>>>endobj
-769 0 obj<</Length 770 0 R/Filter/FlateDecode>>stream
-xW]OÛJ}çWŒªVM¥à|&—+(Л[¸Š¤jmoÛ›î® ù÷÷Ìî:qÝÒJ7­
-Y¢ÒuÅ‘Ú¦÷¶€>ƒŽœ!îbTð($‘¡¼ÿ­ã{fõ̉èpòšPÒNŠ´ç¥WP§þûÜ[½áÄ_.äUD÷°½·àøF«rù—ÓH[\ž&¢2S €7ç2+ñÄ|ð¤Ì
-
-)øêÄ–oÛIðŸ7Šd;r¸
->†%Õ“ÿ….±S¤Ö˜Mêm ƒQZ ù
-4ÚšÂ1l5W}“1ešÁ‡ îÎ"CJ€Ð8Ž*›å™ÝvÈcûÄ}q\S}D)
-éìßÕ´»’ölv}Gîm lóíë·çt¶Æ¬ àï‘—sÃajKøÊ¿&¶À9²Fxv˜m½FXÅ
-Ñ{Ò&½
-ŸP5hý½Êxq&ÀZê"³‘q àþëaŽø«ÆûFÀ³
-ÂÀZÍöÿÃÛ8ÆM­wö¦ÁÑ àE÷Ø·óîôóÙ)Ýhõ7ós•TØç½™2Eã n?œ Ýûç4EGýƒ…´žÉü
-endobj
-770 0 obj
-1802
-endobj
-771 0 obj<</Type/Page/Parent 635 0 R/Contents 772 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 200 0 R>>endobj
-772 0 obj<</Length 773 0 R/Filter/FlateDecode>>stream
-xXMsÛ6½ûWìMJÇ¢õ-+—Œ“8§ušÆJ3í𑄘T‚´¬ß·
-VÃg¬Ž'Ñ,\ ž±:YœEÅ 0X'ØŠ-Õ°u‘¹kxÁ¹jˆæY×P©>O—£CëÀyƒ>‰'¡2±ÎÀöÂät¯’ÂX³)#>0p ÆsT8ô^¢(~¬aú¤©bΊŒRYŠ}Ég®ÞÍk²£ÂÚ£_˜hbmª2ŒËUÌ‘naȯüé¤>=XD×(9¸Çó…Kü©Žx­µ½2”€,àˆ,a«Þ ú¹¢ëë21z£¶ÑÞdÞIS}:‚¼yeKªÀxG7ÐûAO\UŒfÞemuÖX…1vÉgÙ5
-Æ¢¼Ql¼¡ÒIV¥2¥ƒ*w\Gµ£5`ñ6ìúÚ”¼á‹)mé´¡ã…·ÚqBPÒâ<T‚œF­›"Ø‹lbÄc+UúÜ9‡!3ªÉ[¯ ¨Û·a¼«
-FqI"+!Ûƒ±¡ßrFè¡ií0 BQ×Ì€¨ ^wî~åºä«T–ñeˆ
-wõÜÛϽÐb+‹žËYÏ
-ÔüÒë¿O•h n<L®Ss~ª#¼¼×æpI»0,‡ÙYl®°ü$e{n˜èàÔ ûU7­X õAo;f!%–ßýË$Ï=\i”øaJËçÊ:ç(O7ay¡Â633²îÖv…óå­Y`]·I߆ÂÙþðZÊZÀ1ƒ×SülX¯5UŽ¥öý4LdÖÿ4w‹I§¤ß”<Ô/Wïþ)¢ëz¨ù7ºë™áy¸¹}ÃoX_1kÐ[“Tü6ÞNãƒÑ|ÀÁbìnø¯þ0]L›÷šéŒ9€÷å_/þ“Ë÷endstream
-endobj
-773 0 obj
-1793
-endobj
-774 0 obj<</Type/Page/Parent 635 0 R/Contents 775 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 209 0 R>>endobj
-775 0 obj<</Length 776 0 R/Filter/FlateDecode>>stream
-x•XÛrÛÈ}×Wôé*$Hš’ö%å‹”¸J²“^ïVée ȱ€.f ZµÉ¿çt HHI%å2%âÒ×Ó§Ï苘¦øÓåŒæKJŠ‹÷ë‹›õÅ4šâ:Äüñõ¯³ømtMË«e4¥‚Ë+ü¬¿å´â·&· ŠcZglhyuIëT,Li ?ä&y¤.5G©;ØÜ©”ÂN“*“yÒ)e&×ôfý£ï¼ÜÒ0 û_&|F…IJç]¢Ä“~ÉÍfr¿º»ýtw³š|¾ùíÛ*ºùíæܤCSϖѱ ×ðýÝXÄâéóšÈçI—Þ8K.“Èß¼.é^YµÅÏÌ•D]¡ŒõR6¥ÁJ—x¥}‘žzR&W›\s
-äÐß]Ï÷”(KŸh«Ã_8ú+܆
-·ƒ«‡ÿ…²Ïä]U&Ús+ŒEé ¸3Çêâªôˆo?…¾äÆn)7>ø}½ý0ðÒ¥Ô%U¡mIiÏ£»ÆÆ0 ¥‰&ìĸWÅFQ
-‹¥ÙT@â` ¾Ñ÷gÚ:—’þ¹Ï¾+á"I«K…îÞ¿Ø÷Æ}•ìHùžßM ì!æ¨.ɲŸ#H¥Œ\Ï‘¥Fm­óMçr’ra+_•ÞT[ <˜RíK‡RÖÕ8H™ënd@/$4¬h:”4áŒ/Ñ߶T³å¥Ìh×A¾=ž_Ö(å«ÛéÙhN"næ)J9Î-7 ‘aR
-OÆÓJŠm‚×y†6ýîª.7Œê8%·ç"÷"fƒ
-v@/&§‹]€q Áž©¸FÅ•ÊpX“Û· ,†´Mo{hR–«­d k“ç(I’Wé‹¡°žÕ«鱪4h
-ú' ÿp¤“Û#wCA¥Ã‡ÙÛioRqëHi(U’ °Æw4™üiuØçÉ*„Š€ÂÂûWcá?[‡’˜]M£˜fó ¡ 9ôbûí58›ÏdqtÊç•Å©-k¨ôL’%û´*ö< øo‚ˆvAdãápˆ¿¼\¹ŠŽú¶Õ;CÐÅ
-_Í6mrk÷ó‰ŠoâƒaХߙ=¯$L¿/›Å×°âJÔÍòGr`!Š¼IVb
-ôÈÛDZÛ‰"€
-\¨ËL%, x­Æ'•«<Æ4Õ¼Ÿ™Y;x×ìŒ}ó2ifÉ^ŠÎ‚å$˜“Žpø<©­{4——X‰å05 3w ¤)üðRaj‚Ui‚ErD
-µÕKFˆ2è}«ñ2ÇÚ…íp¹XQ4iáR¯ºH}¤_qFóÅõ¨Q§|ñͤ›Ÿ—#‚÷D¼x¦ïgMg…Ã{ Û3Vg•¦ÀA¶>÷ÖÒñt°Nb˜ð#|XúÝU=²â­FóE¤¿Î0ÜÏ÷| o:p:ð§Ý>¤…Î(òLJ›'ÆßÞ
-Wïîß¿ƒîr?08¾Ÿœ9Òq 2Ç"¼œ 6þ‡£ëâr<½X² ì‡\ü‡,b¯endstream
-endobj
-776 0 obj
-2019
-endobj
-777 0 obj<</Type/Page/Parent 635 0 R/Contents 778 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>/Annots 226 0 R>>endobj
-778 0 obj<</Length 779 0 R/Filter/FlateDecode>>stream
-xÕXMoã6½çWLEÜ"–-ÙñG/E7Û ›ÝíÚÅ¢€/´DÛj$QKRqréoïRòW’nºè¡E€À²¨!gæ½yOþ|R! #ê (ÎO.g'ë>…!Í–üÕ`4¤YBÝ ÛíÒ,nÝ©ME–=Ò£ªh“fR&d¥…±¸C§ï¤Ý(}G·
-‹•¦™R™!Q$t±’…=%RÙµ¤w3šJ}/u@XD‰Â·©¡ïfœ`ëv4úؼõF!úÔ
-m©¬M‹•ÁÇ+UX­2ú
-™áššy•¾OcÉ«.’ÄEì\ÇuZmd‡d’Ö<:ïÖ÷š”q«ö‚ˆoOe&cëNúåœ8=Š³4¾ãìNßÿr|å¶W.GØÖ©.èAÂ_þ¦0•äúJ‹Dm̮ԺÛ>^Mˆ6kYP©U^Z™ü“ÛÑù®¼[ª´ð;£S9Ê´L3ôȬU•%$Rc±{]6ÀÒ°EßNŸÎ~ºýøþýìÛù|úh¬Ì{Ñ|^¸ óù÷Á÷ ™n[Œ§â/ÛÝ]?MµHR–*b[¿Ÿ0´‘Yvv¼k)4êdæó£Ð(I¯)öïêXH@ÍýH“·oO -z~8­ïs¶hï4¥ˆï¤%Jª¼<sìð;móŽEi+-ŸÁ÷¡‚ܤt"õ> ¿|•­ãÊ-
-nõ'pLµ©*Îv,F/4ÊLfÓ€ÿ¸ž ¿kV/«Ý´‡&ìÿ:±ëd˜ÎžÍÿK:ïõø€ÓRÿ;œ~§6 Aùè:îy¼Àv®3›_Á^pØñš§jÙÏ•Ûf˜U¥Ôyj 0å1äpžH™m#J ·R§ÂJÇZˆš&“ZÐïúF"ÉÓJƒ8÷’tºZ[³Ð3Z¨¦Ÿ®
-pˆéþ„¥P¸F"ëñÇ”Üáñƒ‹Ñ,aâ!RDsB*X>‰¶unæ7½še6oÍçîÌnNº°˜ßñ|\K- CY–X(Ó˜2£ ¤Ý®÷†%iëzbו˜ÒåѾl ÜA²˜ƒ¹›3\§5
-uVKšŠ|!ÎÜ^GéµhmmùC§cxe ôÊ•y{ ÷¯ 蓤µ
-íðþÍq–¯ô=\TÞ®s=h4x"ïe¦Êøów¿ÔBC㊿ߺ:Ÿœ?ŒÁ¡@âà" Ò¨Õ"“y@7K2ê á‚îicóË®…· ‰?4™Ûà„!b=0^ãâ^0y ‚¦õ4§±²–n¥ÖìiMšWxÀô¸œ\ÑB¢Æ)Š+ÜQŽa«ÿ‹
-$ ûAX_ÕHxÚS ":¥Ý!¢nóf³ Ì]Z–HßH«‡ŽÉmͪ`móìE
-›àóW%uG¿á¨ïH×Ñõl£ó#²]Ï>ø¡Ë)¨Œóôö’L)ãZž²¶EK7ˆñ?ÈÓX+£–H )ÔIw½êpO¿"©Ýˆ=xaú ByC+x²æsUÉ,sæG.ã^矕±h4ùÂ^è[?`û«'Uƒ9{ÑQë½Sà™+¨¨òª¶•0-yJ&tpª€ÞàM^½„W*ÛÙîmÚ©Ëš4nüî¿ÔÕ¢ç^  ðÅî)_›óF¦UY*ýD¾Ø1þísµX?›©ßb«…^†x^DcèÁ˜%d;ï¡¢î¢.8Ê<îÐë€ü\!=gXÝ^ÜdÑ«éìÝL°¿)j㜰ghÛbžáP¶è†Ç¼²¡fZºÍùwÈ­ãæîµ™]¢ŠS‹÷whÃî˜b¡*ëØæâ´¨$1
-‚S–"¯ïÀÔqå…úshæ…ß W’ƒ¨Â™$Žå¤2“Âà»…ûn“é[Ui hGãë
-endobj
-779 0 obj
-1869
-endobj
-780 0 obj<</Type/Page/Parent 635 0 R/Contents 781 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 231 0 R>>endobj
-781 0 obj<</Length 782 0 R/Filter/FlateDecode>>stream
-x¥X]sÛº}÷¯Ø>YéH´$ȹ/wœÏúÁŽo¬ÛL§îH‚bÐA+ê¯ïÙiɬÛÉÌLñÀâìÙ³üãhFSü™ÑbN§TÔGï–G'ŸÎh6£eÅw/.´,išM§SZ£+»U»†‚®uë@q­"þÑTê'mýF‡†TÐôämë¢Æå˜ïä&9i£LIÊ•é¶Ã°ðfùýhJ“Ùi6Çb£U«‚âÁ=m‚/ÛB“ÂÀMÑZ¨Ò*¶Xk¿|M­3ºr;â_dÓ)žã\7‘V­nšc^nr°ƒÈÖÆ­¨öð'ŸŠ† И_dgÛÃü|Ú=îQÂÓÉéÛì‚wðÔÚEãml°á _Q£ê\ÑηGÛðŠ¼º¼GŒžŠ|¯Ù5Q×d"níD­+uÈ蘩YûÖ–ŒS®r»Ãž±QÎ’dõ€¤FNÃ!`ñ@Mg…wUÆê1ÃhµJÆàøMJÆÑ?W‹Øaz QU…yéîÃ{jÚÍƇø'€»v¤ÊÒjÈ:Çßá6&#Q“Ï£B>KºŸŒ"zÿ÷{êÁª¨¦v²Åž†û)ÖºxÄ$&’o_¸§áÿHuÏ„e
-êd«B*n¦Ïk?Ÿg—ÿGÎ/DÌY]k³ZGh_aÛRwÂÑõ…‘t$e9ˆ}Ó¡ÊW"¬ p0Øb’ØGÞ‚„Ü'€B5T· þŸOÝË0zé+|h4RÂøskAÂx‘ÌÓη«53lÅIç7PQÿ€¾q¡!µ:ÎQ'¯Áñ“ð0º÷ ºÌúNU½VXU=k9kf^PhÚ#ª8Ëa »q#ã¨äzc6LFù"|x3d ²GI°ºÍÿ5{u'à2f[mÁýÿa³þÉíth ÷°LÐUk¡©ÜªU!ž
-Iâ3’Õ{~Yâà—Ù7XS ßˆ¹ H-(‹æR©o–llÒíßJ(Ÿ÷juŸLZºÛ›×‘ÈïË/Çåd¼@p¸,6>m•Ç
-‚•º"ÓJå  D²?ÃÀÌ"9ì»Zgù‡Xf˜ô‚/*@‡ñ(?î‹k“e4µCû
-·ÙE`´j¸ZbîdòXht²“†“
+Ÿ0äSˆ„Ù//cþ†0ú«O³%÷’eÉ”÷" ~¹ù/Óœ¥…endstream
endobj
782 0 obj
-2245
+2100
endobj
-783 0 obj<</Type/Page/Parent 635 0 R/Contents 784 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+783 0 obj<</Type/Page/Parent 689 0 R/Contents 784 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 87 0 R>>endobj
784 0 obj<</Length 785 0 R/Filter/FlateDecode>>stream
-xW]oÓH}ﯸ+m‘Ó¤!iØÕJý (…. }™Øãf¨í13ã–üû=÷Ž¤¦íRMÆž{ï¹çÜoC:ÆϦ#:™PZœ/^^i8¤eŽ“Éé”–'ÇÇÇ´LçÞ7Ú“Ó…
-:£`)¬5ySÝzPØ;[Q¥Ã£u÷TÚL¤œ¦Ìø´ñÏ›
-ÏO^§ÁØ*!Z¨r¥È7um]ð”ÙR™êÅòëÁ1 †'ÉÖå^´½9Úñ©3uÀתʨñÚQíln
-¸—[G× úlªÌ>ÆìÒ³Míåù½ÓÙ——×ozÓÂè
-î<®Mº¦GS´Òjn
-Ùüiíë£I2f‡?¯u3´¸>§xG®ÚèpŸ_ÃK€#1VΪ,U>
-M·‡«&îÝMm²Ûrê4Ìí±Ö {+9„—j¥¼æ«*ȯÁ  è‡G­ûĈ°€&Ñ ß±¾é<g~=h`±Í;8Ç"ýþ FBÇ+¥×Å€QŒ ¾OM­ò—1ÞôCÏti=ÁëkûHªÁ}®À"øÖÄš8äpB¹³%1,iaaw#æ3p"¬[~ø¤G§O¯€%zƒÁm(ÇJu¯ùƒk™ær“oãZþ<µ—ÓˆÄñÕŽê®C{É]©
-1-ÛB0û©·8õB­µƒí<ˆ½æs”ÄA§é%Újy+V’·Îoö4¬² )jËÊc³N­Ÿ¦‚`å½ï¤^¶‚O m0æ–yæMkïœÏ?,¨R¥¦Ë×gó÷Ó¿"5ÄwÊy¡6ÛjÑúœ®-ËB, ð°u étª¡@ëý€²ßRp®ü‘Wì,¤k= Tá¤[üY¼ùøÏ› ±ÕºLï0~…o'³dÂUtqDW±t-…3 fµöŽØ:°®ŒÌ²’¥ð"X¯Qw¾
-€m^{þ ˆC&'/à
-´Ýä’ÐÂTil‡¸?
-´3ýÇ„_Ü*«´g°lPÂK.«)Œ»ž›qñ3Óì˶•\Z,Ù“mõÌ„Ù3”Ô ›úÔ¯vè¿%§¿÷–ò;8Ÿã#bjãicHèŒGB‹Dµ²M8ê9ÙuM_ë´m’Ýû¦<WhÉ¢è Ž©`Ðt ¿«².ô‘ԳȇÛÛSÊím²õƒæ9›ì±ÌÚ-Ö<‹z„éqn1|-ú"¤±Ã°cðd‡aë•æ9<“p¹ê$* 5À¯X˜¶úïGÀ}5Ö‚‹ï¯æo“›ï¢Rk[`râBþ‹Q°Áö.ÊØ¥¹"Äò\¬]UÆXß,°xÐh4ÅX=>òïøËÈÅ=eFCÌÛ¼§ g'Ò4v›Êirš ©\<æ{ƒÃkV:‡$QËt·¿ú F¼úHâd;ÅAží4
-ŽÜ\^H8joÆh»a×óþèÂå]Fvº¸éFr]¥nSwó#ËšçH+y>c'20"öò*mW·Á:ÃÊ–ÞŽ&Si·»àøl»]u[ÒþpÄ‹˜Œß<Íó$S*ÈP˜\ƒÝC¥)
-ðÿÉè`tŠunžÂ€ˆº„ ¥ÝLÙµTá-ŒÀäƒO‘•éñåÕ«6âáä8Áô
+xWÛnÛF}÷WL…Q
+Ø^››Ê“®$Z§Åi/‰mµîü<Ú‹!¨ âÍÇî`hož€×aÚ¼Þ ƒ…—(‘EÔïô£ûÖìñºže|Uÿ'¢ÇÉhhBD'÷Ø>¼¹ì#“'ÞTÕj°%ÛÍC.B©»h ¦×HÅl©:Å~³§4iR¨LêÕáìõ:Þ°hÅ-Gâ2Íkp"KŒ<·Áœa¤»È½¥‰IUÒN#á[ü0ýÖ*”öƒc²U œ …«+K‘n©P$φ5ê¹BšËÛt+@ØàÓÈlE‚Ýx##-Ý^$R€TqxxA«r-²0µÇpÅ‚”Z4*Å´Óé€-E¥Abuèb_—ΖIìãÀ1%òK†˜‚2
+8•<),q€T£}eWŸFNFE;i¨7pý¸hj0ðyÈzfT¼Á®\›:ÉS[ЦYð£¤G•×&êªÈÙ:ÑŽ9Ró¾×nu?“*è†Gô°“15¦š|®y3•j³][­ƒT‡o”¯¥Y(ý†}• Y Ca Ué[8Á3Ô~‰§‹ö¼f5Ojƒ5…¸4fÜÄdb<ÏkÀDíóè7$ÈluÕ2’@*†ž‰Ð–Ç*ÍQ)™U‘Hý-3ø9‚Õ<
+íø˜m»Dïd’² r©ˆóýVù[¤ƒÉÉÈ9U+,RQ³nSy„þ1þÖ’LA•ÅƵòÖ]5(ïé7ÒÊ4•}5ä‹8FcF“ ”Ù…â $˜‰–³ÁúË¡˜ôÕZÕ‚/ð—÷ªØ¤Ðmœ[uÆB­C™Ô|>BÀº_³x£­òîf
+ Ðe–pVý­…D"нBãúN÷vNÎ±Ú Ìa¶lHÔ⮆²*鎔§;˜Ž‡®wÌG¸eÞç"aåo•¥)dé°ˆ§¾"ÎrP´Œg†«
+¼ÊêZÈg;Q n›ˆ_ï²ÕW×";@ÈÿiâD½Î™Ç’Q®ŒÃ7CÊ·3_åVmD™¬ó ä£bÇiè®´\#.7aËÑ JÓf´áFý!ç¼Ê,ePË Z‘à¤,0– n”ŠU1 ^1Ü1«uŠÚ“a¦ÛXknÆ(g-KµÓ)ùÈ+Í5*V"¨õ!ç_Œ›ÌßÖB€¼Œ_ÝcœÕƒš¸‘é+ˆ•þúë´ÕüPÛùÄ×Q„
+q€Û¼ò¢@Œû
+Æž !Ö];<q.´ëCy Æìøó’å³@ÙƬpò|Èd»9+—@ ¡åë‘øÌåÄÊj[¬õË\³½”½fŽódYƒ­t ¤wBíŽÇqbϦù?Å#Ú\éN¥“ÜùÜ‹øh~`wO“M­<LÚkw¹ç-î­»Q¾¬3züpÏOèÿ‹ñ›ë1z“þÄez£ýŒÓ
+–endstream
endobj
785 0 obj
-1909
+1861
endobj
-786 0 obj<</Type/Page/Parent 635 0 R/Contents 787 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+786 0 obj<</Type/Page/Parent 689 0 R/Contents 787 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 92 0 R>>endobj
787 0 obj<</Length 788 0 R/Filter/FlateDecode>>stream
-x­WïoÛ6ýž¿â–!˜8Ší8N\`’&i,n»ë†z(h‰²ØH¢+Rqýßï)ɶ’}Û¤¶EÞwïî¾ô©‡ÿût1 ³…ÙÁõìàvvÐ ./iû§Xâ ŽõFø;¼¼àÏü)$Å|a¦ùƒã§w8Ò§YL]žÓ,rÏ{4 ;Ÿ¦·Ç³o§wÃêL' š%’tžnÈÈ°,”ÝP¦#I´NT˜à•¦”kKk]<QTJ²š¬ “\…"E$ÂèÜ2äM×î;Ó÷W·-wÞtí(Ø¿Ñ£“þY0@È›W÷“öe‘G/œÜ>þù"©}/¢L‘á·ÒXô,
-%¬Ò9ò¦éÃ5•F”Êg™6 ¸ØÑ` 9¢«Ð–l£K6Ae À‘Maª„}«däऑ\ËÈHi8 ]8 §"[Ê8–Ðä³:*§L+ ÎzŠE¡×^ŒÛÊW†e¡ËÛE+Y —|IÁÐÍ[Tôs¢Rga1Õ¥B|p·Òƨ£Š¡Îcµ,A&Ñr
-‡Ï𠓦 æ#2$›vÉä¢Uä©^2 LÙµ¦H„Z¸ŒTËBæ–â¿
-4sŒŠ
-¡:¦zJcPÅeÊg”îZ+¤ZEZäTÙ*…žAÑ‘˜±blÚ«‡·V+‘‘ÈT°°q¥ÞI{ŸÇºžu{WÓ!-¹çÑð<M1TÇîÕ jÐ{½ÆæS¸ÒŠÁ¬ ؼ H¯Ö‰x–
-²m?RdC›WÀÄœ{ æôêáw^bèñãÛÍnµó˜Æ~†HE¾ñiA„à6Lˈ¨|…ƒKúµI„¸ ­^ Z5©×“- ëyø4¥dÛà'-ºív@ÜkzòÅäp¯ Ø×ÏǯNŽþvÉd{cd¿]w'=š êTDµE½â‹ôe™ê…Hÿb^Ö!B&[ÜføÍ“5†&ê5#;ïp‚ò‡à^™¿ñŽ{„ãíédpî×s·€Bòl‚eŽÿj´Ü"»ýÊ´k¾ññùüèÓ|ÎB_Ýà÷Ó;a?#ÿb2C¡B¢L±Ð"2·´é•“$Ô…=M¼ÍÊ^×i-6a~fxõ÷Í9ŸsùY‡›x¤;89b#­~à‹*t¯!4‘{@”ï–_Åx¿Çº
+xµW]oâF}ϯ¸ŠZ•JáËB#íi’.Õ&¡ÝV"û0ظ±gÜ6ÿ¾çŽÇÆa³R+µ[•]ðÌý<çÜë¿NúÔÃ}ºh0¢0=¹ZœÜ,Nzñ˜fƒ/=
+| ÇüÏþŸFÒšoà!ÌÔ8Þ½R¿O‹5¬Æ´ˆÜó-ÂÖDé|+ Å*—FÚ<V²q$ ¿KŠ-å[‘ÓﱊôÞÒý‚Â$–*·i>B…•8"i~wE™qVÈn…‘g´*r2ÂY…úqñçIÚýA'@
+ã"ØʼnÜÀ‚àgF¦\
+çÜJ³ãëü»ÏÖÅ )’kQ$9eÒ¤±µ±VöÈ7B‹7JF´ziÖ“3¯lÑ&Þ¹à%θ˜§M{\$v|z³“æE+yJ{™$íg¥÷Š6FY‡}:È ÓƒQgT!¤îíOÔz4ô‚ÎøF 3èеÜÅ¡¼ÓÂ*¢{¹'‘4.¯&¤ÚCª5U¤M(­µi¤„ W€ˆ)Ðå®Atƒçî3ß’3ŠsJ 4:ÓÖJ{É í`ÔAÐQKÐN$qä#$‘6RI ­¬-—(2(dI£Ug.6ؽ =#Ú(
+–D‘ƒôìÀ%YzøÁÖÔ.u‹ï @@gE€£‚ß/@‡úÚAÉc°0cOk£SªÉSi1ò¸Ï€eÀz’qˆ!ºÎ2¶’ù^JEvß½x9u¶µ9d#¡¨¤½4ä ‡yNC®Ù]–ˆPÂ÷dwÅgœåø@/‚Zá º1nåO}缋(Õ)=µ¸8À™E íV ¤8[íb]XšB3ùôcCâü˜ëó¬{üå$ôYðz<aR
+FC°·ü–ÐÜMF|ºñs˜s‘®àË VaR8ÁC{¡óŽ>;™ ôF¤à=¿—¡±M) zç°üÚ]=ƒ]„ÄU„ÇATÃ#’»zæêS_v£—[NX=Ðíꡃ{mu·]ú©•ë• £as,<3÷q’кP¡Cï:F¯ö›²U\^ïh„‘tËXJf„åÒò‡ãÑg3­”Ï—·?ºµH9ÔÖ¹ê8MAWŒžd/^„¹ú@åV€9O_ó¾,Ÿ0®z|³’§
+¹nuÁ}ÑEj480œÊ}ëÓtð 9`‹gé°Có"Ë Œ m" H¬ŠtÅr¾®BùÖD}@3°KžY¼¬[p9*°”k–‰ÎR(e8âfD‰ê
endobj
788 0 obj
-1796
+1827
endobj
-789 0 obj<</Type/Page/Parent 635 0 R/Contents 790 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+789 0 obj<</Type/Page/Parent 689 0 R/Contents 790 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 107 0 R>>endobj
790 0 obj<</Length 791 0 R/Filter/FlateDecode>>stream
-x¥WïO9ýÎ_1é•Â’„R?@9¤ê
-åŽTí©©*gãM\víÔö6Ô?þÞØ»ÉfÛJÕY{~¼yófòù O=|÷é|@§#J‹ƒëÉÁ“ƒ^2Óî—]àŸöɘ†ãs¼ðK+)ÃÙõÉ°z‚—½ø¶ð¶¿`èäöŒú}šdìp4>§É<èÑ$=º7^^ҳɧƒ“Ûauìè}þ”æ4‰rq1¢cZKZŠ/’æʥ拴rN‚VÖÌrYÐz‰7è­Òs³v”æJj¿BS!”öø!Áö{tÜ?Mð~”­eê•Ñä ù¥¤÷KSH÷ÜRÀ®Ì¤_K©)7 ¥]B4ùîTQ:O÷¯'lÀÊÌXÉnŽ~f’J‡`9Ž7S¹¤•ðËä °÷h4¼ØÜ@òäö¢gú{°“q2À÷6ï‹wôÂèL-J+8±}DÓ`„z!÷‰!W®VÆz¾‹kb]Ú˜’BNˆ9€ÒAò€ˆ¡é l+
-é¥MèQ3Š8Òf ¤
-O-} rØ<‰†øÎÚØ'G0°–yÞ%¡‘ "¡„Ž¸6€ü'1TÖ뤮7
-y£ÂȾxåGÃtD³ØäæjÂ*š¢ Ó˜hK4,s.­£Î£_wR—n‹éž¼YuºÔAŒ -× îÜK¿4fÞ‰ÃjPKæU%lFû°BéÃ/¤]pYjÎqæRÖr‹¾vèdÔ‡¡èéåt
-uç§ÓC8AIʲéäçÞª=@lõ
-¼0søqfMAR¤Kîjy‘j ¿i¬sævš˜‹ `[aö±¡7qæ9m¤c˜Ü’—=Œ¸…ÓNj§¼Âåç-çÚt8]cQö¿ÝºR±R^䔣¡¹l8\¥%ö3üÃJ[égO]á¶àOΖ&†¼Ù¡nOœ-?ƤFf°N%ïlÕÀ]+‡Ê’J™J’»®§yïe1e[)îûŽÛäîê>®.R<‹xµÊÃ~
-÷|Þ†@c8d„õw»†½Ž ƶ΀[ºTZvi{†•Ö[“ÓƒÐ2§oøë†Ù<RäXBêo:Uý¯b†ÌÃãVŒ“ß°ÈÌQ•/° ÈQðÌm   ‹£×Æù:7ôõ‘ñÆþÆ–RS`€kŽÖÊ™1> ‹ü1–ýzÓîÇ·ðÎÏ}ËSЋ°Ý‡1r§RkœÉ°‚Ç玾q¾Íý94Ø1¡ÃWf¶KC5½1LØCd<XuAÇËAØc9Í«
-a7„[èX”ópD ßïCb³; £ÆÀ„Wèÿ_D²^z°ë³»“Ûqõ¡ ?$}Îã`z¼º»¾b|b^ܘ´, ÛÏÇ}DÎøØ5?Š’¾?Îé¥Æj\†ÏEîŠs¸\ÑßCö˜ÆÑ Ï‡ð,žõù lü ;†Mendstream
+xXÛnÛF}÷W „P
+/–ݯï™Ù%EÉv[4Ûë½Íœ9sfV_/|â¯O³S
+Ó‹7Ë‹wË‹¡7ŸÓñK¾Å`HÓñÈ›Óx>ÃÏ“‰7¢\Ó†w`Ç4_°|p5¤KZnpôt6ÃÒe$ †´ »ßЫåÝ|†I¬³’öfk¨ÿ‘rcÊo 溤Պ ©ïÃlï~owQ?¤N¡Ë(ïuN»}ŸÇ8cµêütKïU¡óŸ±}<„Iw:uA·w˜ìœ÷Ö¤*Î^¾Yüvs½øBî^þ˜Å_xN~ýùN¥kE#oä û*ÙïTðå쌻* uQlª$y$Øt´¦4ä |Ù(O°m0HZÜ× ;¸º$Ì@bÍpèáÇSØ6ñhEq¶¥} [ÆBçÝNJʦOq™CA7KZÜ~âWcò}{d4chß<R¤7ªJÊY¯Ífç¨$!H;•L,Œ3QœI<8Ðö´n‘®½Ðd›ÓKº¼’-éÔ¶yž×¡I"{D‹¤0¤â¢d⬆8ÒtË]\¸Å„ŸÎ]Š¢Úexú—ÊaLÀ±K܇éÃ…µ†õæ@&Cœb1l廬g—×bW¦ÃŽU`_¥Ö‰&ıh–ê°*5©Œ>ìuæ|z÷°ê®ð[AÕ+\[îHEiœÁ±\•à*;Ög>;Ï€ë}œè-0]ucO{B2¹ÃuTãZ@Ž;wõÊsËC·¼?CºÔw¬FÓ™Ì[š¹$õ9Sûñ"˜r"…”¦—Í ¡»‹Ö0%Èœ´+y²=ÆìdŒ+[³­qJ£!®kͶǘõ™÷ǽí1f‘í½'R#^ˆÔÔH!¦“áì,G$ðEÔù`‰òšu!lk„K$LŽ¬S¤‹Ø0ç\z¼
+g­v|£u·Îµ.p”X×HiÉöŒC®÷*g[ÐOq~±€0ŸKDg_òÆÄ„ /›”¡â8
+
+\[¬ß±Mð£¨2¨Œ„«c=VrçžÙPg!Þê,ÖQ‡Ë
+Éœ_&)ˆÏ¥4q™³R?Kˆ3æ5XL8Pïñz­ vcùA¯©ˆQ@ÀbÉ£'%¨K»²Ü7į0Uj\±Õ^¦ËÁ龺Øt¡ÍtÐè,ðžËªcÓ™°b5+ é&UVÈ#‘ª¯Cúðuñ£1^Wì•h:t
+ªìO{x¿ Gh‹\FŽÖPI­r|nƒn7,+V­Õ+ûÀ¨O$fö°—õ ê›i8‹•4lü±K‰ÿNå¬Ár_>“ðñ0ÀgFó‰$_÷nñË›j§=îmH¹o—÷g#y‚ý¯ÏCÆ3~¾Êþ àCÁÂ_/þ•Öìendstream
endobj
791 0 obj
-1681
+2079
endobj
-792 0 obj<</Type/Page/Parent 635 0 R/Contents 793 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R>>>>>>endobj
+792 0 obj<</Type/Page/Parent 689 0 R/Contents 793 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
793 0 obj<</Length 794 0 R/Filter/FlateDecode>>stream
-x•W]sÛF|ׯ˜â å*’–d}ú%%Ëv¢:YñÅô¹RA*µäš
-ò-´_»™H
-~eÛªà¦V‹
-0±&¸'"b,\pìY—8:¨°0Yø‘ßèÜ”¥v’Eö6*¬F\>Ç=”©à
-+êG‹hœ¼KÑiöCÈ5*ˆi²ª AÇùZâ|n̳€Aíjã½±Cœ&
-‰+ñˆ—y^cžƒñ.†5ï抲ã:Ž ¬ó*_cÁ`”½V“˜×À³ø%ªÑ/P<[S?½º™]rK½Ú7Â¥ücÎ(Ê$èߧtYòÊ5²_?%ž¢eÇûñ²2E‘ߦZ²É^ˆõÌÞÞÎÙC…A‚\÷4‹«mù½ “„•—u
-O¯Î$™ëÙõ æwg›Ò,['Ñ=^»\›óÿv\7ÔõK÷bø™ßxºn“×éó«sD—/Î8Ì»ùÑ¿þ ÍÂK¢endstream
+x¥WMsÛ6½ûWìQžF´EÉ””K'_v2m5a&_ ’“vÕþù¾@ZVœdÚÚczD‚ûñöíÛÕד ãwBó”¦Éêäy~ò*?9O º¿Ø->œSšâ2[Ìq½X&YE~Ï`e¸àôÙåŒ&Ê70ž-æ”þù9årT×’®c[Q·äntYiG…’
+7eK’¦Ðõ–D]àtÝ*«øµšÞ~X½ µpª Æâì_?Šj-¢7Ú›î4ÿrrNãÉ4IÀèN˵†nMÙÁž²O¨)ÌÀ™±p'ZůYR› ‚sdjjwŠ[·Jîj-b­„.Ù]©]›»ñ!Õl: ÄXõ
+d<@—²ÜC•
+Vèh¡CÛ ›{š¾vÊj¤t«¡?ê¢B¯ó|E4VÔÚUà8½rw„oO b¡bqò˜ ÎvŠˆÎsÎHí¡ýôáw/Ì
+jŽ×RàÇRÝv¼%sh‹½±Žà]Ÿö˜ákÛøûè3ñÖf¢yJWhƉZ8y£ï{(Äϯ´Ùa[qÛ‹Yص;‹½ˆ´žÒ§`ÿ¾ìa–ó›g—‹ï$Ë’ eqÏ}|ööù3ZYó1Ñ˸áxã÷Æ“lŽããyê÷ä}?˜Ígý:=ñ»Øþ8ùï Hâendstream
endobj
794 0 obj
-1803
+1503
endobj
-795 0 obj<</Type/Page/Parent 635 0 R/Contents 796 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+795 0 obj<</Type/Page/Parent 689 0 R/Contents 796 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 110 0 R>>endobj
796 0 obj<</Length 797 0 R/Filter/FlateDecode>>stream
-x¥X]oÛH|÷¯h8œHŒäoûpÞu‚3°ñåÖ:‹Õ‘C‘ÉáÎ ­èß_uÏ’iìÓ%0 ÑätwuUuÓž,hŽÿ º>£ó+Jë“Ÿ–'?_ÐbAËœ/]Ý\Ó2£y2ŸÏi™ž¦…N·ä M©i¼n¼#“Ë÷Öš¼¬4µÊ´:uZÓ¤2ÓÈ• eÚ¥¶\ëŒH­Í«^}˜’j2\¯´×rDç´Mî—dì‡å÷“9ÍçÉâŸÊo¾Ü?‘„ÈîŸÕj[6R´Vé¶k©ÌÉê?»Òê,!>h†rú“®â¥³Kšß&W|úcNªªHWNS®ÊÊM©lR«¾;U¯ÕßÒ\wBATéWÜIÞÐZûÖ K!‹y(è#Ò'Û5H¨EBÚ“·*0Öl¬ªG•¹.-HḴͺºågíkÓ$ú‡VÆl‰kVÍž´µ|¼nõ.‰‡]%±½é¨P¯šTšj'iª†ž–l_µ2p `´Îã’'àeªÀØA'ÕHÈDZˆ&7‚øpN¹‡õ‹Ú"䛂§\‹þÁg‡öòçVr@ÅqÔ×2-v%ˆ3¥3‹v…„…—•y®­nP%)‹Ûøq&&·þUUàfh^€_þ´<“éòzŽÆ_Ü\ãó~ðt˜™{@Ž›7Ô¿In’³ä2¡oe“™ã\¿»u^ùø\$sNñ ð·oÌ7]Ó8b\XÆ4Rq¢ôªï
-¢ ò(1;=ó›–(9vn„PeÒY
-¬55fG®Õi™—€ÛÖt›
-,…$mPÊÇÏ—;
-z2^߉¸õžþ^mÓŠsÕmn¯iF% çPà™g‚qwÄPô
-ÿD[³@ÌÕª0µv«U¬Eú?*(+]
-瀮q”Hˆ`Q^ª€°dØ 4X Ž Ôªl<~ †`\N¥eÈW8ÊìÈl~—Lþ W¯Š
-Í höÒÿBie h¸½HkÑTDAS"«qTÈûâÿöËQå»5² @ΙOoЕ¾ï”[SËoÞ$û‡°|ßµ”³p ‹36=\cF¨W8žZC—l1Œa/įÁÑÝ]oä™-_õD8‡‡]aº*cb± ÐIq7MË KòxÔõð,fŒ#ÆÉ÷® m¤Üè]›{29”ÐûO/0”IP¼ÝK Ô EöÒàj½d
-©7vÿ‚Ú=®ð<‰"Â…®àÀ˜X±rªq&´ÍM
-Wãa €1
-ö®ÐFK*·5Ìw”t+ò¢ƒ‘ÏzåÎ@ð}øíª×I×TüÆ2q-ýžþ)a£— »oÇzi•s;c3‡›÷ÚM¢Ø5!ù§§ŸýíëòñßO‰ÿá1ñ ˆã
-ûøù&¾',ÎÉ9XÈ Ôéóý—Ÿî £à;ûÖƒI1ͱŽ3$Rÿâê·Ï®Ïð†ì4¼e±ÛEó¶“åÛès|€#þ_]ÿËôDî¹ «‹ë D—/Ï9 ^ýþsò?B$“endstream
+xX]oÛ¸}ϯ˜í“$²e'vÜ—Eú‘6ØíÝÞîƒ-Ñ6IÔ’Tœ<Üÿ¾gøá5n[8V$rfÎ9s†ê?g9ð7§Ù˜&S*ê³w‹³‹³QvsC‡³Áň¦Wã솮nfø~}ÉHZó
+ÜÄ6û<>¼Ñœkl=ÅV‹ÒßÑ¢ÿ™dD¦-ŠJÉƽ¥{k;iI4t[–_jœ4Œz’f9XžÓ—‡Ë?¿¾?_|?ÑeŽ¼°áàñzœgS¾¾zeËÓ?>íFN“(\'ªê¥·3'X)œ$·•Ô†|ø¡áÝå9×u™Óåx
+ ùF’^Çgõª’µ%Ùºã2dI»­lHÕ-n ZÕlÈ?{_û-2ÑYéh'pˆ¨%ÙV’”G&%8 WÒí$ö¤'a”î,Ù®mµqˆ%aŠ­rõiÌ6$ŸçpAßTSê%úÏ‚TST]ÉØSé÷ÁKzsÛâÙ^Üß…•æ›ÁƆîï±ü/zºÎ³›7 Ëý¾ók*
+Ýg_¬“5²ß(ëÌ Ç[pÓu¢M|ŸûýËrùà,—ï;c Á÷ºqFWÒáWáûrékZ.?6OÊ膥Jaפù£]0„’¢
+øa#ªx±ÔY€Â°®(-¯-¼Ø‚HüCPüKnO¸¨$Ø =t´öDh?@h-vDQˆÿYﺹ Q¯ |Lí‚vr/nLÇ#â­©aÓðu ¿Á-zŠeYÀ¿^tÇ•÷
+÷ ­Ö^¿¨˜c‘¨X|/Aªª±›Êò×;ÑÇêœÜ>V¡Ol[vÇVªVN8n/\¡+b¦Q³Øö&Ó“ÌåQlPw4
+î×^ž¥ö„˜ÐcL95rwÌp
+N²_ì„й‘að¸~a­.ò)!ÈÄêò<a,ú:Ò9¨ÁÉß1©WÊög?EDeÙ¸j̹˜œi' $VèÂW+U)Ÿìü;âÃ/‡òjîÇ4-ùì¨ßÍ cxw"¶k>Í ~&¶©?VƦ‰&&ÒÈÙëäôxAôÜf&šÑVcV-‘£~–ç, ÕŸrª
+uðµP¡—7¦W!K+¡ﳬ9#¡ö
+tð•·=ð :jÓ`D±¯Çs}fýúÔ(^s˜)ÌlPë li2ý ¶É<œÇ#pý;ö½°û¾O¢Z~Ú&à÷õ,©&œ½¬®:‰¼ù‘X€L£9‘ÈFqûõwCb˜›i?ÀÒP“l ɼà±Ï{àk £Z4EÔÐ^¡Æ}[ ÅÃ=üþàLjïÙý RïYÄ
+ìµ
+³B7?ØùQò Æ#|lãöƒÄX-¥äNö&Ê”û?²0«u~?„¹zfÐç~˜ ì$YϹ·‘áÝ8úïñÜ}•ú›'ÌàÓò<ÔtÒÝxE?rÄxLóÙŒa¼ÉtÊWnЮÞû¨«á¦¼ƒÎ§³Œÿã#@¸ýòî–_«¾ãå0Ä|…œíeXu– üYðÿ?^Í® __âäš·C}ÿ=ûUË;÷endstream
endobj
797 0 obj
-2000
+1917
endobj
-798 0 obj<</Type/Page/Parent 635 0 R/Contents 799 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+798 0 obj<</Type/Page/Parent 689 0 R/Contents 799 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
799 0 obj<</Length 800 0 R/Filter/FlateDecode>>stream
-x…W]O#G|çW´.á$¼ØÆŸHyàŽ\Bt‚}º‡8BãÝY<ÇîÌffãŸê™õ¾païzº»ºº«öŸ£µñÛ¡a—Δ–GfGgŸzÔéÐ,ç£!Í2j'ív›féÉ_ÅSZP·/êÇñZT+)5e)µwde*Õ³ÌH,Líi2£Êš\Ò]_âFá$™<¼o®¼Ÿ};jS«sžtèä¡ÞKë
-wñ—顬 P8~2«´ÉÕ匌=¥ÜXT
- oìzôtsßÍåäï„ý:;B%4œãµ7ⵋ?”ÇÊÇMå¸ç¼2Ú•>JFI7$ôUé̬—7•öYZ>z‡ªé’W3[Jœ­iã—J?’7伩hmjr•LU¾æ…FÒÂ/Q²ðáb¡žêbØ
-“
-¯Œfè¸p÷ó¦D˜BÜ*O°ä ©©‹l*Ï'6à3¤ÈÇRœ.ȉr×PÔ)  ‰!uiizóa{A8¤Äi»x"®„ŽG««ÊXCêÔ®+8•pnelæöÒŒ’Áÿ4¤>LF¯¸2Lhº–a¼kȆ²üJJM_Ç}”À|¡¯Æ>9aì%íز~ÓîNwˆø­î(¶íÎxÐYkkÁ*È’Ò©±à¸×@RÜ€¸ÀÇEraž0+ñåþ·@·~›ÉéÖã-81}=i¸<|=h×€Vé'~uÌ $C óX»SZ`´–âY2«(“…äô”Oh~r¯R`‘D*9¿Ë ÚÀ/fn÷¶Y`z”¿?æàNÎE]x´úäôDsü¼›Ìç_Þz¸®’äù-+ÏTO­NàU¦5ŒæMŽù´@ºVdÌ|ÎüÖ¢”ÉÝÕô˜T¾?*
- û£Èóy3_Ç CÔÐmo˽ÔŠÙp9¥Õf^„ÌÛ\ålë4Eâa¸öÑuÄøiZ ºãÀ EÀH/¬§©k:£+éžxO1E§oãr¼×_`~»½ÛzŽ)JJ§%%ð}‰Î*¬ÌŠÕB¤OÕ° ÚBn‰¥’b
-P°—…–>‘/ß­¿QCGl*C¶Ö”[S†¢Ó‹ù|¥´ö`àÚ³çÝOƒú
-)çj‘–ÎØP?K]‘ñŠ†‚a"š´Ü¡báó…XD&g¦™_UÊ3^ÁP*Ì+žŠë/75P ’¹gÐ(-!Ê€²Y܃æ@‚¶r r,ó€Y®,zé1«<÷=5•Š» î˜Úÿ~SÍŽ, {8dkoêqz“í­à0('kM‚§‡ÌH÷@¸ª]ŽŒÎš¶pí¨ñÊÎt»½·Õ>$g‹7æí¿¿âGÉ8¡«Û›ËëÉÃÇÛÉìþösâ_<]ìû›+S
-äü‘s6ýDSv‘Öt†£V°;fÇsgœSÜÁÛnÞ4RÉ_jüW§ßß&ü¦ vºã Æ;6c)U%u¦^°Æ0‘V=*tZÔ[mZ¬é³Ôô;ͤ­ÐdÒ…ö†äñ±(ƒ+ýH‹:÷B°àhRap!ô~„QØäßa¥´Ç¥ì}°5£þà“ÛÙ¯t±Û8ìvoØa¶¤ã×XÒ‡,QL³•p ‚RZÉü
- 9"ñþ<€Œ°:g s)e3&a<öL
-Ö »îÝnÑn·Ã"è1äíUﶉK—²~ÁŽsسO£} P|T;™^Þ|¸d+üê•Ik~6 Æ—¿Õê„›[Ã.žç²“è¡yÀsõXC]ø1ãZ¡:å÷PÞ©ô*HÓ½%£ìBÁáS{ÃØNì÷øLÊŸGÿVCendstream
+xSMs›0¼ûW쑬
+ˆ"·ÿ¾O|Ôq’N;ÌØ OûÞjwßU„žyŒMѬvÅêúCŒ(BQa³E¶MQH„, C"èzÝ:ÕCöú‘þÁþpuU<HÌ uζԳÁ!ÎrLÅ¥£¯­£ ‹}ýY¯Úî´iÿ³éûbåYÔ¦Ÿ¯ýdYÊ2ÿ›˜%èö«d›ÿ¥rF4xzª&ÔXK=rªÄôFíªI¥7ˆ¯MŒ§eÊXÂ"†[ÞóF‘^º¥ˆfX`›’ ÓV‡ ]4\Z¨LßO¼—oMÓ‘6¥®µû5)šÌr‡XǹW³8*ù£B©T w2hÕ Ý™—Ò³Øó¦äˆ=pfDçMµC×™ÞÁTN…ì'Ê…‡ŸLóÿïøD‰,»ô9Úò²V°1µµ—œƒÃx+ÇÙƒÕí=¼÷5æ@Ø9]†oº•ædÏÅuìC(j­Zg_Ž¬zNp<:w{AagÜÑ_‚é|ü,8y,•½.Õ(•1¹¥g»Ðð–´½Wã=<
endobj
800 0 obj
-1723
+529
endobj
-801 0 obj<</Type/Page/Parent 635 0 R/Contents 802 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R>>>>>>endobj
+801 0 obj<</Type/Page/Parent 689 0 R/Contents 802 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 113 0 R>>endobj
802 0 obj<</Length 803 0 R/Filter/FlateDecode>>stream
-xW]OÛH}çWÜ—ª©(+Q +´"°ÄUÊËØ'SlwfœÔûë÷Ü;¸&ZU•hÏǽçžsîõ?3:¿ÓÉ%ÅÁ×è`úí”f3Š2<9»8§(¥£ÉÑÑEÉÈ­EIn-‰^T™ê­¥yD‹«ûɧèÇÁŸMN±aÔ*ÍFJ°1–¤JëDžË”„%©p”!AU.TI™Ê%‰2¥Ê¨Ò‘ —£—‡§¿þ|zx~¤­6¯Øï”.I›öÎÙÉä˜ï ë—Ÿð„݈ÙQ%ŒS‰ª„“AÐ.øÊk]:£sZŽnî¯îæTÈ"–fLFÂ4ݺ$¬Ëí»{¿Šäµ®Þ¯\~šP¨¬(·%gjI‚{XLéE˜Š>Å1ݨ•,ô(ÜÚçèaЫ
-•‹a²•Ñi8;& I:£íZ%kr/Õ=™Š\—+Úù^ ‡å‹4¢l¨’ºBM‡Å_i
-ÛÕ€dµUåjLVS.ÝGN°!§)É¥0ž$B™áÉ·àBÓ»™lc,P€_kÛÕ\ûZ¹R–/H…±°2`»û™ „‚‚S(¨B¹ê‚¤Ò&F„ÈÈ(§D®þ lR%*S„Ï\#F• ¥œµï%Éjµ9.`¼ŸKõ“n„,ti¥'™©K,ˆ… ƒÛ{’åF]8j†ÈæÞ\
-ÑP)á
-ÄÌH‚¦Ã<™%{S
-
-»Vú5‚yuºb·aE ƒK¾;ÐßïõJ´Ç­o ¨¿'ж
-$ô4S²Ý2«ƒf'}1,üúabžÅû‡ˆEG¦–àáȯmÊ^¡lkÖ=ˆÏîŠòâYͬã^£iþ *ÎQBha¾q›Íj¤ÑEþvIP%\[
-½’ùYãMS~°ÍB;<dŠø‹Û—#5ÁüÙÈÒBí;Ô»‰ex;<œoõ‘ùyÊ`–AEÐÌÖ¨ã/=«Ê1u2uØñ¡Ä 
->>#V¾Â)|êéùéäïÀ8ñógþá6:øûà?Q$$¤endstream
+x•WýO#Éý¿¢²)Fƒ=lVÚHûÅR6· ½Sˆtí™»—™é¹î ÿ}^õ‡mæØ#a ãéׯ«^½ªþí`Jü›Ò<§“3*šƒwׯ&ÙbA»f…?&”/γœf‹9~?_d32’*^³ý×/Î)ŸÐuô³ù‚®Kÿ9ž£÷kÑ9ihžÑ£Z§Úm”[Óû›/W¤ZºÍRPžåÙÃáõ·ÆšÎÖød
+
+×åhžMÿÇåþ8‰ß”Iþó3¦³é"[PCù<;Ôtõô<þ}žM§ñ<Ós¬{r"g¦»øß°nDÊ’ Vn
+ÝàÌ8[KºùûåÏÔ¥ÃÛB¶òˆ6kU¬i-,º½Wm!KjDûHÔ]-©ïtK•2Ö‘3JÔ$j#Eù˜ù­i<= ¡ùQoä½4G¤œGû­WN‚D%7Lÿ ×iÓŽ¸“ün©ªJÙ:ªŒnHƒ(@,;#Jå”n±k¢=ØÕ>Z'ëÉ„Óé"Ï΢^r<Ée?¡§3NÂ~0çÈ;½×m¥V="´¢ iÔÀÈ6Ë ªÂã$UÚx…ç»tó9 æy©q2ˆ.…UEÜ
+áS=Ø*AŽÈJ×w¥’nëGÄW––ÜFó;¬lû:‚ž&Ð?z3ˆ`Ñwö)ù‰¶|v}!:zCϬÈèëZA,¡–œ•uE¥–¶ý‹óä O€ -ÎîK2lœN>Ù©‰÷(÷¾‹'s$X&v½kõ&¿TFNÝKK·#ù (øw¡ð9a&ÇÒlj×31R÷Ø%„ máèÝÕ‡ÁêÛÃ$sÐuFפ*²=
+ Á”íZ÷uIKIªÉ¡æXH¬ ,¸—­’(DÒ)SR'Œ{ä=öHˆ®«UáÃ`3úÌådQ`\S¨~áO~TJ'TÍä0§(sŸÌçÍ"ðÕè³:6²ö<K]ô ÊÕoœL ?ƒ/Cî—]½ýüî-3€õt8jIb%T ±×jÉiõ‰o‡\Rž×õ)åðx…½ýrIN¨~¡4€µý²Áá¿é¥=Ä
+‰Îè'¬7e}ˆÑP{Ì+o"ô/¦Œ˜ ”|c@tD¹5 á<ÕÓX±dtD‰°{Z¨Dl ú›j{ßVö¼ëˆuO6Ã=€šd7ªËr¸OäÉü+Åiêá£1Ï·¼
+¾î§ÍŒ`˜üC±»¢1~¯ýòXòlû†•‡7_éÞë`h½¨1$ #WJ¥·d&ÓÃxjÕ¢K—û“UŽ™uñÂd5=çF°»çÙIF7–©{ëÆœ)3)šU§52±
+¤@Ï <4Ó+8ë«­z/N”Ï‚= A–ÜÚ :½±˜46m­ÅÀ&a'aû%úk˜ŸÂ˜Ï!†ïú
+ÿäŒ5Z®ó-!ù°çë}œ[KpkúÖ£çàlÚßÃc¯¶gß»yÌÃQ7Èî
+OØ;’U¥
+®¹:\%ãímÆ×üpÙzy[lo¸ÎïÌÿ{¯ŸÍg0ÆÌùTØøÿ—§
endobj
803 0 obj
-1722
+1807
endobj
-804 0 obj<</Type/Page/Parent 635 0 R/Contents 805 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
+804 0 obj<</Type/Page/Parent 689 0 R/Contents 805 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
805 0 obj<</Length 806 0 R/Filter/FlateDecode>>stream
-xmR»nÛ0Ýõgt³’¬HB7; C“´Q·, ue1¡H•¤äï{i…÷ò<õ'+óW )±©¡¦l×eßn+º'uÛ ë‘‹<ÏÑ©ÕÖL.DÐ;ùOôn’ÚâCƒQ¾îoðèõ$yx½ ¯œÞCÏ«Çë«ç »ÐSÐ^¾B%CJ5ž#^t¯YŽu±%+XñyÍd~g ;©ÞóyvGžBY‹*!t#@Ú¼˜–,fé£Vz–‘À^<ÍF+µ³pCZÁÓözå‹ „àÎÔ~±¨íþ‹èà6ž¥$-Xwt uWnšÙÒq+Ž,CÇÀRö:Dÿ)èM—q¨Ë ›©Ú†ï%O–ÊÚSeE݈T'·uV{Øm¹÷J*rdê01ÛÑfB_/¯Ö˳U+ZQ
-puƒÞü’Æe1•’ ßñD1²ßdä—“SºþÜ1S ÚPH¨US‰–ÿ!Îþ²>™ø™ý³Á•endstream
+x¥XÑrÛ8|÷WLùe•+I¶GNrO^g½å­$«;+µ÷àª+˜%& Á@;úûë@Y¦“§­8)E$€™žîžÿw´SüYÈÅ™¼^JÑýº>:¹~'‹sYWx²|‹¥œÎOOOe]L.æçs¹ú²ºåEI«Ã£ußde}¸-\Ýù÷ÍJf³ôNéêí¼ðºÝˆm_­¿Êl±œ¿Å¾¯^˜Êeiïõá.i¥<Öa·š­V¼”ö±5V•º”`¥0µnƒç–'×ç²X¤ggÜ:Y{é´«tÌNÔ½Ñ\×{µú Um´—»ÉAð+W·A;ù }̦¶­¿{5çë^
+ÕJaÛà¬eŒt|YJýPzÈëõüŒ‡Û.pé\Ö[ƒÆ¡=Öì°È>ÔLà~'a«¥Qm_©"ôÇ·º’í‰ÞYD5žE¤ÂV©±ó>ƒÑÑ<L™Gµc}
+Ût¶Jb«Cxóv2ȶòéVþª[ ìÅ:¹ì:€õIòç­øº9ÈftäåíÕÍM†“
+9Ã?ñS*g›øÊPœ»Éç5 NÝ‚Kw¯j;
+7#À¨·ø‡
+Àö‡ü_°’G}/÷õGQ eÔ <«4“2µ ¡{rbl¡ÌŽð~ùzqW"·dQR³Å7ø
+¥4,^âS$
+ƒeô?âJa˱ê:¤ÆÅ©8…qÀ¥M3mÆÊØK&²3ŠòDÌäó0gÌ®Ò
+¿Ì£@×qð~Ò¹o£*é÷µ¤6hҜΡ!¦ˆÙ~:åYT”$:g$C?hÁÄhJŸHRq4hì3Êvšô…³n°=úGÜ9Ê)mKKœ÷'àý/ÞK_YNæ2ˉ/‡7?ÿ¹þíýI ‡Ç2·6 2Pe› éØ©ÇãÌò¯öƒYìÓ£Pó¨ítƒ©uINBH(•RW˜…é?,Ó@§Ÿ•éõ»ù’“c¢í`
+“ Ðnzê€ÏsG½/áN¡¢ÁƒU¨—ëã€UÃQ’éý"
+ôàê &Ù©Gg7°d'&5ÅPãbçádtq,¤Ž}šs$†LbTeŒ
+M«Ñg
+^^0<·þ-ŽA
+ûÓ4m¦£ièn„*=LÙ£¬ŸI
++ÞÍòø.lŠ£/Â5À÷-
+$endstream
endobj
806 0 obj
-383
+2103
endobj
-807 0 obj<</Type/Page/Parent 635 0 R/Contents 808 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 234 0 R>>endobj
+807 0 obj<</Type/Page/Parent 689 0 R/Contents 808 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
808 0 obj<</Length 809 0 R/Filter/FlateDecode>>stream
-xWÛnÛ8}÷W З°Ë—Ø.PqÒlóÐ6[Èmh‰¶¹‘DE”êúï{†¤dEIw‹A%‘s9sæÌø±ÒÿBšh|AQÚ[®{ï×½a0ŸÓéO±ÃÃFãYpA“ù ÿñßBÒ–oà#Ì4püüfA£!­·°~1›Ó:¶ßñ&:»Ú‹¼”-ú TjºŒJ†-EôPåt­S¡²×ë¿{CŒ&¸}v¥³²ÐI‚{*ÃÉ»ªÉ‘V"Ýj>Æ­«Bˆ»Â`#6³€î
-YÈÇJUJú"E¬²;;¿™Pú£Ÿ_Ê­F–G]Q„TVIdmopå^Š\>}Ê)Œ¤T<H2ˆŸEiï
-<D:…­RlIUîÙàVíªÞI° |dÈp~ù£N8ôé<Þ)&Ó`îŸZYðñ8ÂÇ6Ä–»ë+†5–&*ÔFÆ.bIئZÖJvf/ piðáóýúóÓS¶º|*8EJÓYˆh!F E͇6ôÓñÓê/‚Q`ë¼+t•ÅlíÜï9`+|AO%.ÞÑ­ÿ”Šh¯23fhA'‘™x’èÎÓc%Mih[蔺x0¥(•ÎŒ%’Í’áØñã^e±>ú´öŽºßËLþ€=A•qfù*û¡Öñû“å>
-Ÿ^p©3!¾ÕqéÈÞJñǨۃ¡½BÄ{ k…5Éþ3‘J{"ÆÀGÜ|¡ò˜»"3)uQÀc@´ÞËõXÈ<QÒ8^
- W’Þ"I6µ`[]•«>á ÉŸ"çíÛ<rF¤î™C5¿y¡·
-çž)ÑV±Ê¥m•$d“ƒgÆ_t‰·¶ËÚÁ4jF£\|œbþBZÃïF"‰iuùѲ˜Åå"°ò8·iyÐô
->Ž_yŽa…áaG± 
-žr QuÉÊFÿ® YiúèÇ(©êyŠþj˜çuu4ÄTcÈÿºc&ÕRþäáoªúÃ{€lbA° »¼ÄyûªQùzi
-#W¾rûi…†a=GI6(Z¡E Â4všhŒ0òF­r‚í¢ŽÃ*SØ‚šÀì˜õAl^ ÂÙ¶çx« WáÆI öÖ‡BÚ`㔎¿§ €48ù"¬ð¬S¨P…ÉÌk¿|dG÷ë=ÔÛ 6¦“<£iû´q›HÇçGÚèmY—Nñr”sŒ]ùw[d|‡ú
+x•VÛNãH}ç+jÑ>‰8#ñÑ Áà%aW«a:v;i°Ýžî6™üýžò% Ñ&Ì‚ˆˆÝ]—SuNÕ£µñÛ¡‹.S]On§Gmo0 Í‡™ãK›o@½Áÿ{á“‘áh›ºý>¾–oºg|ªx[x ëj{ÔéÐ4‚ßóÁMÃâ}›¦AÃ-¤2ÊwHKÎãBMI,h&“æ”TD¡Qï2¥ÙŠ…*Š¤‘©+ŸšßN¦¯GmjvϽl7ž­Jç$R†z&É×ÖM£²úü)ÉTÌbÒR¹ Þ<û“¦ïNÉJ™Xr®ñü]šÉXÎ|-ÅŠ_h< t"+Ÿ3¯Ë>ER±’ìB‡ˆÁz4]üG
+ÍkQTl›Í.3°ÁÉ´ÆýŠœ Ϭm2+Ÿ×¤mPîÊŽ|i؅ʲºÝ¸éƒÜT,¼£„VéM‡f~C5 »èŸ9é5Y¡áÐ
+hݵޅi}ß²"™‰}9ÏŒ^ZY¨ÄÄjß±,ŸÅ*8ŒÉ<G 8ˆÜÒ((Dé ;N²:õYXNBÈ0 ­kú~„÷÷_
+ÌÆHÅ 9ˆÍ<ßL[»=m1ÜÒbÚaè„plÔ,‡b–³Wb
+‘†Ãìc‡­1– j)iÖc|«dTˆÛÈÀidŒvâ\ …
+…ãe¤~õÒÈm9[U²Z›o´r ÊAe‹yÞ*½¯Õ•'ôÎ0JÖ ¸î RJÞ³ïß>Ý '·ö¬<®4îb¢nbÁŒ‹
+-´{E¯·áhüøm:ñƵÇQŽ¯oýIÏ=ýùÙ‘¯÷þá#}otøÈó¯Ùïht;öŸ¦O]ëÏGw7ßîï®k?›Roà;ɺ¹o'~©°øÔduä–¨'Õ&UM3.#6Ú㲋+Ñ8Æ^¼‰ùÖú“å&ã…«ØA7Ä®8Pí~Û;B¯½Y¸?¬ƒª;ç¯õׄÉðázÈQ¿¢…i¤ƒœ‡†p˜ÓŒN³¼Õ,¯5þÏRÑ»èaP²·ÆÙ%ÛÂ2óÇÑ¿€ùšlendstream
endobj
809 0 obj
-1563
+1367
endobj
-810 0 obj<</Type/Page/Parent 635 0 R/Contents 811 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+810 0 obj<</Type/Page/Parent 689 0 R/Contents 811 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 126 0 R>>endobj
811 0 obj<</Length 812 0 R/Filter/FlateDecode>>stream
-x¥WÛnÛ8|ÏW`6lùÇv
-,Š\ÔM»ˆÅy¡%Êf#‘®HÅõ~ýÎ!)[U’vEÑÄŽ¤s™33‡úv2¢!þh6¦³)¥åÉÕòäýòd˜ÌçtüQ­ñeHã1~Læ³æc%)çp Q?p÷àö‚FZæ>ãCæ¯i™ž^$gÉ(¡fG™‘–}1Õ£uÂ)£)W:#å,®•BiJv•)
-Y½{³üz2¸Ðh÷Ç3>½¤»%íZ!ð”ÛÈ&ÀýåÇ«KüA8Ú À‚
-“Š‚j++r†V’D´S©p2£°üw_É1gRt–Œ9ë±.ÊME>KB zreiµÇ¥×Èx'ÝÕâÓ=iQJúVËjïŸâèëÊÔÛpÁùm”rœN:am],߇é†Lî»,ñYi\QŽÖí­DúHyeJ™s)¾Ê}?ƒ”ÀN…Æo»…YÝÉ\IÄ°Î&´4¤#³•š¬LëJ¹=mLð+ã6>_{œ;´²)ûpºütóé­=
-âk7×”nŒ•úáM'ï Ŷ¦D„¨ºÌ’GÌ1Û5 r2ñ¸·”V2ãQ‹Â¢Ϥ“›+ßrDÊÞ08z$ì#˜ ¶ÛÊ<‰"áX^BC:ŸÁ–¨¨¦L[ç“iò\ ㄾ€’<7Ný8i‰Ê³×TÀwË'À ±×Qyºz-‰;mZê!&¾Fžƒÿ™Ñ’ ¾˜Êú@ä溵QŽ:~…å‘Ö+† ,fÀ|þH]b;ü­–Âò4S³Ýw¦p(°3g–£HAÿØB/P²¬]-ŠbÿƒÂ=ëù¾#`ÂH´'8™9ÁÉdþl‚“„®¡«{Q®„wº‚.!ô›`k׿´µ/
-’Â@-»"ŠèA|¡o §|’ìz€œÚl\|èLj@íÀ¬Ö½tÈ&å5ã Êm!K@f>XâPïRŠ’™Ç#æi!r­3”â ohìÑM¤0O Ù$ö5+1Fð<ãR¸ŒN>LÙ ¬ÔjÖ
-óõ ¤’¢NðCÉáAÔ(ž„*ÄJ°³&oãò‹`²,?¾3Î3|f4
-d#ð­Q{¼Û”í #÷Û³å€9‹“(k<œuóËH¬á/L
-%½Fú¶ÿ5ÑɤzdÃ.h·vŒÓRLæfû2oâòÀà qÀÁmO0ýY2§†áãé,^oN8|¹vá‡yÊàþ¥Õ÷àî™pb%l»»×é¦2Zýó³
-<¥Ä¾jØ—Íâî´:.x{v@Õ'ï,õü2a›k'Q)t0èF qd–e)2Ù#(—‡EØЗåx·¸Ç=~_Dîp±|3›Žq¢“Ž°{c¸”`u¶£R"=ß
-n +¬‹Ì*X%µ©×^g‡\þz'Yð<+𠀉4•–Ïi¶3C>åò,½›q—9 ©®ä‹|9ƒ8¾Æ—)Kß³%xÒaÇ(Ç?(Õ–«8í#™>ÝN¯žÞž\Þ'WP¬«Tú¸‡b$Ú¶Z~‡¤qĦz±µÆt_k­‘Ê¥Þ#˜ó‡U²&Ê­šym ÅIp(°°ÓÔ“HÔlZ©-¦Ç £±xr¢×v0¼L`ÇóË/\g°µpJ +Šq8`ÝÉv°_æ/BÔ@ðDýñ'•~Ã[¥9¿?¹y5!Ê ¶9¿p5­cœßš_»Üy8ø?W;¸Ò¿|àúçþÐsÊ‚3ül<Ü8&7šN“Þ=-ýI>Wæ+h€£PŠwœÛ˜üT4áæþlŒÅìÿ½(NfÅÇ9ŸspÉÿ<ù1M©5endstream
+x•XkoÛHüî_Ñð)Qïì}J6±ã½<t‘Œ]`½8ŒÈ‘41Éaø°¢ûõ[ÝCš´âÍùÀ9ÃyTUW÷Ì׳€†øÐ|Dã…ÉÙëõÙÛõÙÐ_,¨ý“ïð0¤éÂ_Ðd1ÇÏÑ?sM[þ
+›hGs»CneýÞöLIØ"ÏäuDsÈMYê”6¬G]k\ßëØf,s¼K
+ßcžÁ”ŠEº×qÆzVi¨I>ÝV9z繯òæOvÆRï“’›Ôøˆu KËò&þdpÖAåÍÀSŽbHüv4›K;$Šw#šN‡"È`2帗'V$„ÕÆ%5'‚âÝòL©ûqBãáÄùx¨Ö2Ö“Ÿze’Ì™â¯ý¢C`þ Õ7Š@ýB\ªÙiñCµ^-ß÷‰%
+/Ú–•³V!ñ{1+¹­ÒHXElŽZ7FC±(Ìß1T«<>bCÂbP˜Ø‘8ŒËR¶·øûµR±)gUɶƒ— mƒ4ÛtW`'ü2ªÔ¢àôT;×?ŸbvĆr¬XÍ4€­ÃjÄÅÝÛy„ øPÛø¤<ÖAˆ’Z—_WùÆ
+eª`+~É Ž.„Ó)ZíÁ
+3Óú “Tã^8Úí;£S(©JÀZy‚œ¢¡„žô·PÇ1‡QMÅ“
+g@¯¢×ºT^Qr¦P¢…®/g¹.@ýíÅ“¤_ú³'£f2Ð’ÐlsBzûÈQÃCÛø ÒÇ#™¯šwËë_WÖ÷™Iï¾èòÿr¶×«7Øÿ1Ö›0år¥ÎÄãÜØË
+ä
+Æc
+éðÃÛ}¾sæ m}¾C¶în¹sim‚r.„U†´Î?ÛDÂî$1$ÛÁ}$’çGh[”Ùý™DÔþX„œeB.v$t²\…XŒŠagHôùv¿GY¸*ÒY=ÝZI%ìxü8rñˆºhº¥ºâ˜ðŸJ ßÁ?¸œ5ÅÀh ¼Fþ?­ßþ\Ñá=ž²ƒZ™›ðÎÅó÷{F(²-ñ#³ÝêœÝ¶‰}²
+õŒ«ø}úmòü SxÔJu'h§SxEèR`®`-9(„*£*„EÀ¦,hÊ
+Ô>®K§$ÿ|½„á¹b %’I‘‡OKÅÎNÏïL”ª¬8—<ÓǤœ©eº>28ÊMÛCÌîú\¯U¢”@Ë‚'êo|nAeÙaö;#„qűœ8°«ÃÞ„{qÜF²Ä`ÌB½~Ô;šd‚
+l™ÅÁÂí– µ3×â(.M±×‘I:fïyî[>†á¼ƒŽìÕSq
+PL× |
+U£<W;¤ -€IžéÌŒSòƒw`0»‹åþ-¹ÙHvÁXçxÂÜ`ù¼»
+
+P碜q·=86—=Ý«@†ÝË—;/R}
+BD½»ÊYƒb‡î3ð©5€Õg¦F)Åšjñ¡”ÞëTÐù ×APÕ`uñ©]í{-‚{ƒ{#¤ßšZï‘*’„ŠT‚£†eçô‡àö?|zEÆ]ÅGÑ*§vXAaqÂ¥ëâ'¼4øƒ
+Ùöľë°Á͜܀õºt5Ë Ë¢k|È̼¨f=ÂààrH/ùæ,
endobj
812 0 obj
-1589
+2439
endobj
-813 0 obj<</Type/Page/Parent 635 0 R/Contents 814 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+813 0 obj<</Type/Page/Parent 689 0 R/Contents 814 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>>>endobj
814 0 obj<</Length 815 0 R/Filter/FlateDecode>>stream
-x•TMoã6¼ûW< ‡¤‹Z‘GvE‘ìnкM==ÐÒ“Å­D*$Wÿ¾óhÉqÜöP,ê}ͼ¾Ì2JñËhµ ëœŠvv¿™}ÞÌÒd½¦·‡Ûá%¥|u“,h¹^áÿb‘¬É1U’(s| üê!¥[ÚT(£Ô¦ŒŸSÚ—¥m•6Ô*ØÑ÷dì·›¯³”æ"r
-hì΀½D\=,)ˤæ<£ù"Ç(F¥P3ý¾kìV5Ì=A[C¶Šç¾Ý&…5Õô~ÿécB›Z{ôÿ“}ŒÁYÓ €³Óq(©hTËô|÷ÓýÝ7Y1Mx}hº×¡Ž©¿=~y&Ïî•ÝX•¥ÎÙmÃ-©C‡wµ!Š¾p¸üù™vÎöÝ¡Y¨U-+(i›nù8 —´¨µàI
-î}[åáÅÔ
-åò°}€`ÁŽwrZÄ':†Ý&‘œºfyÿ‡kÖã5™å«Dnvܺ'×o´3=9û7%ŒYô-6¡äÒ”!懬ù!íò»l¹Z¨ÒòòæV
-Âä¿Ìþ¶þÄendstream
+xíY]sâF}÷¯¸!I™©2 !„S~ðg­·lÌœIÕ0åRc+–ÔŒZ2㿧»%X³;I%—=¨[÷öéûÙ}ø²gR?&õ-ê:äÇ{'“½óÉ^Çp]ZÿIðÐ!«ë6Ù®k8dw»†E)£¹Á,ô¬þàýö…M¦I“9Ô;nŸ&šïÐÄoŽR>ófÑ ½ðœ–^’QÆI0FËG/ÛôÀÃäxbÐ`”=2ú0ù}¯}a›­g=P.Ѥ…—z1ËX*U=°Œ<Š9Ð=³tÆ¡„çÙ"ϵX‡˜I-«‡ M‚fÊyö£Z¥I~¾^ˆxF­gjÝ‘œ¤0™óŒù÷—c«cõ¥žµL˜HŠþ<!–< hÎS-’²/y˜²@Bò|Ÿ A÷½è‘‹ŒžCÆÇ×'Ç
+Ó–®Û<I¤ |Ç^ÀøQÈ`©v{¥£½HÃ$›N¢Ö8÷%ΟóS–íS˧ýø)Súص~s_°}j?{i[,8Úr—í,^´»~`ú¾ãtûŽß)^noîÖδ|. ÿè¥LËi‹öñÙÍÉùhÜ3ή®JÕ±]„ïj„ÕØnÂÿºm­|g`l¿ÆSp.œÓ±tîùŒÂÅi:ò×°{4ó=‘•C]Ó°z=JbO<á“|2,±¾£æµ®aºø¿T]«QŽvUÞ—Ê «è¥îõÐîªÏxì…ÉѧÉÝo­áùä3ÝŒ>Ý%á×Ï4f)\|ôiìÅ3,Ã2ºž\ÐêØ–ƒTèùÏâs)†“ûñäxr7¾¿9ù÷ùéä~x|}~zsuu9¾¼Rì=ÉOYŒ´"Ä)ó3ž¾ÐtªãµF%"8“2ó0b;„²'VÊj♦M³ßØ(eO³¶˜~À€‡zŒäœ\L¼‹d—¤¨‚©f†„Ñqû}”¡×0Ì®ÝEÙÕß C§W =1mö:•=WŒ1°%ºï!Ó´„œ˜6]×rþkS ,»ß°„eÂwEñýc æåÐîìZ/å»5áõNѺ¸NÆÆõÅ5}T
+ŽÏV#ïHªBkg·¿®D×C»ÉªRY,[Èb蛲gç£ÛÉ­%;A±nu蛲—§7ëË]ÞÕ²•‘oJŽÆ×7ÊÜêù—ÊúF;z£cü½Êºtý»õãÝŠ.*Œ^RPAP­¦Ñ{]Bä„…ãÚF ©à6ÛË›E}•¨E+i=ŒŠnZ¶,N5Ý5-cðÝÖ¿ ¢2ŽƒcJ
+ÛéŒî…b]Ò S¬kŠìn¦åöêQXîÚQïÆþ¨V¡ª-6ÆÑW¬n]L˜ÖÀ¶¿»ÃVÊYBuvXNj51Ñ5Áªçý¿vX•Æ*‚õ ÖwÇYµÐJ7»&Êž[¬ÿÍÞš.üâ2²ºŠ¼uÁQ[ߨñ1L¾4œÐW×iPc3}«§¢ÃÍ9ÙuÊyu\Y? ø‡wWW‡·ÇÕ‡F]kð『è/
+(݃»$(Ÿð‰I…í ðl!Ö2 ÕïÜ’µÜšå
+@Ì–Œ›<²⾟ÂŒù^^PeåU:ÄÚ›ë6Õ]c['ø¥Í×$UÀ[_Å×~i’¥Ì ^ˆ} …´#PI+~RtÔOŸK¯£Ú'÷R„:Î<å1x¹EÊžCž‹ò½¢ÊyYÈ“é‡bcpƒDUÁÖ)Ž$‡£³UAa#]4äKí|…ž …\¬ ðIBNÔM áÀ Æ2èBãÑÃ0bŠöº‘«—OïFã¶&=„¢@ˆ/X²Jªm]4ôN( ³ôúO`1¡N¡ÑeæÕí Æ¥®ï†a4§<I0¡ž§Í€a½@3¡ÒÖÒe?•,§²Û’”Ö€
+Ø,Ì°ú¢¡ƒËYÇ>2Zûìfr~X„h¯dv+ì«\ÿ2Dªó}1eQ¨øcð­O"³G’“t¯2†ià§'ú_ ¤Ùµ7UJË6èr¾eÔ0£€3‘ìg$uÃ祹
+/ÏÀ’e¡¿2bQÝVq^DNf¥"ÕÒY 
+L–È°“­…Aóæhõ«ž¯–T[*]&oÞ2˜ø‚¸Ftp8v6yì§áÐõ‘o•ä¶ -@©ƒfE«
endobj
815 0 obj
-812
+2014
endobj
-816 0 obj<</Type/Page/Parent 635 0 R/Contents 817 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 247 0 R>>endobj
+816 0 obj<</Type/Page/Parent 689 0 R/Contents 817 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
817 0 obj<</Length 818 0 R/Filter/FlateDecode>>stream
-xXMs㸽ûWtíeå*‰’(É©ÊÁ¯7®šÝqÆÚtHHBL\€´Fÿ>¯B¤d;›¤¦ì1E
-±ÑW5=ÎïÑ¢”CúüËxŽ>2ëìü´d
-('òWØ‚¯ü gÉR¯ ê‚Xâ9N{Uï{¼bëµI!,bÑM¹†paÒd5åh5ðú¯s·Þ™Æ!V·ºô$
-"èX”uƒ‚îa~½[TóÒTŽÊ/@›•´¬%q¤“4P|Š…¢úY½";Q^µú¾+HO ¯÷†SÒ÷»=§BBúþ.Ìì³Í24k×öœcb`4Äç(ÏÌð0]Âw 6HX²/g¶r  'VÏÒ«Ë!ÜE¬œê—€ª£µ©ëBÂÈ‹÷
-íY+ÞÃ]°‹Û÷ tÒ˜Ó7µ!¸XäQ
-FŠæ~¸{zl5ŒBRÁ :Ðk89Ü2}çCЗFƒœüý©mXà
-;QækT€ÞðÂjPYùª
+xMÁ
+Â0 †ï}Šÿ8«í,í®ê<ÕÕ®ƒ ®Úv>¿ó !H¾/É›p°ªÂFÂ>ÉÎõQ€s˜>wd­`:0ʃ±…ö1µ6 ¯„ëI£ŸF›?Fº2r0$B*I+ˆZåºÊúÅ[ÿ¼\*:ïÌÊ?w»=ï¶ÐÁ?œMh¼žnL÷Ù?ÛË…*¬PTQ´~
+ÖEøû›nÑ…áãBÄZ7q¦„´Î˜®ÕïÈ ùU*@ endstream
endobj
818 0 obj
-2085
+189
endobj
-819 0 obj<</Type/Page/Parent 635 0 R/Contents 820 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 256 0 R>>endobj
+819 0 obj<</Type/Page/Parent 689 0 R/Contents 820 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 133 0 R>>endobj
820 0 obj<</Length 821 0 R/Filter/FlateDecode>>stream
-x•XasÚHýî_Ñ•J•I•H`ÀûéXg}g{}×ÞUùË 0±¤ÑjF&üû{=#„ Nv/¡Ñôë×ݯ{üçYH}ü„4Žh0¢8;ûuqöyqÖ&:¼•k\ô)öƒ! 'c|‚ •’Vünb›æ Ë{7C
-CZ¬°ûh2¦Eâî÷iwb­tiÅ2•´UvC•QùšDN&[˜mB+•Ê 2*+ÒÌ©ˆ%}hîð~¸›M)Q¥Œ­.wHå$Ò”ìF~Z|=ëS7ŒwW™Ì­°JçA}3ÁÜ\l$<ü¢•ÜR¡Un YMÆ–ÒK]YÚn„å­‰ïÝDµƒn—½è¦‰(ŒÈüͽ÷J´4”kKE©ßT""Ø#‡ÜTE&N°–r%ËR&
-ty9DYd4èO‚«ú*¥¹+\^•@ª–¥@HÌ£^Z¡ràsaxœÎîh®WvËIùÒq Ò”—³‹ël¬-~éõ¶ÛmPˆ$ àfïx©«I^úò ~ý¦·n]¸”J$,¦Î=0¶RëªD(NRÑ9N…ˆ_Å`ÍRî˜`ÎJëBr~¥§«.O]
-špN*·'JçÕq/¸†Œ¦•ð±e!ãH¡Æˆ
-âK©«âv†/¡IƒaÏñ¡¼ºœ#?i6é¼›Ó~àâ¾sZ[uùýv†æÀú­·<``áÄ÷©°"cØ»UO·èo¦Š7œ½©\ ÀšÅ.GÕÒ?¬åÄ‚lK †_S5Nÿ xHŽ[Íæ{Åf³Üú!Fœp2AÂf'¨
-µX\²Øµ¥ÌTËLùùùP×-©ÂKÿO„ÿo©.Æþý üOäagf°9<¸Ãs•a>fc‡|l8¶:YQRÉbÃØ8Cæ€5Áë_§5ºú;û©·Cx®Üá£O¢ËKñ±9DàÓníóÃí€÷Fw$ÎôXÑ`Aãl…Ž…çÄ#!ä~m÷Ó©#ˆe4Q8ÂTµ¸:dÍá (Úó%å6<p"!!ãi↷’—Ž Ök×˧šrå©(|2Kížv'27M°¸£rtßñUƒúVëïÎz·9A÷pjâÎ#Çö=j!™Žzž—\(ì1°Æñ &
-&[cC^uùv'píüGÞaú mK•û#k‹]$2—(`còû?;8P>GO¬zÞ9ò½)áž‚æå O_×ä§ÚŸâlPh-m±ÍEö‚cÄI`L ¸—.øXÊUÄíÇ'¶½l]Ä•2W)Rk# ÛÌ¢·ù¶7¬r ISˆs¾ªr@uÎn¬q(ŽmºÛ‡™“‘h˜‚O¬¶K9¯Ì&ÎßÚUä¾â9ò ZÑwb€Ñ]`P¶5Ó,ÿ|N#¦ôÄæ¶x¸sjó9
+x•W]oÛF|÷¯X (À
+šÆ/ß] dîfI<E¨è<Nbú]•MÙ¬H4t¿ kÿø¦´E`êÌ)Iº
+”òh¥ìOš$4ÕÔéZ³Éiô€˜Fšÿaæiô—5 ‡/ó*4V «ôÏî9 ÷‡B}ƒ„èázˆcW™ËÅðù+ζT  64‰#þI5Õ–j‘e#ýï, Æ‘³LÚ:Bƒ¬Y.ï(V¤ÂÈÇD¥éª‹ièúôGê‹8†C]©æ×
+9ÀÈquahUµÈ›Q6’+zK´ÖåsYɪT$ò<Íõ¹t~¤b¢Û%>DiršÖ²l+rã¾)¡#™7I²+ù¾<z%|tf#óÐ ÈÁIöËâˆ]ÍY%ü¿o¿%ó ¨x>ÄçTÓ49‰ÏºO«÷Æ2æÓdžîaLè¼Ô–¨0ŽM®61=t°]‰ûYõŠ"êÑ>FçöO9”î‚Ö¨Úu¡VPb.­(+s8ƒ~©òúf£Í峬Ժ–hZ¦r×ö8ØRgnÎ:TkÙVù ô)ÓR@˜Žï YÝb€CûUsÐ3>ê†-•˜
+Õ?£
+x–›¼ªz]¥ ë|‚V
+m¡U»*ö¬½„),¸ÖʪLUÇ|¼ñCÈ!XÇÌ+²ƒš®;—Óâ¢#0G7óÀä—`·Ê†'
+Í5~Ž:e¿ÑO´ £«¸?<ÕòEÔktQ¤êYîh¡¾+þ~ð~'ØzÜ­#~…l@Ü€þ)g œxxS¤JÕr]‰ íï.:‹ë+‚^l¹ðœëÝ‚pÏqÛòCnpyÓÒšØæé>¥QìŽð¸éõòÅ;KÀ »NmN·Ä«Ø}¨ þ „"w3E³%Õkj11ÝZ6&ƒ'¹ÝߣŠ]Šñ }Xý5“WªsW³5VÖÇ.£)ÂHØ€ ±¤½Á°u2…€ •Ëi°¦çIŒëÃdOàø³“ßꊜì¹ü½Ú£lp¨RÒÎb¹$/âp¡áKjÍ~I2/­ïª{µÆ7ý`À
endobj
821 0 obj
-2114
+1500
endobj
-822 0 obj<</Type/Page/Parent 635 0 R/Contents 823 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+822 0 obj<</Type/Page/Parent 689 0 R/Contents 823 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 140 0 R>>endobj
823 0 obj<</Length 824 0 R/Filter/FlateDecode>>stream
-xV]oâ8}çW\©¥R „ï>¶3ÛU¥Ýîì–yC™Ä€g“8µþýž›8Rf&•¢_ßsνö{'¤þBš i4¥(í<-:¿-:ƒ`>§ÓËlð1 ‡)^ãù ïp:
-†d$­a; Ñp‚O¿4ããÜÿòn¦óTÆCl.½ nÿùÂ1-ÖÈh:™SZÄåî-¢n8&}ÒÙZm
-£² ½‰t%h§Ü–þøüøånñ½3 ÞÖqeôW.3^¤ÈoNéŒMûÏc
-Ã*Zo8ãM M*‹’"–d‹<×ÆÑZr[|s¬Ç(ÒEæH¯¾ËÈÁ–DvŠ+ƒ_µ9•æ?iîi­Œuˆœ؇Ï/dà¬ôØh+SËD’Ód‘Ç·ö<[:zªÄÿ1ñ) „7£µ»¡jyâ—»Q^å]GéKõ5Ib‘÷«ÐýXx—¯rïî€0çÑÏ*8÷Ò­
-@í-\_À\´6´¸‚2ŒP™%·Ó$œ3jU8iy?Ø®ÑÜmU´¥X¢¸˜Š\g¤‘±¡¾6 2Èm¡âÛ“'RûÖ*“13ÚJ8Ò+ÀVÎ`?¾@ìm¬lžˆÃ«Håõ8ðD Èg“Kcuv%$ u<¡:ÒkŽn%¥d¶’5Wq ›•„Š!¯Ÿgð¨·î“zhóRn77ÔÓ± f–ýÛ…e“Zv#$S+Øù^ sbZ˜Q$nyWW€Äê®»’NO+|ÙFý†kï¡‘F&eŒ0ÜÑÍnþåP-a°2Ýk„ÿ‚«æ4ùXz‘E:M%F—ÛòI­é  Ú þ“Ç<VÉ?ÏŸ†£Á \½¾¼-ï<- @l›–‹œdÊ6´ÜPF€‡}žq6­Æã æ+‹£Jœ‰s[áÊ”SŒ duÊ¢U$-¡åËïª+(Õè‰ÂÊu‘$§f·÷(þ_ÞÄíPWä'òZ'‰ÞñÉ"÷"Íy_“C7)˜êÂ@f–R‚Ã}<¢DX “e—gC®­U«äÀÿ¨½?=ZA½Úÿn4‚K;™$Ë»ë­G/¾b°VCQ;õ7Ͷ:‚8m[–@OîýV&“ïÞ¨Ñ<µ<òÕ·t¨<ße"]v/´*;Ĉ=µ*åFÚû£×ºKx2xÑåqív%òQñUÇXk8>úldÚÔ:G¯s h1^™Þ&<Ä[˜ ±Ò¢b]c(­$s:‹kª>l® ¯EºÂÄÏ1ÑSñ•ÙæÇÌ¢¬Qõuo©äˆ_=FUÐò67 ÜÚ.ß¹æþ¶Ngßùútºu½=þùôH_Œ.o<ŸuTð9^¢zÕ®^µíÇîhãÙS½¼¥M‡Œ2ü»ó?
-endstream
+xW]oÛF|÷¯Øú%JaÓ%Kr€ ðG¨´VuNäIbLò˜»£eýûÎÞiŠ6š¢HàYÜ]}?ÑÿF4‹i<¥¤8¸Xüº8FC¼Î_Füå³IÓt>†TÐh2æá·œîø¡“ë F´X!Üt>£EêžÒ"ÜÊ'KÉF”kIv#éíâ'éFAÌÓq4ÙÙC¡×tr‡,Ï~"Ú*ý°Öª®è='yà~r˜ʳRRV:H­sµùßddb3…i)ÒwìÉõiH{ìòÇS`]¤ƒN>ºútÃ9»D´ïY2CøÏ”¢¤VîçT ¶’„–ôMeeV®£–£Ó8šÑtÈ|âh~ ¼ƒíá ìòý§ª©¨%‘Eñèi¯„F^+u¼Ág£è´|_{ dýä$ËDï*K•0ü¤æÇ0Ò2áž>hÎéh°“&¼ôÜ30…(a¥4íT­©6RƒUÅ{PÇ£1ÄŠöˆl—6K„Êñ}» ÏW—¿58š‚ßÓé @ƒsfÛÿÖò{:»hÏz¾ÎJ‘ç»#iJ÷ )Tš­v÷oI4ÜvCÛxuwÇ_ǧ`~?í¿10÷aµŒCÄúýßøáxÖZu7nóò,€dþvqu9
+ßcßߦ™Cj,6ÒxýótT:+„Þ‘(SZŠäÓ†$Q¥Õ*Ϲãw¢X
+¢m–ç$¬•$‡ó[Dby®½PðZWŒ™…8õD!˜‹E©;¤H6aVÑ3‹AáR!v´¥ÃÀΡu°;Œ|ža›'z
+vB—ÜA…3]yWêŽGÁ^¯„}ÀG- ‹+r >ž_JzçEÐøiúKýìßûª`^¶Qém7Z´…Çf,´NdÊt{…ÄÑ0šÁ<WÛF6¡ù©€¦Ý°'’×Tf
+¼$l¯N8Gª¤‰hÁ5…ô$3<­i©Ñ§Dk ;&ÊÀ ¾~¼½£TX±`®Q
+í° m¬±+Œíw½5$-Úzgôõ§BB;@ƒ|k4„µ¶söIIžÁÙ<Ñ™5àÕ»§A…MXëÌî~büM@ãñÀd>ÃW‹`´òÛÿ GßþñÙYÏ/aT͈1Š¯([qZx¡¹±¿9y³nD¹£Jª*—~ ó€æj¹:e¬®s–í¢u¿A©Ë,p® ;JÏ*~
+DK^&oØl<¡ÑMÌëZ,‘ØS 0¶Kô;X,²öb†žªJj  "m‘=5tá'“×…l²6§Ä*FȺ†š1x+tó¿”v+¥¿R’L'u— ôÅßë 
+:tY]p.3~ X0.0".Bæwñ³ýmœ)œ…Ì6³É8Qí¡êƒEDç¯E¡^F¯JÌS)eÊ3¸jè~9IØ \*Ò˧`íúÀH{Áþ´un±kŸk£{
+ÇØ@g¢–U.ؤ—»eŒùð8NÖ+È:±
+Ûø Pbô dºTEUcc™Cº¹¹Äñu“%Zµ²ä32ÑxWiT.qUy cs´ ãÛ%þ…á äóþùâ›G㈾nvþ€GÁ˜J>¤Qw +ðFIïƒ+üÂU½âf—µÖ€Ç‹9ô©}’v S¾± MJ·Il~ÎîpàÀÀaf¹Âþ¦/eöÔ^ÀÌ+
endobj
824 0 obj
-1030
+1710
endobj
-825 0 obj<</Type/Page/Parent 635 0 R/Contents 826 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 271 0 R>>endobj
+825 0 obj<</Type/Page/Parent 689 0 R/Contents 826 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 149 0 R>>endobj
826 0 obj<</Length 827 0 R/Filter/FlateDecode>>stream
-x¥WM“ÚF½ó+ºv+A[µć‡=à¬×v•í8^n!‡A@ö !3’1ÿÞoZÀZqœ¬]Å2ôL÷ëî×Ý3wà@ÑF!Ż΋Eçå¢3ð§S:}˜ Ø6šúSO#|M"?$#iíŽ@
-=Íö÷fŒi±†úpŠ/ Ë´ˆ½`àOü¡O¿éln
-“fz»•¸Y|êôÆåÁÞ0ÂAo±…­”>¸{aÄNæÒX°/¾ˆT‰•’”fdw+?†VÒ™:Ò!Í·TêV:½^ÏýÚS‰Ø[±»4èÑAX¨‰U‘È„» ê#èÄz·OUƒ×wbWí~àbðñUg"FaúcÚBU E³åŽÂ™?:“]Ä’•!–ÈLDPuDçY«ay·?®<îEÈžxËaq8€¸Ä7pnÕøxqÂWɦc¤9ld­øN)sHcŽÕ)Ý%Ri¾Hó °“™£`¶\4`k˜9£“ìl¹£ÙôBöïŽLf`ákÙ ‘ì@³${Ž#QˆŒÔŽðâäH%›ŽíI#û °‘Kówpm±^§_Ÿ6!ÿ5X^œÀV²hæ4id?6t¤úì:U¨êç€ Nõ6áÅ l%‹&.²ì'ÀN‚¶ÊÛk“ÿ?¨J9¤ÉpÌt¢ÀEW,
-}
-„ÌÑ!/ÑԽë[âÒ›,o.÷ÔÍ£ÈÐW7Ðœ%d5ZŸR”éœV=~/E;[i¤OôZ$Jù–¡ƒî•d¥§Y$äÓõmC s/†•·÷ó”¤Fƹ6GŠu¡{˜0$¬SÕÐÌõÿ€zC—-´®ëkêÖô•Ž…êÃìJôUºê׶jYnûŸ¥WBýõägrÿ¬Œ1qò#Ý9\%Ý
-à(÷_¶‘™4Bá"Í ¤dRÙžJ® 0±]oПÛ
+x}WMsÛ6½ûWìQ‘i}KîLNœt<Ó8n¬Œ{è"! 0iÙýõ} @$D7eÁ°oß¾ýà‹)Mð3¥õŒæ+JË‹wÛ‹Û‹I2ÁÿùcÊ_~¿˜M–É5­6«dB%Í«dV=ò©« šNi»Ç}«Íš¶™»`BÛtô,ëW²ªT…¨©1Ôä’L‘ÉšE¹deÚÖªy¥Òd’~Ù~c ± X\.Ï,Æk<ÝÌ’é9ž õN.œcëÿ†¯5 ²ýþ´û†Ó£1Ñ1—µ ˜¦-2ª„µp§6í!g·øì¥7t9ñ6‰t£RÑ(£©–?ZiæAГҙ9Z¢ûm°NJ;~¬(%Å+ í»^’©»S×›2u¶äDäfÊ‘›3š’¦³93åV!rˆ×|á ö{(¤°X÷RˆXˆK|î[N’ùà¾sñ€»€`hÎïà?Å꧴Ó+ÏÒó
+¡˜WÛÈÒqØ6†Ÿ¤¢(^ lYuÐôõþî/jUî`àÀ_ã‚ã°tLøý·¸Ü·A8…¨V6!ÚæÊRÊÒÄ_ñ, ã]…¦L>ËÂT%ÂK»Zè4—–Œ
+ÚñŽg™±#µôœw÷XctNÎVÉ‚µ´Å"{ºɧ2‡ú²` ½”³ÉèaÿìËh I=€ÌÎDa}yxOi.´†e\*_DÚÀsÞىס:’·Ï›ÌjÏ,•RhëÓj`Õ'¤%mŽI(«J4žz®¦n‘KàΉÃ檲 æ¿ÑtIfá"ý=R‰LÆôjZJQdÙÀü©:qUàkÁ7´WKkÚ:•F§°\<#çq²Bñm_›2>|:ýpû>HsÒ „Ѥ©i!++¶¡îdÅEe 95¹Kø«ËP‡G]Y+[_§GÑ 0{/)²NŸ^®RŽÚŸ¿KYzjêÔÕ0SIT)WÈ”EQúpªiœÃ¸«0øßÉÚ ö
+a$™Ï1øÕœ…ŽËÈà‰sÎ.@ù¤ÒÚX³oÖ»
+÷
+¹92cÙq9
+âø ¼qD¯Þ!ø®\Ä1CH`p-­àG´zq™;/¡:fÍT ``º÷@›¼u 8©86¬¼~C'k;ÔÙ *è^i®¯°à,BÔåyÉ%ÀÅ÷,ÑcÌ|„½p6}ºûÊ`]ZsPÞ‚|æTÀŠ°Ý81é –”t¥›Tƽvê¶qç°mšs‡è7?ÞÝú …*böú §ƒký‰ê½>pZŒI6iB7(ãxŒ€Å¦\uc¨[+¼G±—/ÔŠgàoß6-&ŠPYÖÝ0Ä~….Ã5sR ÿPf¹ß‘¨ªB¡ípÉdB( 
+¯qmrØH_µz íÔw:y9 L{ÌnëA"¸\s݃žêŠCŒ}5o'Òï¾êñÆ'NÞ';°…[fc*ÅwV85Ê=|¯ŠO ˪À€Ädzå…Z)õ³ªæ΋¬ ¢Îùå˜á6>0ÜõÙ««n„½<uÜûÏÛ¿ò Œ¤óõ4YÒ|Ê͸¤Ål“¬ÂêÍ<Ÿ&<[»¶ÝÏUô‰5èåN äà¿C=™I[7G`è³È·‚¬Ú„™÷zy’;sÿ(íçä~Nuƒ:Ï©ô‡ÒíË“© ßκi¬›dO)àjáèð3?Í'~JœóPçìY´„ÛטûgѲ¤ ûÛ?‹–˜AF|)ÞÞ¢ŸàôpL¼5,—‚÷wWHʾʾuÎU¯àÎìz< À˜Ð ¿Hµ½WÙ„@OWkŒÃë^S¢÷•Ç›Oïnè¡6ßÐï0úȸ ƒ•péO]úc£M2K‚JY“§‘r6Á›Ó­›RœÔë$Á†F‹eÔŸÿ9%{endstream
endobj
827 0 obj
-1429
+1490
endobj
-828 0 obj<</Type/Page/Parent 635 0 R/Contents 829 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 274 0 R>>endobj
+828 0 obj<</Type/Page/Parent 689 0 R/Contents 829 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 158 0 R>>endobj
829 0 obj<</Length 830 0 R/Filter/FlateDecode>>stream
-x­W[sÛ6~÷¯8ã>¬²#Ñ’,Krfü ¦u›[ñVšéìŒ_ ”% 
-KHï>ËØÅ™°vHŸ+ë(Sÿ•TYi.ûDô«>É£4CRîöÝöóÕ˜F“[½MUINÓYWüa68Ì´í¢
-”¨4•FŽœ‘’têzúiõB…È¥-E,ßûßìAWYÂQôκÖÕÃ/FW¥&ñC™ U|Ö’¿k³¿n ½_C¢Hˆy‘ºÌü²o?âSŽè_¨AïÐX©ÚW¨%’4´ÞlüÆ/«g_i“¨bŸéuPÙJdÙU*|¥o¤‹o²D”oAÍ>Â)]Pª2ùú.ªÏšÎÑvócAî Ia%M£it;ôÛù¤ê~æ\F{¶Næ¤,í°4!ìZj«¾ÔéG´=à^.¹ î \غ—].|¿îÄïá«Ü…GDÚP¡O>[šÖÛ‘GL®Ž(`ÎÇø:Øgz'²Þ©R¦c‘Õ±Ö•ðÓÝò6ZÖ„˜‚ nïi‚:1úïî
-eBÃp ¨ŒQ§W@ÆCR¨ j298¯¥ºr”H£ŽÀB¯¿¼NµWðÝ9Ê¢-ÅÞFä©”C)T›<(èËO&Ò •¡i)==߬·ý†€t”ƒÃr>:°¦vŠ ÛÅo¿°wÐl²’Ã…ð.2Ú\u.sšŒgÌ5¿’o¾±¿»,¼B]ìæçõ‡ßþó²ýøiMñA
-OÛµ¿¬jšþ©¬}H¬µ' Œùá#¥Òh§cq%YBPÁЄõ6Gèaíe¼øxKm=ÚR´•@ÎÍtÓ+9ÖtcÑÎsFæ*Ëøô£J &¶*}ÇÁbœÎ  °\ @e˜‚7ô>Öy^
-Q²ùï¤;It=Î Oï`–¡ÐkÛ/Å1aOíWÔV瓯ü¾(º€Ž<´
-¬Ð/ ãRœÓA
-në_­><qGBƒ1çúÁu`3Q&ž°áFK¨÷ÍÂ{¶ø „ü.LE?ü@ÁS8Š@üà,IqÍ3\lH0< ¡8;ç™C’Ùe€ÄÐÍ~s‘Ø$íÃÅD‡jR¯Ÿ!þ·;SR<\ÇÅC˜ÏVìlCÌ–å·gË&‘v‚ímöOîNG½ñ0Žæ3óLîæ>‹cêYFµ——2VÆÑÚ¿%†ew.ñHûúôf]wðc†½1Èxiñå°¶{¡ÍÝaæRå~Ç£WëçÕú‚ÂÉ|´;ƒòlØÍ…@^ì3Z
-†Ár ”×Þ™’hÚV¿—äP4V9L88ïWg‰æ5¦3é4Hõ“NãKoáq©áà½Ï¡ïÓÔ$Q¿}GüÔ‰¸—Ëÿ!þò”< ë6Ò¿Þ¼‰ŸEã®Ü£°Nå|Q‹ N0ˆÉýb쌚ØTi@ßl/TowŒå›íøÄã9ÞNypßÛ¿e­4“ÛetOóù}P‘Íêùǽͯ¼ô“Ž+~Cñøá G“ù"‚è,¦~òýŽ÷‰Ù‚G'¿z>ã-0ˆýûêÅôqendstream
+xXMsÓH½çWtqY§*V,ù+æ–²P !³ì!U[cilH1’ãõ¿ß×=’,;pÅÅŠ4ýñúõë~œ„4À¿¦ 'g'Wó“óÛEš/ñf2½ yBƒ`0À_âÞõZ•v4 è­ÝReéÚæK³Ú8M*[(Š‚ˆTIêtþíd@ýh„ó½{g2åvtc3er>S9›¦ÚñWì/Ägì¯? q'fAнÓNÿؘÒTš>k•˜|åOŒ( ëÑ”¿¿ÒK‹vvC1¬›|£ÉùÕÚ”ûàϨHµ*5e껦’CÇ{UÉa…§Øf0V©Eªikª5[”ឪ4q\8ôÁ.MªK*µ{21~À_™->E*Ohí‘Ò¹X俨$3¹)ÉB•åÖº„Hç±Û•±9[4¢ùZ—°Ym-;}3?áZHA(ä_Ÿÿ< ÃA0¤ñä"QFáEÌ꧔¸¢<Îð²[ÉÊ&F$ß'àœxœ4Ir‡NÜŠÎoÁÁ¼×$÷Ø?žÖQE“½×Œ†á(ÅÐZ”ÄbSÅ&äãQ¡¼P+-(Vk 蚇³ÑäY­3ÁΚøŽ]¼Ùƒ^Óã0ý&ØÙ¥gÑÛ_çAaÐ7æbûºÐx|Lht1 h„H˦¥Š£QpØT³
+èJÅßWÎnò„íߎk´Ñ–}Oñ;[é×RóÛIS‹ËMµ¶î’ä­?ÚÀÚy@ûÄÆ›Lçá·br/L®„fœÓz2 ¼ç¹ÍaæÕ¾‹ïo® ê7<—Ô_I5êïîæMOß^~zº^YôKãÑÓ«ÜÚ•:Ã;¡ÍµÀÖ—ì&BÍÞßø
+x–•¢pÆ:§}Dz¸¬U^¸’H)V…Z˜ÔT†{Ä’Š+QújòÄnËœF(Ä¡
+$íg±,š]?ÐËgërÉÊ:
+Ÿ Gx7%èu©PÏŸ€Ü|þ«¶hP¾LX”jv>%êû…›áƒÊ!N¦Ÿý÷ṄòsïñTjP‘¶~†IƒÈ_Ú-´³¾cˆÏcdÝVUëv?ÏùW:pD¬{¿}€5Ùâ¦ÐDÔ
+¼Ö´-p³Ðbò©†/¼àFRʆã§uͽýµì”Œv~@þyñ¨llS¸Y5ö¡ÔýTÓ³^*dÊð\®4fKb–KXÄ.(Zr7qåð°\^P‚…Öy»äÀLí½ÃI•6ã”ÉüNÇ—¾º!ßu‚.cc ¹H©T&Ã*½M‹håIü#tÕÛZ{cTö}À¹ôqG‘ªâúÈÏxláð «2¯±,‘´0vÆkZ™Óýfq1ñê5 yY!x Ì líò÷)KÅ„ ~bC?Q¢+eR\7ñš9-³£‘Ó³c <#]ÅA€¹;6Œ;ãpam8Ö¬f&Ýq
+çñ\h^ðŸGûøÑŒ¦|C’*Ž&ì ëÖ§“ÿ0àñ‡endstream
endobj
830 0 obj
-1781
+1783
endobj
-831 0 obj<</Type/Page/Parent 635 0 R/Contents 832 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 277 0 R>>endobj
+831 0 obj<</Type/Page/Parent 689 0 R/Contents 832 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 203 0 R>>endobj
832 0 obj<</Length 833 0 R/Filter/FlateDecode>>stream
-xÅX]oÛÆ}÷¯¸¨XŒH}Ú@dKŽ 4Mo¢"¹¸ìÊ\I“\•KFñ¿¿gvIJ¢4)nÓ‘»3sfæÌÙýã§þú4¨?¢(½¸]\Ì=o2¡ýG¾ÆzøLÆøõ½€rI+^€gØ¥ùÀÛ/ﱩO‹ï:šŒiÛz´ˆ:"ŠŠûD¬Í‹Å§‹—÷ƒêÍÎ ™"WÙšôŠŠ6"Q!sC¦Ìs]f±ŒiùLæRÀôOŸdaè¿¿\ÙæÒȬàõ0€· ZÕFzÔõÙáEÜ1e´!aè7
-;¥‘yøâŠ>„ΟL!
-¥3þåcØÉ4m…1x“ü²UyóPd1Ñ,ìÄʈe"ãð…G.”¨
-¥;ö&T[ ƒÑ¸z^ƒÂ»ÁÈ°G‰^ël¡RyÇcVȵÌé³HJI@@€É3•<ÏÙ¾qçkk‡Øàjõ#->©èé›Üîâ;‘ÝmD¶þaÀÂæ›Ò?ÖèF§r–«Ï§Qš­ŒÔJICÅFRÌïP" tšv…NÀ—Tlí ôÛ/w(ùbCõBÛmv•Ë¨Ðù³Ç5zÐM‹öÆ)⧥<ØBev÷•ÎSºüxsI°,ѾI9Ç*—Ðô{7[½“+ëmË,¿xiûÆ…u ¿s‘J­²G&]z‘ÎVag¾@ÞYƒ°tN©†}•±K¶©Ï¶oÝž_ë¦þµ7²„åj[ü
-ÜNú—Ñ1ÍcÚæz+óv” 9¢·á3%ýdÈÅæÖ^‘w÷f†ÏùÇùé¼……w;]ÐJ%Ò#kÏQh„x‘†¬L÷»µÂç2AÐ(`Ì8f²¨¬o±Iƒ¹}êPn™t~ý“ Jù,ê{t…+ç*Ð
-Új)]l
-ñQ|†H 7G6qòv'ÕÓ
-•›¯ª¥v]TäÅQYü)uÕÔô5êÐ
-œ£{ásR«…Ùy!r–>¿I‰ä*>1Êð«Jø4ªÎÒtœª‘"S1ë> ºœ êÞ=ξ"Ⱦɥm®R‘?¿†ÞÜ>ÎÎzwÎpe·v±Ú…Ö¼ Õ¿ºžp{IŶgµ$î¨ÖF).
-µn?u ;éyjþe'öDý>œÖ1êöo„t{"”ä‘n‰±nL‰4,¦ïó×oiƒ:ÊPaK‰~ij,æS¢kžEÅFhÃúÀêt#B¯ˆ§Å¿~Æ¿ÒS÷p‡vžt
-Ee(1´žÂÖ-¨‡Z´÷q"ïwµ°ó•2hÞ˜.—2zz¾t¢šÚé:×ÚW¶‚ÝNÁ©ßmÕtVm‡q
-
-Àòœ É ƒ{i—®–gΠŠoÜQÉ­@˜5@ø®{â<‡s®Ý½¦ °#½µgsõæííª<Ù#wòG>n Ü}ßì€WíuÎËûkòq5±â›¡`l9ûÛ¿ç]{4wÍD?ÏïiNäc&Ÿ­Ä]:@ëV@ÒpØ1§X‡q<vÆzU%¥Á¥L=B·Ú¨/5ëå'K£ mÉ–o®Ùo††îv%Înˆ l]JSë‡%†l©ì“¶å†*«“€‹/ö2éÎ]
+x•XMsÚH½ûWôek‰kI 6•Úr’u’Ã:ÙØ·8‡A  D_ &Þ_¿¯{HÄ@bW µ43ýúuOw¾]øäáߧ8 QDI~ñòîâï» o0™Ðþb–<Šñ„ÂIŒÛ0Ž!M ž—XfwÁðáuH¾Ow ¬Mbº›Ë{î’^® ›–…žSYd43©^àw¥<»ûâôcTº
+8 °ãd<™v©ÔRóÔ}xÊ4÷àƒëÒÀÈâA©.ýÇ4©M3­ ÊÒâ+˜Ø¤v%ƒTb×*Ûù“æºNLZqdK{Ôx  Þ2×Uþ®ò*ÓÂæð;OöHok'ÝGd€Ez˜Oˆ·?Ý`æ;·Œ–Oˬœ©ì³K}Ÿ¹rÂßsz©ê4¡Zø?–—¬y$6{ÀKc?Ä5'ìî°¶”îöõÖeÍ„1&tbOÛYZ"Þøb7qÇ8½h,üÞ‡÷oÞw`x#ÀÎ)樋pó'$8<^(ïó oÕ¥)×ÕÏ‚¹¹úxóîŠGï–î>¬t×™Mõª\gsöM³‰hî² ïÿ¬L¹Bú0Hoå¼· a]#£1;ᨑb[¦9Ðœé-Ùã‰ÈÏQØQyâ^ß›röéŒÎˆ-oû·2z¡ §gÚqZu'¶Âp*Nl¯gt]ðî}Ù°û«ŠGlmÔ¡g‡¨P­RÕöäYsŸŒ•Z'¨Cöq·éè¾—¯Q[Ö
+<lÞ¾ùþYÇg^$>sa"ÂôçÛ6þíúDZ3 ~û$x¤DóXYx¼Ruý4GâºÂòmÍ¥Ü%)NMmð£8”ºå#¯„ä¤ÓèG1W¸6úFý^ùq3šˆ{ÒŠz]U¥±Ûš•Ë²èÄç(ô÷ñé„3PÑvprý!>÷k?½)OÁÜHIFÑ®-—b‰Ê”‹4Óõ_j±‡9} ?Šh$¸¨Ý.Ip‚W»:Né=þ~»¹¿ßb€´æÑOrìÀsà¿×´*sMsÄHsÐb /ºAMêL­¨>,T3îDÖÇœ²³ƒˆûAlfnpÚì ŠÊ™=7éÉõV*ì¶.c.¯ ÙN8£uìªþ>6œVæã4Ù<ÂUè“TוNÒ¥¥.´AYw
+\ûávc–‰$Êшt{»‚ŸÄUFgèkÑá\^¾~{y)Á}#7‹Ÿ
+meåϨvØõ ~ÇŠÏíZ“Xΰâžô…}œ0Hò99ˆ¼ç­ÎZŠíM¥@S×êò[ìÍjäG®R„œµœpÚ ?îVŠÓ{i¸®ÍPŠÉ°æ³È0KgÃ-¿h¨™Xé|ÎàOˆÅYŬŽ³zPŸý›¾&ÆpFi89H(Ô8¹v»ú':¿ÂªyžJW¬ÛzîOÜÊI‘ÛàNZ ÷áýi›ª¤ÞƪÆPNPâZÎXç¢3ÎÅ õeˆ&~XØCÛ©Ó‘£—{Z¹?­Ê³]\~£EÙVˆ)½<gJ¹?­p2:h伋D¬ê¯ÇƒÈ‹<¯­!Ëû”XîO+EK{PBwµâŒÞØéÝŸ“úÒ$óq‹û>¿s"}J‚öÇ­rAU™VŽê8¯púg2w,V3sù( ›#ÜðzÒÐ|”_$Ø‘Ðp{õÏË+ú`Ê/¨nø®¬¹’‰ÌHß ïÇçˆÞ¯~’Ñ:áë O ã†á/þUï†vendstream
endobj
833 0 obj
-1836
+1577
endobj
-834 0 obj<</Type/Page/Parent 635 0 R/Contents 835 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 280 0 R>>endobj
+834 0 obj<</Type/Page/Parent 689 0 R/Contents 835 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 210 0 R>>endobj
835 0 obj<</Length 836 0 R/Filter/FlateDecode>>stream
-xUYÛ6~÷¯˜Gˆe’’uX >·²É&VÑEh‰–å•D•¢°q‹þ÷%_a¶Ûµ ˜áßÌ|óç€Á‹BÀÀõ!)óx°ŠÄ C¸ÞT†\F^à;sC'%`‡Ê&Qäø'Q:^/Ac(D—Z¯ DïЫ^â´ˆ“aýœ~äÞ=Jð
-"ʼwña@`D1Ô2“Uœ—b
-ÄÉíA$zQð¦™BÃË-Ÿ%‰l+méµy:…¬f–ä)Ožän×›gÔ ¼Ðõ½ÀÒâI¢×ÏÐËï¿üçß–š‰ôm) ñ­ÓÆ‚W‹=¯²sªãµ”ìFFÌÇj ñ« ‹B>çUy¼‚Ëk•VG)h#ÚJ½ڷРv
-µlòo'¬ G11(Šfj¢º)ÙˆM°ºè5­¦€8Þe WZ¨÷ Û»ZȺïÓä®.x^d÷.Uf¥öJ Ó¼Á³ÇOÜÔ÷^(^¤°è<Ø6ÊG ðY*„o2aaÄ¥óÕr­Ö³ÙÒ{îd>¡ñV+ëh­ò’«ã½’mýa‰è3B-•ï:é×ônaµôÞØ1m#Ô5­¿u¬õ?óú‰Cøõé/ì'ËnßÉ} ~}jË­PSÀî²G%Áò½
-¯Ìòj³E1…ñ6¯Æ[Þì-oêï,OÏaТxÛ¸½@ ̵ºÌ‘-ØËR,s…Ä Õ“1ßcÙh‘Éñ©}­Ì^˜½BéCÛèóhþ'MTúZË0—!¡žOüÅrÆ"?fž‡­J݉»^t Ó/Ò,e.eÈ­É"•Ž×Pœ½26 ýÞr'Ò#þa!Ëç¾1 õöNôK ½0×Åfæ%¸$ÂgÿUÀÆÐÿ•dÐÍ„Zn Á%Ï àEÉÉF™q•šÑ{ä Ÿ?ÿ-¡CöÂÿ]¸†¡Ôñ§nbœ3A\´º}a´€ØXKeÒviÁ3o
-:6F‡~ÇûXª/ƒµNXendstream
+x­WkoÛÈýî_qáX°¨·%ï7ÙY·)6MTE]#rd1!g´œ¡eõ×ï¹ó I®’î‡" "¾îãÜsϽóëÅ„Æø3¡å”f7”–w›‹ÑÃœ&ÚìøÖÍjI›ŒÆÉx<¦M:øI¥Õé`eFaÌQW™¡²6–¶’¤ÛBf у®¨Ô•¤LZ‘†´¢½>YM™&»ÏÍ5Ur'+ܹÚ|¹øisÁ.œšð¯O¹˜Ý$cºYN“•4™®„ã®
+úÌö¾¨ž\ÀËÞï„üþþÓ??nÞ~xŸìmY°»×/Ý/|9HˆŒÒûp 3“Y2…­ÁãôfžGløñpz“Ìùùf/ÉÈêù80L}8èÊ"×RäŠ
+ý¤•!¡2Á @wè_JZ÷¿}
+cí¶ÒGN¥Ä*÷\e¸M”¹T–‹VèTXo ä)ƒ’†Ñã›{”þc!…‘MqÏgQ庆Á÷Ò‚2_éŽÝæê Ѥu Âæ H®Ò¢ÎÀ­cn÷Ž%”åÆVù¶vÏ\Ïeà×ÙâÅâœ)ÞdšÒpÁÔ”kCŸE¹4ÅÝLKCJ[Ò;槠T—‡B"ûœÿVïè©ÒõJq8p2[d'¥jð{¿ñ/¸Êsà`ù|º
+ž¢¹JÏÔ!–KpùÆwÜš-›K2öTHiªkeMÒÎb±ÊóÕMñ¶óêwK4õº¸˜Î 9íˆo“yB÷ÑÛ;‘îs%iS±®ƒ×çÓ¹â€î] ® wŸÃxUÙ1t„Ev°“¼Aë †°¹Ö"4Þ²{aù~m|½E ëÊ:0e}ãFsƒJà9Äv/˜øªz¼r¿voˆÐ7‚or´óÛW:{€ª¡U§kßœà«ÒG˜ä/ïÑ(5W( ‘\±7@ Ž ´¾‰v©…A€Æ²Ê"˜A]Qcëä ?kT Œ/kųtÅh# \£2Ýke+]²BJ›Ð?h ¶”Ûí@¶ •|fÑPµbXu•ÿÄHGtdA»{ûá3)¾ØUºìú%Ѐ3 ÊËSà ½Éì@9¥qä¹2#¯*¡ÔGA† ð×SžÅ¾ÄŽ=Ÿ1Ò¦˜·ÑÆÒíKc
+ /Núè!n"­vèºÏ2ÿF³‘<^%èÙÓ"
+……qö‰ xßÃdbûœÔ±MÏLêΚµFÓ#vsÐ*ãöqs±ÇžP‰®¦nŠI›ŽÎæ–
endobj
836 0 obj
-860
+1882
endobj
-837 0 obj<</Type/Page/Parent 635 0 R/Contents 838 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+837 0 obj<</Type/Page/Parent 689 0 R/Contents 838 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 215 0 R>>endobj
838 0 obj<</Length 839 0 R/Filter/FlateDecode>>stream
-x¥WMoÛF½ûW zrP[¶dGrzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M‚"Ž“»óñæÍ›áד¹\âß\V ¹ZJRž¼[Ÿ\ܾ‘Å¥¬3¼Y®ndÊåìòO’Ó÷¹ª]Ë|>“OÖdF§ò‡Û:ëe£›Nk+ŸM]çå~ýjýÏÉ¥œ/®aâTÙT>Ýßý-­7vËSäú›ã ý_Íg ‡¸x»ñM­’&»†ÛþØbÅCw¶ÑÛZ5ÆYqY4O?LR;ï²fŒ4yíÚm.¢¤í#/¹äŠÁ#òi˜T×ÈIÉ/¹+öë¦ø¥Od~c3¸£‚Ûj«]ë7˪m˜—¶;S;[jÛxÉ\ K…ÃóÆ”z&ŸµTµöx)1¥eŸÒ©tc@†LOÏpŸÆåäØäZU¹Q“˜|k-<Q!®Z•^–ï
-†,î>Og7….Xô.¨ŽæµP)SVx ÇaŸ8=âü×Ã{ITQø3y(ÚíVÁ¬¼m­mLïpi[hœ`‰˜Ç½*ò£®w&AVi’œqÂŽë†ÒM\Þ¯%u¥B iíÃñªÒ
-@ê«4è
-8g¥y8kmBtUaš½˜†àï@!$™#<€Ð*3Û´:C`ˆ²Õ¹úÉ‹‡k(ö3¦úûúÍ&¯çoðûúf…ß ü¯ákèÍ¡W®o^>»M³˜ º¢Ô!0š¼¸èÄfŒëtQÈ“uØ‘«æý“«€MM–¡C@ÆÒ¥ºˆ¯uÏjâº0ÍIá¶è¾
-Ù¢'ÊÈBÁÓ#›NrëЖÕ`÷(Ø#ª†Êe…иRªThf’¶h@‰‰kBL™Ð¡fMç$–“à³EŽ§AWïö¬Õu¨áZ΂z}´š}X‚I‡ŽŠ„»Tí"þ&µ$ûQ[±àzÚc“$®¥<ÀØÆ5 <˜Øú5ôeÓ!àÀbÆ;A$vþ¸ñBÏCÉ ú@W5P”†½ÅÔšv€ÈïÀ÷
-H¡<fâå¨Òª´Ä@âžC#`‘á|XÛŽ°Ì@‚ƒìh„ÆD{”ÔÃÜëŸ Vˆ ÂS¯0ˆNß*ªÊhLjˆ‘É#´€Ãù@ññØ›¿YΖ?{óå</¥{WXa8ÂÀ#®•òÐÏáÈþà‡ù7‹õ»1ñPE™æ@PÛ°Éó º.”)Örã¾Qm¢œsY[¬J]n€6PPØŠûýe&-¶
-r}èPÈMü*Š[ê•Fù‰±ÍDÞéD! ss¶ÂxîE^€ŸŸæÜN"_NwF…ÈîÚ1ñòˆß
+xWkoÛ6ýž_q—vˆ IJå·Óm@Ó.[‡¥Ýð -Ñ6[‰tE)Ž÷ëw.)Ê$0±-‘¼ÏsϽü|S1{ÔQ’Ÿ\ÎN¾Ÿt£É„vÅ]šö£ &cüìóÏBÒ[»4Âc¯^‰{xáV
+‹ß|@Nçj@qL³ÔŽ&cš¥n½K³¤5[Iz1ûxÒ¹‚InO«#ˤ³ÖnR¿N·Hê²ØÒFeeÊ–Tât.’•Ò’´È%a­\‘ Óç§$Ök©S™žÓÆè³’VâNbÉI6¿f9ü–Õt©³G³´%HWX±+‰O¡SÒ†he >U…LJSl#º2É{‘¯3ºoDJg©Y¯·gÐ[ei­Wz¹§î?ýÍÔ' W•½2¦̘ڽa4`‹¾ç÷Ãîÿq½±Gnc«¶îo­’O¦1­‹N*ï:ìòEg®tg!2[o ‘o³®‘Ϋ¹¹“çuÒz!i«ç[”MsDJo)•6)ÔºTH‡KÚ¡äL&™B‚ÏIE2:§KaeŽç×&_W¥,"ouиÀFwãÚN¯˜[“áx¶¥¼b`«z'ËË·ïo¼~³ØSO¥áM 0•òoOM.”Žˆfx
+ÅéB jؤ^ÙZëu„ˆ&f¶ùðƒã¥a<Må4áË?dt÷ã$·ßÓ°!¦aÌö©ÉæsÏB·­Éí çlÃjNÖµâ&Ï™-8uvÅήd!›š Ødª0¦|V×Q°£Õ(¥¶ v^/÷”Ù¨ïA`ÃzŸ,Ð'[.×HS]Ggö <jÔxû†êBÑrö6‰C®–RË‚¡t„‹Earƒß¼÷ûidÖu"FQðžxxÿ„ºôY„JóJ*Ïeª`C¶}
+)‚S¶B}¤,²ð‡©üÀŒ{¤z#
+tš¯\½zV£~<ù©kÊÀwð€©ß6Àݺ:WSŠÁÿ<bõÆCשwCÖ4D½ˆNßë6ÂԾʶ§ôšSÎÖÂ…ëz„šq›¡W¾±¸íêù…G77±Yô*¤û¶ÅIçÆ…ºãQëömÄö
+ ~ÂÛå²a öø £ÃïÊz~²Õz ~L_".xݸ€¬-Ô²K×™g!µ}ûúaÍ´{`ÍþsNƒxpÎò`kÓCw î{ ÒÔ]VšÃ¡±¶È`B<•«—Ýõ íÅ6Ã:fÄn±˜Z[a€Ø±¯Ÿ±\.1ì ?KPåË/äÔ ,cvá㉆ï"îšÖ^ ¾”Œh„co¸%8`Йþæaúg¥«{²[Ì[¹À^ö.33Ù_.L¸£à†ÆUHDÏè›(Š
+É£)³%
+y-
+P †e‹•ï9
+=}KÊËc?ó¯·Sj.Ô^RŒÙªmiw5 ö5}]Ø0+M†OÒ¤ž[âÑ8â '®|{w¿›W×— çÂ|Ä¥ŠÞ˜¤âyßa“MoûSm¬õÿIl0 h¬»5˜²dTã¯'ÿ;f€Sendstream
endobj
839 0 obj
-1670
+1657
endobj
-840 0 obj<</Type/Page/Parent 635 0 R/Contents 841 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+840 0 obj<</Type/Page/Parent 689 0 R/Contents 841 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
841 0 obj<</Length 842 0 R/Filter/FlateDecode>>stream
-x…WMsÓH½çWtíÉT%Æ_$áhÈn-‡„,1‡\ZÒX"͘ÉZí¯ß×3’?IJ@ÖLw¿~ïuûûÅœfø5§›-¯)­.Þm.^ÿ±¢ùœ6[|r}{C›ŒfÓÙlF›tòÙ+çɪ EŸ>|¥ŠÓBE)‡‡†¯èa#9b“Qîl³#2\)OìådG­mÊ,¼ú›áZïÕoñ¶ðÖôÕæÛÅŒ®æËéÑ'9!÷§…m mu‰›È[\Åu¼"|¦2J:‰žÙŠuÈEÒu¤öÊPis<«åœ¢óì%QטQ`Ž/}½ú¢Mf[òÊ{âQŸ†^\OW}ÂÀ¨ìÈ&{mO8®SÔ€Cθ/Á3Òž¥M.H„ÿÅ’FØEèj~Q!ó­uÕ(Ñ»÷ëÏχƒ4< èOiS ~•¢vÔ kâ²´­?äl2U+WIGc.NeÚ©4æn‰G‘{ SkjgË=G”–Mz(pÚ±«uÚ”ì°/ ƒ Ý:-¨v—Wûkx8µUN™Tecl×Y¦%dÞ]ß9»×™ ÝiÐ_ƒ˜pðp¯Ó¡œH?z<–MžsR*ZŸUyo³FH÷<y\ß?¿"ß!ë
-Yê#£î5£ö#ñ&›Žpœ”‘€ïveŸ¥-…Mylj.uÝíå sç+²[äaÒÂY£ÿjï[ë2aUÝ*P>&êÉk`)Ý>yG4ãk‹‹9`AËzŸ'½ìhùó«Ð¤ß7ð z³œãçêö?øƒ(Ûh+oiyˆ­¬ÞÞie>Ÿ.§s À.W5}†ÔŒS/ºZˆMN´S‡—‘?$e]ÎÀ!ô\p£‚÷¨Ù©¿µ¯!ô#a‘ÚÀ7³uìA´ng EOLxΨ­öElyƒÅû€õ‹¯û »P þ8=вÕ@<hL:c§)zÛ•¶ ÷ãÞÞ꺰ˆ‹š¤Р΋|Åå¡2®QmšÚÆԨ䴰^ÿ¹S\ÕÀ†
-ÌÛêH¨QXΠ~à…ûàËdQQ¡8ºÅ\%~(ÿ¼þ
-MÛÁvPJʼn:e°à2w,œv À6f¢k¥1$€Þ¬ÿînP°Ì•`M;‡¼B3áà’¥{:ëí¶îéc /éQè0ò
-‚7áÀ£Ø_ñáÉ+®`'Á‡T.@CZÈ?È;¸‚äé(Šl=ÙòZäõÿ"[.ãü<ÙjJb’ I}‘*$áÿÚ‘Û~Põ††Éê\-c®ÃÇ™ÒR£¯#ùáj AÖAQ@¾`¶áM õ¦ß/&ýõÙyÊXU€„JðP™àÉ>€OúÉÜËØÛô¦Ñ2&‚ÈÜqê{b¡CÀ•E¢ÁÃGb€¹2J”Áúáé)
-bÉ¡AÖ3[ƒN ÙO+ytº’5ï.,£"ß·5l4w‚m–<ëøZv)Kb!f[bßî´*3Г)±¶Û-…þEËúàЂr°øQä]ãv³}¬”Á€˜ø@¡Ÿ¸´¶(ÓTA«Ãôx!pÑcXs£4ñ¦MÂ\Œ
-B¾˜†Ø™6£|8‘¡*ë9ÖÇ£$ô,|eˆWNé#
+x¥WÛnÛF}÷WL
+‹¶dE²S …#Ç€
+4MaA½¬È•´1¹«ì’Vô÷=3KÊ êdr9—3çÌ ¿œ èßš éjLiqòn~rqCƒÍW¸3¾Æ‡Œ.“ËËKš§½›d”\%ô»3ÖØ5•MÓÜh[Réä¿;W(c_Ï?Ã̈ƒh¦?œÀLoŽã[ïRU^ÓÊyú\R”™ÉÄ =)ot )7býIû`œ%·¢OÆfn’èj\»Býá8á {õ "öx*­Oõ'É5’ÙÅp<¡ãhùÞ³¶â¹
+Ú“ÎuZN•ã–ëÏa+ŠAŸ7¡qªÅç9QR–Tšº
+P)›ÑV…°s>cß—Ô\%CŽ§Ü¨’LÀ£æÉäz­³#oÑCBtKô Š¥"•(E(½*Í“>¸XôL¢“sRͱڵØߨÐqë+éÙi `̵>:€_¼¦¢
+%-5¡ÞÚ#´ þþ"Ém5‡€çv&Ïi¥LNfÅY#Ic•ßCØñÛ ‚Œ×ß"3áH Ž Wnp·96®Ê3Ž‚Òv³Z!
+’ü8s™–µÚ: ®½*Ý«©ô\©µD@=¾×
+ëîcU¡ÏiY•P6YVHºÑé£Ôsé¾ÒéT@ƒÈ¦zMÐm­³º;ÜIKN‰fˆœª
+,‡j­j\FÄ2%!D¨Lp…ÆÆ
endobj
842 0 obj
-1691
+1535
endobj
-843 0 obj<</Type/Page/Parent 635 0 R/Contents 844 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+843 0 obj<</Type/Page/Parent 689 0 R/Contents 844 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>>>endobj
844 0 obj<</Length 845 0 R/Filter/FlateDecode>>stream
-x…XMsÛ6½ûWìøäÎØ´%»²›ã439Øu+eÚ["A‰1H0
- =/úâužý?Íy$ |pzö­*9°$¦òÜv7ÝtµÌ˜mú²öõU F$;KR3ÕÒ)·0Ó
-Ncã+—ŸA­Â†gt©C~Ùx/T™a*Êx¢çË3ƒ'ÕeÞZ½2;Vß; vjañÔXûÚµ
-Š†I
-qRm‹Îð܃¸£­ð€„Küöþ’]yÏ~UŸ¡C¼Bqy¹ø‰&M –+Ûëm¦-wl•„u7Š¼Ø¢™`ec¶1~ ˆÍÀÂO¹`¡x°1…|šcDv“£²krÞ¢èsÕŠá áÓ`—I63úµa#Ê~²€ÁÝ¢çïwÁ¹çè˜O!nð†ƒþï`p{í»É€eͳçùžyº±ñ¶¤•3ñ6øûÁ¦×˜c¾Œ…V;P!xn´.8óQÄÀu!ò!ÀHÛ…1RFå÷óG$Â8ˆ(éÁ{ÆE
-‘ùýÈ:Òx‘Ì&ðÀOzwÅ1 #Õ±_* øQùàZ–x”ù r|¿Ó§q­¢ÿћžacG2µUuVñ:o¤Á²îÅ#利yŸ"£€Td7 t‡,1X¿µÂÛ ë.ðàŽaË©æÏÓ¸<Æèï’ÊšÌn³ ~±¸ç—ÀùÃÓÇ´Ó~ãò~²9Þk’øã[ñðÅí?kïý¬qs{“ÝáלœÝóu,ŠßNþÕ骛endstream
+xW]OÛH}çW\U­šJÁù
+ׇÁTküUNÎlH,„ªz7û¶38ŸD‹CÚO’}˜ìÍ–’ìÆ:YR&*o¯Ð ÚèštE÷½÷C|FG§÷ï|‚™,šÙ"Ä“÷îÇ“iôÑDÍ϶^.è›V•DHp—ë1‘­³LZ;¯‹bCiíHÌ9zµ0"WÕ‚ÈiTÉ5¾}”Æ*¤çÞÄ­(SA™Î%]ÐB:þ’cÛEf£=”1•0.²O¯Z9þ)É>]RXjG\<Òž*[ŽËb(Ö‹ýµÜ‰¼T•²Î§Í+tCVÄ)WŽ“A.¨«Ž­à8Ÿ; ,é,« ·Z5º½8# {¨ ÕØ<,z´2êQ89¸»ºùôñæêËu‚óáPÓ…Á8eKQ-dž#ù$ÊU!û¸åF–úÉ£KsUH¢`ð ñjË4ïúµCOÊ÷’2#– ÍŒ$_)ÀÛµX­¸&©È¼‹¹6nÙ '•n-Qæõ–ÆÉ0™öivù1 AþýáäŒR#ªlÐpßcF™é²”U.sà–ˆ€8ÛZlЊŽ«LÜð BMuZ€ (Zf¤¯¾/ˆ6j¡*Q4ø%nÊÙªYDvV(Y9š]6Àl%b‚É´ø;K‘-Á ²¶ I–éšÃ³["Jdºª™8R¡mæYÐgÀ‘#Ä)®
+®‚
+éýoß1ª/<9PÞ—&¦´¥"Eîê5 4¡ÿ>öNo8ð—y•Ðdï-0¾6ºZüå9Ò%W«§™¨-È”ÀÄõÙ{_™¥xd<
+h’r‚¦þ¢è@ÒÅ| ãÚz^ᜟµµQ ‘çw†lfÔÊuYSJ·ÔD CMs=®³oïZד?¹3S8‚ú/EèéZ›»S´P+SŒ­!/O1š ÷@ßF€­ª
+mV˜Ò¥°eç"„&€#ð[U¿œ¡ÕACÙrÇY¤°gGd6:ØAlcˆó´iEá…ǧ­s¦Á÷o48j^œå\x r>ÞNBüga£ñ‚/èr¶?¸òì²,ÒUÊá÷±•F‘jì<妓]ƒŠT2¸reYŽÁç?,^ʼ´{í%“°áé¿”@A×'Ÿ1„
+( 4±^0uBFㄧ-ON\öO ±sõ„s8ÃOGxz…2›NvƒG—<˜X¹€¶ºBRqò]¢)Øw*B|™JY¦¬‘–Í30¢nù)‡eD…^£"gÒžoUXÌx5IÐœc"†ržÑ%ÿ•dÇøëk¬í}o<9¼ÇÉÓ—ËO—Ww—ôáææêÆä "9îøyÃ2þ¦;\N0†• ”’Qr5˜å''Á·¢Sˆ-³˜íÎÛËT$Ý.6”à%Ù.p}”=ÀÿJ›ÒklŽ•ª»½ù}“53è,S<zÐnoœ¼Óæ,cÚƒ<ÁNÁÂ×FJhó°Ï š«E3PBxÍ´ë5^:Qó%gtAóB0¬ÂãfumiUž2É–—ú®°†Úˆ
endobj
845 0 obj
-1820
+1799
endobj
-846 0 obj<</Type/Page/Parent 635 0 R/Contents 847 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 283 0 R>>endobj
+846 0 obj<</Type/Page/Parent 689 0 R/Contents 847 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 218 0 R>>endobj
847 0 obj<</Length 848 0 R/Filter/FlateDecode>>stream
-xWÛrÛ6}÷Wì[”›–dÙ’ßêÄuⶹ4V&}ÈL"! 6 0
-—Õ¹ü$w*“W5‘ªñÃV&U•q–ÒµNŸHÙŒŒ•»¯ç'C:]$c2p>Ó>¡9{5N–*ÕT¨'XWYfì
-&ÉêmßpÐ~cpté<}3vaàb£‘‰VawJ*ÏBµZgH‘.tÏwæüÊ9žŸŸß>kPªâïm4¶H ˆ ¤®4ZPèY8¼çA§µ7Õî¼oQa·Ÿo>#8+>ÝÊë\o”­¨Iðx‚eªŠ®‘±Û¾Àcµ9ЃF1‡™Kë…Še ç_@¤+eòp0¿ÎO@º_$šÌ¦ø}ŒˆbYvM£IdÙåì:¹:âÙh”Lð¡¯_èðÎ;°íþ–nw$Ë1>È}Ì\|ŸÀšo¢Ø+¹È¨{-¹×bdnèã\Jb*¦
-
-ï,ÌQx`ì3ÂXe»Aÿ¨µ…£(9j!"Ú{±c)Ì\¡^4X3ÜsÔ­ÿõXW-(\Ä¡àuU{ ‡lLÑçÛ·" ßá«–»*w`ÑÖTkœj#êñ¼‰OåÁqo6†a„3娽ûÛm>`©±zžTÑi·)¶P-Í­¥lTÔžÓôèdÅÄwrLl‘eX‡ì¬åú¹4¨à©D×fÔ‰É3ì GGz®,æGê
-È$ª
-ÁÄÒÑ«Z£¡\ì6 Òö/‡jJ,D‘Òu_Np!’£±e:‰sñ2R…• ñ 8^÷°Û1³»qî` RVƒ¨‚m¹8Ýf!ÏÆ踟wåx2:êJôä= ÒE¾qHo]5òÍÁ –Zl¬4âÿ¾¼;gØ/Æã!Œ4¾˜%£æ¯œú+ïxŒÝãhùÀ|ÁÖg±ò€ßÜÚÒÜ£=u.; ø:8ô+<bæç¿«Jt X— ¶Ruêp…OËÀlØÙ`´÷Ÿ¾Í?5Ã
-[ì0ú²÷xš¢MâXë£Ó õ½T ¼õA” n¸$¶;d’7¼öU1¾ˆÉês+c'2 †}…Ù`1‘ú¼“Å}ü» ^ž^y½ªÁWèHñS 5ì¿Pe´ŸE`›‡îV%¶gì¾Eã‹‘ƒí%Éïünּʮ8õ«ée2ãe(žýìÝ#ºn»oBßY<~6ã9üßW—Étóre:d;ÐÇ?Oþª…ö endstream
+xXMsÛ6½ûWìMJÇ¢õ-+—Œ“8§ušÆJ3í𑄘T‚´¬ß·
+S¼‰Áxýû*Ù‘ÙP¹“¤ôƹ(•Ñ¤e"­Å‘JC*ßg2—ºü®‡OæIé-}¶²h½Á zùZ°ã! F“hÌS“ ,*ë\Z‘Kü]”ïtòÅ6••ä6)ÜÌz³_”NÍÁÒ‡M·ýn*²;Se)ûôpf@D#þøôãÅrŒ(æÃ>sÍæÑ¢~ÊèA´CÞB[H‘º`;A{±ÇEk¡ \NÎ †Ï9Gãh¸ Ÿ±:]FËp5xÆêœCös¨ásN“á<«á3VÇ“h®ÏX,΢b¬lÅ–jغÈÜ5¼à\5Dó¬k(ˆTŸ§ËÑ¡uà¼ÀAŸÄ“P™Xg`{arºWIa¬Ù”¸
+b½›=¼hnÈWÏ4/¡!à+÷lˆöø‡rj÷sÏß9ë¬= yâ"sá5ƒ„*p†Ê72Ç ýÎ1,|Ga­IàÁc];õ½ã¾#PóI’ôð`7FƒÌ2Äå(ÚÁÒego¬UÜŸ@YŒ:3‚”ÝÖ·.kŸ<Ïü²Ù Ë…«“-*\ –öÇfä:»²kuA
+o . Ìמ)3‰Ϙ×,ÝìýYºIs¥YbüúOЧ £"&d§ûšmÚFý¿b€lPÑÔ´æÿn•w^e]üÛÂTûÃR™áÎŒ»{v
+¡Àìñ;ýVt
+}ßIòyø¸×g÷ËJ£\Ð(Ê8Å}
+¿vÚ‡æfý:®«9Aø×U»MÆfûé¡›re…Ü#,K¶Ún¥ÅTMÉèqŽ«}êªRÈcùKw ‹¨kw?3E[ÆÍ:1!Sî¥aùñ¼R‘¡dX·…X¯Q;§^É2¹rö|ø§Q2(4d.…;Žzîíç^h±•EÏå¬çGj~é‰õߧÊ´ 7&ש9?Õ^‚ÎÞks¸¤]–Ãì,6WX~’²=7Ltpê†ýª›ÀV,Ðú 7
+ƒ³ÀËoŽþe’ç®4Jü0¥åses”§›°¼Pá@›™Y÷k»BÈùòÖ,°®Û¤oCálx-e-à˜Áë)~6¬×š*ÇRû~&2뚻ŤSÒoJê—Æ«wÿÑu=ÔüÝõÌ¿ð<ÜÜ¿¾á7¬¯˜5è­I*~o§ñÁh¾À à`1v7üW ˜.¦Í{ÍlÌÀûò¯¤:÷endstream
endobj
848 0 obj
-1766
+1793
endobj
-849 0 obj<</Type/Page/Parent 635 0 R/Contents 850 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 286 0 R>>endobj
+849 0 obj<</Type/Page/Parent 689 0 R/Contents 850 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 227 0 R>>endobj
850 0 obj<</Length 851 0 R/Filter/FlateDecode>>stream
-x¥XMsÛ6¼ûW¼ž¢ÌH´(Ë–3=tœ4i3Çn¢N.¾€$$!& • ­êßw iŠuzédK&ð>w÷=毳XæøËj!W’go×gç–DzÞàÉÕõJ̣֙ù|.ët²Þ'¿ß}[ßÉN9I´.åP™ºÆÏMe Qòê‹Î~Wõ,Õe]™ô•ìuåö:­Í“žŠ³b6"GÛˆª´4Δ[Q¥­wº’Ì8\IšÚØrúzýýl.³ø"Z „ oê·OZj+…ÍÌæ(¸'¦Äµlé
-}Ø©š‡6?p​0pêA¶ztýœ¸jSFf‹«hI—ßvGq;Ûä™|¤µÉÿŽ§íñÙ*ºF™pøaqµ’ð°+ŸõÆ|åTžÛƒó!}½¹}{#*+LɬUm+ú¨t~[ú#¢_Ö&UÌM
-îN®;ñy}þÍ”‹O£ZÝÿúN6´‡ÔG6Än$³…24W$hM$Ò™A;ð )­ä¶Ü¢!¥Ö£òEwz¯§¦³Ù 3*MmSÖ}P!3XzÒUÔ–¤+/®=W×vÕM4òV¡À#À´)øÿ+v€)Íig¶%2aMÜÑÕ8ž5ø¸éA)¦Øçš0¢ʯ
-Y¾‰Á åõ
-Ÿø ¢o‚²¼‘Ô¢²,/WÑÕ‰¶Äqt-"ù¢ÿjLåëïN EôP&m³<,r-%©-7fÛ Êä
-[…øP fI©I›ªBKÑ— :Q4çäíÍ»Oòq-ÞÿtêxÒÂã>9{Õ ôq¬òt„ú‰$*}”fÏŠµÏ­‚LÎužïUeÁgG• ä°‚lÚ
-#9Hlí~—'hùªâ‚Rf ¾$ÖÖTÕÇGt{óéý(ü»ÏïåóÝ·‘eoµóz}05ŽTö uw’*È‹z„4×ÐE2€S·´…0Êí¬à'‚¾PéΔ:òØ}åä°—–]<¨Ò«:äBÑ.û}qɱ` ž½5Úg¸8I]ãÄÀE@½ÒUÕÞsÛ Ì@?ñ&2nG'桇£ŠÁ#Ë`+³5¥ÊÅÕä8~u”ƒ†DÐM»­®1!/õ¢¾„žVH~ë<J·AâŸg¯[g`®á)‡}W ”Õåó  “îW Ph!˜ÍxæÅ”ã6^O¡jQš7DêYSú©‰Ç¨L „ÆØ 0ö%æ?_~;‹Ëè\ÄsLµBâË(¾åò•ìžãkŒ‡Ã}!Sº°%ò¹Ï!#”ù :Ñ–ùÁÕÐ ¿YFÃÃï…,âË·ÃïxzqŃ» ŠÑ?çQm¥Ëc*`ƒv…rtloƒþö¼X˜ áSÁòãò¨¡¦±¤¹…
-JYi!L¢ÓƒïJ·b„QQ avBjWn’JUUAeTY\£)Þ{Ø€ãh)T'1§¸ç¶ …ÃØ_EñÔïì«*SMÎù„]Ka7¥ñó½Ö ‚Ù<Z-g‹ExÒkMë(!šY“×n¼CY±Úìt¾ß49¥rîÖôŒ†™~Ò¹Ýs˜ÓGàÙQ‘^ˆÂýQ,<ßöÅüCû¿{¼ZŽDÀö ˆ;Ò¡Ô`¦ÜÝ5¾ÚÃ×v¼¿Õ pQ«Š¦#HI€¨#0ÃZy4HÕn6d‚O9°%£NfÔÍmÊ’Žûn¶»©|j 0ÅÄi.Té²› ®HÚùÜ7©›©ý)_:D¾Œ µö9ý ߸DxÔðu‡ühÃ(@zð<¬~"2þn,ú뎷G)ñtxu2XÙ2SUæ¹Úbƒ{+ÀP vv&݉köXö|DÝæÒã÷Ç£òys ofê_øõcˆ]!VIÆ–¶í{aRD¸¾õr„ÕÀ®0mO 1C¡i+û9ÊÆUçx£¿î»Çã§'
+x•XÛrÛÈ}×Wôé*$HŠ’ö%å‹”¸Ê²“^ïVée ȱ€,f ZµÉ¿çtàRRI¹L‰¸ôõôé3úã"¦)þÅt5£ù’’ââÝúâv}1¦¸Î1|ýëÅ,¾Œnhy½Œ¦TÐbyŸÍ·œVüÖänAqLëŒ -¯¯hŠ…)­“áûÜ$´Ó•¦à(u{›;•RØiRU²3O:¥ÌäšÞ¬ôW[f¡üe2ÁgT˜¤rÞe!J\1Yá—Ül&÷«Ow?Ý®&Ÿoû¶Šn»=7$©ÀДƳe´@lÃ5|7±xú¼¦òyÒ•7Î’Ë$²Á7¯+ºWVmñ3sÑW(cý€”Mi°Ò^éžÀE¤§ž”ÉÕ&×
+ºïR¥'£ÉÉõóÔ¤AÿWV_]ùòéP¦³~*Åý•h×Wø}†ÿH/kZ}C1Š˜¡žËé,º>ëõMtÑ÷
+äÐß
+]ÏKJ”¥´Õá/ý+܆
+·ƒ«‡ÿ…²Ïä]]%Ús+ŒEé ¸3‡êâªôˆo?…¾äÆn)7>ø}½{?ðÒ¥Ô%u¡mIiÏ£»ÆÆ0 ¥‰ö&ìĸWÅFQ
+‹•ÙÔ@â` ¾Ñ÷gÚ:—’þYæ€ß•p‘¤Õ•Bwïßì¥q_';R¾çwS{ˆ9jJ²<ŽÏ¤RF.ŠçÈR£¶ÖùÀ&ƒs¹GI¹°µoÆJoê­ž
+L)w[ÔŒÊÊ¡”M5öRæ¦Ðß +Ú%m8ã+ô·+ÕÃly%3zì ßÏo
+V8¦Úï
+v@/&ç#º
+=Û¦þÆUáæYPº?!éM‹wñ±ŒôÂz.£ÂuÅEìÔóÑ7ä1Šª
+sÈá&¡ÊÇ*ãTç:€÷êÖñÞ]víoÜOâ ñu–™Ä€ËÐ} 8×ʇã¥èym" ¬ÁÅûÛsc²AQËT잟¼ºµu±®jtÚí¹ˆé²Ò* ºõ“î¹äÍÈÜÈìj $u©$C„Yi”VÊ„Odž³ï•¿ë*Òô¾.ªÐsȉíÔ“¶ƒ@=QXPÀ –ÇÎU¸Ä<@&”¹®æá¡•ñîØè°×±<íÐÊ’Ž4«$Ôl‘ŸR@x.9&ØA ø¢™»‘Ԛɕ!Ú¢•[Ë[ÃØZ¿˜ÊÓ:è›'²™7L((Åì ‡\<GÍûÅn‘aƒ`8쇀›¥ªTAÿ$áŽtrwàn2è¯tø0»œö&·”†R%¹
+@UÎͶäG‘Óü’Õî,¾n4Ü’ÕZóí¨áfñMOÉ:(Uòhzk²¬‘߬ù)ã
+g1WgMy•‘Žjöï`Du0ûþÃ
+È?Sà Ûœ{éx:X'1LxŒ>,ýîêžGYñV£ù"Ò_gîg‹{>†·8øÓnŸ?ÒÁ gùãCŒÍãï—ÂÆÃÕÛûwo¡»ÜŒŽï'gAŽtƒÌ±¯f‚ÿá躸ZàÀ#O_ÎÙöÃ?.þ –Fb¯endstream
endobj
851 0 obj
-1951
+2019
endobj
-852 0 obj<</Type/Page/Parent 635 0 R/Contents 853 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 291 0 R>>endobj
+852 0 obj<</Type/Page/Parent 689 0 R/Contents 853 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>/Annots 244 0 R>>endobj
853 0 obj<</Length 854 0 R/Filter/FlateDecode>>stream
-x¥W]oÛ6}ϯ¸@ꢱlÉŽíÛ€v]†>´Ý¿-Ã@I”ÍF=RŠk`?~ç’¢,»i·v)àZ&yy?Î9÷ꯋ˜¦øÓ2¡Ù‚²êâÕúâ§õÅ4Z­èøa6x˜R’àc¾Zâój-ÈH*° Ëk<ú•Ùl¸rµXôgÜWw—ànî?pÃäæšâ˜ÖZ¬–´ÎÝú”ÖÙ(Ž£«hÅý¨ëBmZ˜uN™®vª”tûòí«—ÏÖ.&7óÞÈ8YDs˜­·;ý9Ñ(]Îúg]x¤,íŒlšÙƵÙ6…6{aòˆØJ¡Œm¨Ù)±Aî,Uâ@µn(•|ý”Æñ,JøÒZfÒZa”ˬsUo¨ÝáîýV6[iHwð [ÚŠÉ÷>(ÝÚò@i«J¾‰*”ªZ%mäCœÒ5§)¦qrå#4Z7Oübìg V»|$ÚFsô'gÇn}£Æ¼çKç+qô•RÔßjÁT]ú£Ld[—¨ÉMÄW8MB%Ç{ÕlñQ#7ù·:Æ¡ýŸ³¤jÛˆ²ô6òÆ ÀµYx ¬·
-ê1 K•P…hD¼º¼*°rꉎUàï¢'C¢ûÈãŽ×£ÚZÔ>ÛFGPá9o8)pß!ãèÚiþ‘¡:ôP-e.­&ÓÖ.hð*\rpjoD¹Ø#F·›-7E¶—²í”7•åõN¶4¨לEÊ^’Õþ(t'Œ½×Æö®Q¶£(òp™XÝšLN‚„ˆïvîG¨+ÿtÅ +o|í Ý¢¾ªAAΊ“Ns¡ËRÃä†ì¡Ju©2$¼¾ñun—5­sç3^~ús”|ÖówzIÂgˆ Ð@æˆãÔ³ÑD6YŸ£¢—G\9¤QRk¡Ú ÷ *¼#ðŒ5¹+탲ŠéP]ñƒ‚r¢üµ}¥¾ ¢ˆèíáë=-¸–Zߣl Â#Š^sè¨R_—óþAÝßN€\ù ÷ÄæX¸z…åº~öÛ­Èõ~¸?Ä~¶Ñ¥ÌïC=3|lÚcîi½n"š ,—PPNgçU «+ó‹[]ò@4ÑE¹B4À·F©B™û†â‹s,¹ëRî@-?6!¢®¯7ªBn+Ìc¨ k) º¦mÃTá!¢X2t7b¼0s]?euÚâŽÜ=#¯ÑX僕¨[ö¼/ÓcýÄ¢NB04~ ¿Q¹ Y: oÀq×™˜Ëöl§bqj
-}
-xÂ>q_ðª"d÷]i&7
+xÕXMoã6½çWLEÜ"–-ÙñG/E7Û ›ÝíÚÅ¢€/´DÛj$QKRqréoïRòW’nºè¡E€À²¨!gæ½yOþ|R! #ê (ÎO.g'ë>…!Í–üÕ`4¤YBÝ ÛíÒ,nÝ©ME–=Ò£ªh“fR&d¥…±¸C§ï¤Ý(}G·
+‹•¦™R™!Q$t±’…=%RÙµ¤w3šJ}/u@XD‰Â·©¡ïfœ`ëv4úؼõF!úÔ
+m©¬M‹•ÁÇ+UX­2ú
+™áššy•¾OcÉ«.’ÄEì\ÇuZmd‡d’Ö<:ïÖ÷š”q«ö‚ˆoOe&cëNúåœ8=Š³4¾ãìNßÿr|å¶W.GØÖ©.èAÂ_þ¦0•äúJ‹Dm̮ԺÛ>^Mˆ6kYP©U^Z™ü“ÛÑù®¼[ª´ð;£S9Ê´L3ôȬU•%$Rc±{]6ÀÒ°EßNŸÎ~ºýøþýìÛù|úh¬Ì{Ñ|^¸ óù÷Á÷ ™n[Œ§â/ÛÝ]?MµHR–*b[¿Ÿ0´‘Yvv¼k)4êdæó£Ð(I¯)öïêXH@ÍýH“·oO -z~8­ïs¶hï4¥ˆï¤%Jª¼<sìð;móŽEi+-ŸÁ÷¡‚ܤt"õ> ¿|•­ãÊ-
+nõ'pLµ©*Îv,F/4ÊLfÓ€ÿ¸ž ¿kV/«Ý´‡&ìÿ:±ëd˜ÎžÍÿK:ïõø€ÓRÿ;œ~§6 Aùè:îy¼Àv®3›_Á^pØñš§jÙÏ•Ûf˜U¥Ôyj 0å1äpžH™m#J ·R§ÂJÇZˆš&“ZÐïúF"ÉÓJƒ8÷’tºZ[³Ð3Z¨¦Ÿ®
+pˆéþ„¥P¸F"ëñÇ”Üáñƒ‹Ñ,aâ!RDsB*X>‰¶unæ7½še6oÍçîÌnNº°˜ßñ|\K- CY–X(Ó˜2£ ¤Ý®÷†%iëzbו˜ÒåѾl ÜA²˜ƒ¹›3\§5
+uVKšŠ|!ÎÜ^GéµhmmùC§cxe ôÊ•y{ ÷¯ 蓤µ
+íðþÍq–¯ô=\TÞ®s=h4x"ïe¦Êøów¿ÔBC㊿ߺ:Ÿœ?ŒÁ¡@âà" Ò¨Õ"“y@7K2ê á‚îicóË®…· ‰?4™Ûà„!b=0^ãâ^0y ‚¦õ4§±²–n¥ÖìiMšWxÀô¸œ\ÑB¢Æ)Š+ÜQŽa«ÿ‹
+$ ûAX_ÕHxÚS ":¥Ý!¢nóf³ Ì]Z–HßH«‡ŽÉmͪ`móìE
+›àóW%uG¿á¨ïH×Ñõl£ó#²]Ï>ø¡Ë)¨Œóôö’L)ãZž²¶EK7ˆñ?ÈÓX+£–H )ÔIw½êpO¿"©Ýˆ=xaú ByC+x²æsUÉ,sæG.ã^矕±h4ùÂ^è[?`û«'Uƒ9{ÑQë½Sà™+¨¨òª¶•0-yJ&tpª€ÞàM^½„W*ÛÙîmÚ©Ëš4nüî¿ÔÕ¢ç^  ðÅî)_›óF¦UY*ýD¾Ø1þísµX?›©ßb«…^†x^DcèÁ˜%d;ï¡¢î¢.8Ê<îÐë€ü\!=gXÝ^ÜdÑ«éìÝL°¿)j㜰ghÛbžáP¶è†Ç¼²¡fZºÍùwÈ­ãæîµ™]¢ŠS‹÷whÃî˜b¡*ëØæâ´¨$1
+‚S–"¯ïÀÔqå…úshæ…ß W’ƒ¨Â™$Žå¤2“Âà»…ûn“é[Ui hGãë
+Œendstream
endobj
854 0 obj
-1516
+1869
endobj
-855 0 obj<</Type/Page/Parent 635 0 R/Contents 856 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 304 0 R>>endobj
+855 0 obj<</Type/Page/Parent 689 0 R/Contents 856 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 249 0 R>>endobj
856 0 obj<</Length 857 0 R/Filter/FlateDecode>>stream
-x­VkoÛ6ýž_q×¢˜‹Ù²$?S`Ò%)2 ­.ú¥_h‹¶™J¢FRñ ìÇï\Šò«‰¢sÙ’HÞ{Ï9÷ñ÷EB1þš¤4Ó¢¸x=»¸™]ÄÑtJû‹Yá&¦a¥4œNðs<ÆÅHZbiL£ËËhÞ\N£aó¦=*†‰—„/½¹H§|€?¦ | ÃMNÙ¼_»ß
-DŠ_¾r ×û·—”$œÚX3Ž¡¾C‹@k ¢aDh¤
-ÎœRˆ¯`ñôøûÖè….mÖÞ7–Ò`©sýþíÕÝ»cóRÖZŠBò«EgàCì 1i«kCŸQ»ôƶՅý99ú*+T©¬CJkOþ>@oD»™óîiˆ™¾ßÆ®ŒzP¹\IK ’'5Õ-jl£TNv
-<£LÈEÝkVZGÊýtÑ‚7²t5:¶ËBCaC ÛˆÒy¹ëL-·
-ü4c]7´ÁV™ìlãe ¥ÍçAœŽè7¢8~åÿÜ80þNoŸ·ß}dÑ%g¶ Ò
-mÖ¢ËA‘˜ÉX œsV ohFÂ3_\ÑþfQÕ–šzõ“ÔzÌBA’ à¹X|E]ÎQ¶Yý~ Úyõ9”üÝÓ³ö-&Mù@Ë—]ºóñr`»®€mûH[w
-öcr‚JÊ3)¦ÛßoÞÿòMÍå¦_~?¯M† §=úàÍ›à?òüÞõD3«ŸôÕÌÝê± 3{Çyˆ)éR³rúH‚8¡ñdÜÌãM‡ÿ`ô½\8ºÖ Œ³¥óLó¾^2ž`yo’büÏ:¡fÒ ŽrSåÊÒûÚ{1œð êN¼õùÏ‹ÿ
+x¥X]sÛº}÷¯Ø>YéH´%[–s_î8ŸõƒßX·™NÝ„(Ä   ‚VÔ_ß³ Ò’Y·“™;™$â€ÅÙ³gøÇÑ”NñgJ‹]PQ½[|:§é”–+¾{q¹ eI§Ùéé)-‹Ñ•Ýª]CA׺Îu ¸Vÿh*õ“¶~£CC*hzò¶uQãrÌwr“œ´Q¦$åÊtÛaXx³ü~tJ“éY6Ãb£ªUAñ`Šž6Á—m¡Ia`ˆ¦h­
+´Ò*¶Xk¿|M­3ºr;â_dÓ)žã\7‘ªV7Í1/79XƒAdkã*ª}ÀüÆɧ¢ƒa4fÙ9Çö0›Ÿv{”ðtrö6»àÇ<µvÑxG[Flø¯¨Qu®hç[£mxE^]Þ#FOE¾×욨k2H·ÎáÖ
+ù,é^P|2Šèýßï©[X¨¢šÚ È{î§XëⓘH¾}5➆ÿ#Õ=–¤Fîjõ¨ª€]²hy˜£Wc²™øÖ»jLè¹>"ÂèÇ4Téˆ"²wÉÎõ
+¬LõµUøzÃï!ÙA«’þBôÁ»c”–G×±¶¤]áKL_ƒïªB <Œ: åÀË™+¼‹yT—g¨1ÿÖÂ@žðáÍŸÉmʘLÞiÆ!®}£É™UÜÑñõqû´ö֔Жc<á›”ÆçbQÐq»áÒGm "gB›
+Ï -^¤F¹f ª•TRÍkûøÉŒ'‹à›F Îè›L#ÄjŠ5™Fˆ+R“ÊúÅ9A<B‡š&µ¾V›vÐF“AnJÎÞ`7ý¸”tcâbéë4WÀ$êbíL¡lFt£ yíA R¨ö'àì$¤A…æMLΚ:X‰%ð*ˆÁé‘À™ØLHåœß%@9v.1h˜îyEqë Œ‘)Xq/}YEíxCm|­yö­±üc=ï¸)â”?rŽP–[Ñ3Dšë‘¾R+ >n €ÀžKµc™j°ÔÉV…TÜ<LŸ×2>Ÿe—ÿGÎ/DÌY]kS­#´¯°m©;á¿èúÂH:’²ľiŽPå•+( ¶€˜$ö‘· !÷I ¤P Õ-ˆƒÿg§€îŽe½ô>4)aü¹µ a¼HæiçÛjÍ «8éü
+!êÐ7.4¤V‡À9ê¤à58~²
+«ªgM"§cÍÌ
+MûaD«
+Òõ=Õ Ú@ø±7ÞgßuÔd®4 R·ãÜ—»>A]f2Zbx²/5‹*À„•iÝVÍVœpLõ>¢V
+¨èN(5§Q½œž,'ÝßþÑÓ²A¯’ÍR fчݯ¯ Ú7¾ƒ¾ØWÂd6ß{ ¿ù-
+ž¿n ñbÿ8tËv¸èqÙL§÷A~×M:Ä wÀâ g‹ÂÀïŒn,¢Uëä´¯¬Áé
+u”BäøÀ‚ž¤HËðü'#,²ò&؃ÝX$& Õ»¯_¾Ý_ß~æ²ÎèÒwd†\—ü™˜ödîú ‚Î{H(ª˜Inî¿ðí“O—]Çš^,²)¾@Í¥§Žî¯nÞ]Ñ]ðßùðú¡³d›¤×' ÅÑOkáùâ¼·ó9O„6öÛÑ
endobj
857 0 obj
-1326
+2246
endobj
-858 0 obj<</Type/Page/Parent 635 0 R/Contents 859 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+858 0 obj<</Type/Page/Parent 689 0 R/Contents 859 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
859 0 obj<</Length 860 0 R/Filter/FlateDecode>>stream
-x½WmoâFþί¥èàtÁÆ@ 9éTåStMH·UÕôÃb¯a/ö.Ù]‡¢^ÿ{gwmàU­ZL¼3;/Ï<3»yjÐÇo
-…ü+ Pp–2|LD+ùÐK°å³œD˜ RÙ7ËåA$7†#U}†ÎsŠp ¤ìb‘çÈè-ªîØ2t@'Ù #1VX¥Ö‰#JÅô¹ÕRYb)Llè ѶxTøþHa#
- Ùœû®Ouì²Þu6\üˆÆÜfW5¨KÍÌ™Iàt]˼`‰:†…}.v$LÒËŨC.¡))2 H—,Sõ†55³]êºÓô.*K‰%w°CBï×éíAôºÖ–Ùi‡"ŽÀðt;èø—€8æüéév¨ ‡[áÝX ïÄz¡Sö».˜ *¦ÅZÆ^â3Î4þ¨|îT*³]PšHó'eµÍº#ô^2·sË”r,Ö8Ò…„Ðg§4Q†áÖ ’b³í…¹µÖ 3f×<òjΖ!“çH| @bäÿÊŒtɶc¨ìMÔã±á§Ó„™‹„¥ŽrÎ-9ö8qŒ­XõK¶ÒÆI’Š6sÆŸvq_¡‚GÍË–]I±Bd}*()Ƴ©· ØZ6GaÊç Vër
-ÿ½±c
+xWMoÛF½ûWÌ¡@]Àb,Ù‘ì¶(`'q NÜHirðeE.­I.³»´£ß7³KIf\mŒ$––Ü™yóÞ||;Ó1~Æ4›ÐÉ”òúàryðâê”ÆcZ–8™žÍhYÐqv||LËüpî}§=9]© 
+–ÂZ“7Í]¥G•½³ 5:<ZwOµ-tEÊi*ŒÏ;ïñ¼ið¼ñäuŒm2¢…ªWŠ|׶ÖO…­•i~Y~=8¦Ñø$›Àú¡Üë¶7G;>w¦ øZ5u^;j-M÷JëèzAŸMSØÇø‘]ºs¶k½<¿wzþåÅõ›Å¼2º;k“¯éÑT­´„ZZ„B¶|Gz}2ÍNÙáÏkÝÀ -®/)^Å‘«îókx ðb$&ÐÊYUäÊ@û Ã6¡ÒˆîA;ÀµÚ¥qxÎ6pÈüvº­6t§ñ:çå«]ExTe
+dÌ“ÁQ«¼Œ‡ q‚ë©ÖùZ5Æ×òrÌŒ*jƒ¯‚Sþ¬•X4ªªt‘Ñ<RÛZïͪÒt{¸êáÞ ùе¦¸ý…CΆ¹=0Öao%‡ðR­”×|Ucù5T
+XJ ×9ÜØŽrp¬V÷š?¸Ä4Ï›rÃp—øó`Ô^N#¿ÅW{ª» $w¥èÏšI@iA8r6)¿;kZk*Ð8Yn–¨sÚßÛŠö@@¶¦z©AzM•êš|sìä¶)Í]¬Y†½“ÂÉÞq¦Ã‚…³•µ÷x]…˜–m!8ÿ©'œ¡¶ÚÁv DÈ~ås”ÄQ¯é%š´¼«É“ƒó›= «¢@ŠR™@yìVÀ)ùiè
+ËJ–‹`½FÝù¸™ŒÐðŽaìó›W?ÅŠƒ»bqŒ—ØÆE;·ûÖ4Ù¹ÝG2t;úĹù|êJOߣìtpu8¢,èÆ>+ãÏ>¢<HWì‚?:vòïŽ=ÅSï)57JU+—s¯âf$[¾6e"si;@Ëðr)Z ñD©/ OžblñYý]ç+©RIV(²e@b;GBèÄ]žúÜKE*·Þñà~±ƒ£OÊ鎢„V°ü‘(ÎÑ[æMiû~ÜK0rîñI J¨%Ý 9Z[HS
+“
+ô_Œ‚i>Ûû(c—æŠKÈs±öUuc}³<ÀâA“É cõéÙŒÇ_F.î)ç4ƼÍ{ÊøüDšÆnS9ÏÎ24•WO‡ùÞàð++ÇC’¨eºÛ_}F^}¤ ñN²â Ï4‚#7¯_I8joÆHÝ°o‡Àytáò®#»?]Üô#¹nr·iûù‘eÍó¤Uˆ<Ÿ±{q•§Õm4ƒÎ°²‡·“éLÚí.8>ÛnWý–´?ñ"&ã7Oó<ÉÔŠ2&×a÷PyŽÂü2:šœaÛŸ§0 ¢.aCI[ ƒ)»–ª¼…₼sð)²2=¾¸z™"O3L°";VÌΙ°‘=TrTc½BíÂôöÌ$ß‘aX±ßÆ>¾ÎM§ Z¤Üønƒs‹§»1fP
endobj
860 0 obj
-1218
+1910
endobj
-861 0 obj<</Type/Page/Parent 635 0 R/Contents 862 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+861 0 obj<</Type/Page/Parent 689 0 R/Contents 862 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
862 0 obj<</Length 863 0 R/Filter/FlateDecode>>stream
-x½WioÛFýî_1pD$R‡-)‚ÀiÄhs4ZUQ¬È¥µ¹«ì’V…¢ÿ½ovIL”~HQä=æxóæÍúÓÙ€úøÐdH£1%ÅÙ³ÙÙ‹ÙY?šNiÿaïðŽ Gј®¦|£)YIÎöéj| ›þ8º
-[0†]xØ}ÀRüòŠšep<žNh–úý>Í’Îl)é¡+Íú!e•NJe4-…#A‰±VºµÑ©Òw$ui·Tr˪¤Ôl4•¸JNÚ{•H\Ð)åƬÈQ®V»Ê=¾œ}<‹_öé;Pox@gi‡Î;óKú‹Oô©7@ê¼AõÏ·ož?9ÿðúÙù‰2Yêiº8ÿ€€JÑuÁ7wQ=¦S÷W*Ï×Ö$äŠEzÂÇû³Ÿo~|rñôÄ>Çpb+Äÿæˆ_ÿ[üÃoHà¥J§§@üÏŠ° ~¾^ˆÑéD~£‹P,êÉO`yO4 ÃÏVFõÊïôàÙ‚zÅ÷ÂƹIV±«nëbâDa}Êç§
--ìJaKßYáðuݸ†¦ûû.µÎ4T8:ã³uðîƒÃ”
-Y^攣µQºìúÐÜÒTyJ Ib‘£» ôAk™à¤áxÙ÷ñ($äD±¾ ¥%/'©)„ÒTÈb¥•+y]…Ä7Â& ‰È©‚¦DlÏË"¤nÀòW‹ ¾y „ÐÅ/ídm4 Hî…m0ˆ®£Q4‰è{£3uWáZMgÉ»›×•½6r9¼<ÕåXŠ{I…H%©LØ
-§ú¢·v'¦X#¬ °f|îE±3•Md¬ƒ—dònØÔ¡TY´‡ÁÔ\lë½ |@uà£À¸<
-ÍÓäg)¿ »»þ 7¾Ï?jºDΡ=°–2k
-N¿]”]ô'ƒ®‰tcçkn;ÄõÄû ŠÄ¬U GÀ½í9¼# V-Û? æ­“IeU¹­+ãÉ[èÆ–ÞËôú\Ê¢xº†|!¿8W‹¸1t:Çãìpûb’51n¬líÚ·êA_ñàeöyaö͵c÷§†[Ù”íLÉRè;™FtKA\s™5¢…²°ÔB«Äé'+ ?¾¬üT¹ió;JÅ牕¬Àºæ•õ$T¤ÇšzÖÏ9‘$¦‚Ü}»Ñ=½ç&#xÜ×`8rËäQYM?‘ç^­%¬FhýdÒm‘­%‚üPbric ‘7©Õ.7;Âk™O@kùç´ hiáµ9‡'õü|•¹–%ú
-±EãYŒÓFÜ|\üjW " Lj”¬–å?BJ?WfŸG놧f8Ï£%ìîän~‰ êDFÚµ¢õPÊ 5NÉ•¶Jð`’ÝÝÜI*Äiùd‰ƒlrxÿR.>²Æjpn…Çpçs :Ç÷7Uuiß÷J§õ4Œ9Ññd n^?»¡wÖ|äWÑs“Tà÷šÇ÷záxo2Äÿ]i§~žÐ O>~'Ì–øtô¶òðjr…ÿ‡üÁÉ5ßÆS觳
+x­WÛnÛF}÷WL]•™–dY—
+EŠH„ѹ!eÈ›®Ý·¦ï¯oî¼éÚQpx£CgÝ‹ ‡[7®î'ÍË"^8¹}üóER‡^84D™"Ão¥±$èYJX¥säMÓ‡k*,(•Ï2Ý‚àbCD½AÐ爮B[²6Ù•1@Dj4…©6ö­’‘ƒFr!,# ¥Mà€tလŠl!(ãX@“ÏêL¨œ2a¬,8ë=(…^sx1n+k\–….Wl¬d\ò% C7oQÑωJœ…AÄT—
+ñÁÝJ£xŒ*†:Õ²™DÃ)>Ã'Lš$˜·DŒÈlÚ&sˆrT‘§zÉ$0eך"eRhá2Rq, ™[ŠKüÐÍü´ÍÁ<¦• ¥ÖQÿŠ¤àF:ë’L¢Ë4B3™-‰M„uÐݼõHr §î‰$OŸŸ» šH{}ÿaJ”‹L:²»âñUvy¶4Ÿ`&D´ØÐg•GÀ•UˆÝp,©¹ \/F¹y"Ò.Ÿú²T&Üv-Q#…@ßFšîÁÃu@w(®ã•o§Ô`ƒ4jñ5O"dÕf*ë5e'zM >ÕŒôœÕñ¶î®ˆ;KÈé£ ®ÿ5¬:œs:®–~u­r ïctA4rJ4x ·ärÁ†€7Ê-W1 y#p_»ÓhÎTE ´kJXÉ¥£ ¡øßKi¬áªžBMæÆ"db€F£žÞa&ÂD宫uáa^ó×ã•0?DUPÇóSzʹú™æÞXèÒúh`×Wó¿h<>!@Ìv­Êd5.|54¢ndg ¦²
+s^n:ÓJ`4·D=jŒ4Þ “½Š³fòdVû™·üð)ømˆa~_É¡M…Z&ö·ù)ŸåÖª™8•$˜Ü²bŸz ý£^nÊmM»2bèø Е‘ŒU®ÜäFD àG&>˜'6(n‰a°ÈùÚ´Ù‘®Åfªšmgªj>߀°õüõÏɃÓë~|Ç’Lý~:ÆŸz—ƒ`æÒôÈË÷«vw²Jåý±×ܳ‹^0¨žìËÿùݘº§«ÄÅxOûr?FA/ ·Õ”÷ŠwŸ[”~¿¡©´N; &Zd â'›…Ž¡!®èçw—õFÑëA ÏzcÄÏ¢Èqž÷8`¹ØFÙ
+ 16ÍÕÃ[«•ÈHd*XظR綠Ïc]Ïƺ½«éŠ–Üóhxž¦¿ªc÷j5è½^có)Ü
+­_´’+…Ù´©²¡‹Í+`bνszõð;/1ôøñmf»ÚyLc?C¤"ßø´ Bp¦eÄT¾ÂÁ%ýÚ$B ÜáÖN/šÔëÉ-ëyølKÈv-ÀOtÛï€î¸³íÉ“ý&`_¿Ä¤8h?9º»%Œ‘ÃvÝŸôh‚ªSÕiôŠ/Ò—eª"ýˆyY‡™lp›á7OÖš¨×Œì¼Å Ê‚{e~úÆ;îFPŒ·§³Þ¥_ÏÝ
+ɳ v”9þ«Ñr‹ìî+ÓnûÏç'Ÿæsúêÿx˜Þûø“ÊeŠ…‘¹¥M¯œ$¡.ìùdâmVöÚNk± ó3ë¿oÎùœËÏ:¼Ç@ºƒ“6Ò辨B÷ÚB¹Diñî`ùUŒ÷{¬ûð ·˜aˆÝù€—5V=îŸÒÍ6Ö½„øPªLðrPM['’ ç_y‹øŠxò;°ë`2+*p>ªë»Wÿæ"œþzDG• tàKƒAÜ„” ÷®¯Xs¾t£Ã’§¢Ó+¾wæŸ {x‹Zÿ“¬õ‡}°ÞY¼²¨ØGÿ¼ðmendstream
endobj
863 0 obj
-1422
+1800
endobj
-864 0 obj<</Type/Page/Parent 635 0 R/Contents 865 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+864 0 obj<</Type/Page/Parent 689 0 R/Contents 865 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
865 0 obj<</Length 866 0 R/Filter/FlateDecode>>stream
-xÍW[oÛ6~ϯ8È×Ú΀<¤íX‹nñ°= (h‰’ØH¤JRqõï÷êbÇqš]ò0§ìRäùÎùÎåã׳)Mð7¥ÕŒæKŠË³·›³Ÿ6g“h½¦ýÃfø1¡ùdÍh±^áûtr‰ïVRŠ—'´x3ã'–æ´ZFëýÊr¾ˆý&~iس\/»=8nX
-¤K Û$ayB›x$µØ’®H›6_ÎÆ7 šNùÕ‹)]Ì–
-…3¤¥Lø%©|.-Q.$)¨•Ô¢ DY{cÎJq8ޢĔBiªa$@™À8PŠÂJ‘40'ÔžŒ¦°…ñH{N8!Î…ÎdøßÜ”8­³Ð—eU5C‚2©¥=@ÐûÀ[û„ËMD´Éa™b¡i+I
-§ŠÑð@«tÖ‚iÃ.CøG®ÜF±Ñé㨎(+Ìöá†m¨]|ÓïÙceàÂÑæˆx ìUwÄ`v,}<®D%c0v´ŸR…\é¼h#–
-uϤ*÷cëÊÓ µÏ©ýXùµíp Ÿq¡¶c'ãÚ*ßpD>Êù
-¡léVÐ|H?ðÏ…§¤ò—½gc–ؙ־¶ÇNw'´2WAÂõpÔ`“Ãh<ă€ÜbqÏ
-9dþÏJ×߈%7\„îl5À9RÅç¦ÎrªŒn„B[ý›G´ûà?.#±´º+ƒé
-{±Þ‡æ98ª7eÙ‹åsbÏ»ì°Þ!x[+ gG®P/,òáÈè
-²ÈpIòy — Î „#‘ ánÇy†AÞáÉ.WÕší"s;9k)³¦®ZꔸÏ4½îX¡”¢á+N¢XÐÖô,hÂe­oQG¤zÅå—;Oz‡Iµ9®¾ælc2XÕ)’»léÄÏØX[Wx‘‰tÞšF&'cßßž‹}ÏÍ»¶ˆ<ÎÌ®‘ÆË=¸÷apĽÀ]ˆàn?A
+x¥WïO9ýÎ_1é•Â’„R?@9¤ê
+åŽTí©©*gãM\víÔö6Ô?þÞØ»ÉfÛJÕY{~¼yófòù O=|÷é|@§#J‹ƒëÉÁ“ƒ^2Óî—]àŸöɘ†ãs¼ðK+)ÃÙõÉ°z‚—½ø¶ð¶¿`èäöŒú}šdìp4>§É<èÑ$=º7^^ҳɧƒ“Ûauìè}þ”æ4‰rq1¢cZKZŠ/’æʥ拴rN‚VÖÌrYÐz‰7è­Òs³v”æJj¿BS!”öø!Áö{tÜ?Mð~”­eê•Ñä ù¥¤÷KSH÷ÜRÀ®Ì¤_K©)7 ¥]B4ùîTQ:O÷¯'lÀÊÌXÉnŽ~f’J‡`9Ž7S¹¤•ðËä °÷h4¼ØÜ@òäö¢gú{°áF2À÷6ï‹wôÂèL-J+8±}DÓ`„z!÷‰!W®VÆz¾‹kb]Ú˜’BNˆ9€ÒAò€ˆ¡é l+
+é¥MèQ3Š8Òf ¤
+O-} rØ<‰†øÎÚØ'G0°–yÞ%¡‘ "¡„Ž¸6€ü'1TÖ뤮7
+y£ÂȾxåGÃtD³ØäæjÂ*š¢ Ó˜hK4,s.­£Î£_wR—n‹éž¼YuºÔAŒ -× îÜK¿4fÞ‰ÃjPKæU%lFû°BéÃ/¤]pYjÎqæRÖr‹¾vèdÔ‡¡èéåt
+uç§ÓC8AIʲéäçÞª=@lõ
+¼0søqfMAR¤Kîjy‘j ¿i¬sævš˜‹ `[aö±¡7qæ9m¤c˜Ü’—=Œ¸…ÓNj§¼Âåç-çÚt8]cQö¿ÝºR±R^䔣¡¹l8\¥%ö3üÃJ[égO]á¶àOΖ&†¼Ù¡nOœ-?ƤFf°N%ïlÕÀ]+‡Ê’J™J’»®§yïe1e[)îûŽÛäîê>®.R<‹xµÊÃ~
+÷|Þ†@c8d„õw»†½Ž ƶ΀[ºTZvi{†•Ö[“ÓƒÐ2§oøë†Ù<RäXBêo:Uý¯b†ÌÃãVŒ“ß°ÈÌQ•/° ÈQðÌm   ‹£×Æù:7ôõ‘ñÆþÆ–RS`€kŽÖÊ™1> ‹ü1–ýzÓîÇ·ðÎÏ}ËSЋ°Ý‡1r§RkœÉ°‚Ç玾q¾Íý94Ø1¡ÃWf¶KC5½1LØCd<XuAÇËAØc9Í«
+a7„[èX”ópD ßïCb³; £ÆÀ„Wèÿ_D²^z°ë³»“Ûqõ¡ ?$}Îã`z¼º»¾b|b^ܘ´, ÛÏÇ}DÎøØ5?Š’¾?Îé¥Æj\†ÏEîŠs¸\ÑßCö˜ÆÑ Ï‡ð,žù lü ,é†Xendstream
endobj
866 0 obj
-1592
+1680
endobj
-867 0 obj<</Type/Page/Parent 635 0 R/Contents 868 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+867 0 obj<</Type/Page/Parent 689 0 R/Contents 868 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R>>>>>>endobj
868 0 obj<</Length 869 0 R/Filter/FlateDecode>>stream
-xmRÑŽ›0|ç+æ1•
-écîÚJ}H”6Tí«cðìÔ6IïﻆH‰N'@¬À;3;³£ _)Ê ä=UÑǯ9ÒU>ëU$N’•\XrÞ*é•ÑððÄ+ŽÄ7i8òhŒÅ/¥ksqØUYãCõ}©"BQq†|]rñc ÍLü iˆùLžÅ\Þ1§i\Æx6Zö£cú
+x•W]sÛF|ׯ˜â å*’–d}X~¹’eû¢:Yqb:.WJ-¹&€ev¢øï¯g Ò°“«+éA±;3Ý==ƒ¿ŽNé?§tuF/.)¯^Ïž¿;§ÓSš—øæòåÍ :™œœÐ<?þÔÚÑgÓvëéúbBœ-M¥=)§ ÿm*«
+]PélMa¥ñ€©•Ûѽ]ÚfFw%ílK+õ¨¿ÿš”6ÿztBÓÓ³3D>ßVF7JëèÁ>ꪢ¶Ö­ýxÂ4r˦Ϣ)¨âHäsg6¶Gߧ†$ú?j÷¨ÝlúeJ㄃”öÃtRô!(•ÍUEµÊW¦Ñ4DV´0ÔR™Æ©/·M®Q-ÉYU›fI©ä ™©òkªuªâìrvÎ
+è`Óg p6!ûœ âl0¢0Ý)Oª"ßn6ÖO&dÏ&$‰Hƒ?¡î„굟A·à$§VÊ£VHÝ·y®½/ÛªÚÑ£ªLÁ…H4e¯+áÝ4èZšNÏÑ”éÚAþ Ü=K€ƒZhœÔcp¬üÚËضƯ˜ Ÿú8ät©Fúþ_Du¥ó@ãöã¿-1uÑõå±Ùs[ÃPÚ x ˆ‚| í×Án&’‚_Ù¶*¸©Õ¢L¬  {Ö%Ž*,ŒCF~ä7:7¥A©$G‘½
+«—Ïqe*8@®¦Üá»®‡Fobf£ >å½×M;š ÂŽ`“K§j?’[F𰕵žVÁQ}ôCá8wšIÂÖ¼îO¾’ÃAPØ $ÑeaœH¨v#¡m²J¡¥2@%š­#” ¹h§b jBVÅÔ6²àò!ÆWÓìÙŒzÙ{‹´H§±X§²u8äúÐâ Ñ…iÞÏîðŒ©Гjkí–‘á®?Å¢„郱Ó+f ƒÔÔ´€ª¸¦4Áp8Ôš-P£·¦œxãÞاž)°¶0¤ðî`ô1Ìr_ºè9Ì™ÇèçH°›x<@“¥¤³P?o·×ƒ*Ò˜Á…Qâœ4ÿÕÂÏ`-<kBÐõMƒfÚ§?Í•;]Û ðó×ÊÃIaEýb ‚³‘w):Í~¹F2MV5!è8_KœOy0h£]m¼7cˆ³À@¯¬Ì†œY®¸Å¿™þƒÈ{¦“&éÀa[ÿKP¦ö$2f H÷¤í(W °ß’}烺ζHÚT°†V0ƺ²Û8­:Ÿc‡bIé±F?‰#ƒ¤FÈßõ³,À91öÍNÖ/pŠñ½dCñÂĬ•Æñaj=’€Xó¦i78˜àG[Ùñøì`†ïGaLbÀ8"ísµÑ3b¦X±*ǧñ3>öËœk#_Nc˜0ÓO"'6ÆhV•µkdÿêÛ›Îö7¥ÌúÏÛ/Þÿ|{sÿçû›ÛŸîÞfY7G²ì¶u˜@á7hÒÉ2x/÷Ö=ö¹ëeº§ï$q/‰szfô¤™
+ȦL{îLHÿ;!Ú›Œ·Ö;¸jeÖ^‰vZHGLvÚüU–mã
+eIKYÆ¡x?àeïn0õ*ÝÅá[»:8Iã;ýW‹‘ŠˆÓAy¿¿}BsÇç–(c·ë“õüÝe¿ê÷˜|¾ùõáîáßñûô*pLÓnˆY%;L­ÕM[:ð×
+ãt• ³ÏŽÃ
+PáwˆÓÿ ï¼(¯Žk0’÷
+öS³Ù(~u_õ¨ÙDÇ0X+ãÜ&Óß­¸x™ç5æ9?àbXóÞh¾¡(;®ãØÀ:¯ò5Ö FÙke1‰y <‹_¢­ñų5õÓ‹ëÙ%·Ô‹}#\Ê?挢L‚þ}J—%¯\P#ûõcâ)úQv¼/+SÐùhª%›ì™XÏìÍÍœ=DP$ØÉuO³¸Ú–ßË0IXiq¡Q0/FM·íàÏ=¦Ý&„ »Å¨›„]Ù*öXó1Q“£u;ûðù¾ßŸ§ì°\+“ÝåN}v Ëè40¡eq­ó=ÄÉ—át²*qq]ÛâÍ·ÛUÇ/âççï^v}uz~6;¥Ë«ëÙKfðãÍû×7¬’¯LÒ›·WP>ɾ¼ÂãÓ«3I‡f0¿[Û”fÙ:yŒîðÚåÚœøWØ°Cມ®_»ÃOüÆÓu›¼NŸ_#ºÜxqÍaÞÎ~9ú/ÎeKªendstream
endobj
869 0 obj
-445
+1802
endobj
-870 0 obj<</Type/Page/Parent 635 0 R/Contents 871 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 313 0 R>>endobj
+870 0 obj<</Type/Page/Parent 689 0 R/Contents 871 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
871 0 obj<</Length 872 0 R/Filter/FlateDecode>>stream
-x¥W]oâF}ϯ¸â%‰6ÈJ«*‰’.ÚÍÇ.´ÛJ¼Œí¼±g¼3ã°¼ô·÷ܱ jSµM${¾îœ{î9—ïGêãw@㈆ç”GWó£›ùQ?˜LhÿaVxÀ´hD4šŒñÿhŒÈHZò
- b›Ý¦‡·õi¾Äîçã ÍS?Ž7ÉÉõZ”NlÐÃ,¢ë<“Êч‡¯ó‡Óù·#^;Õk{C>ržž`ò  ÛËÏ–§ô©7Ä^Ík |ÐJ„¢)%Z-³U…ÐfaD_…)éZ+%GÚЋ·#–D³Ýà<à(O’:˜%¦ÎD‹ŸxÜ#Ò^qÀ÷üòóQtv èl‚Fã þÖO9Í•ðvDƒA}³ñð—Th„˜è¢Ì¥“$”Ý
-Ê”_ÌÔoòÙ"WU‰< é². Zs äFŠtK±”
-k}p2íR\¹:먭@ÁÎfØï: jóÄ‘5øw©BÀ¸ÃÁ¹™ÌQ€€‘šÛƒÑ†€v³A‡HÇ߸F›à;³úª3骲ƒÙy*Í!=/Ó´EñÍÌ¥¥Ò&&‹P{J‡'ê·
-Yˆ…‘ù¶Õ
-I:¼Jª“ª
-lqb!
-M®
-ÇP®¡? W ²Õ"ä5Q— ?+‰4%¨…—!9xa¤µxÒþ{˜Âú8K2ѹ÷k?eÖuºl¶”I¶ÄÖD_§÷³&>€VÈ/ña3]8|ö—Ûë!PE¦t®WÛÅ) Û¿ò$ÖU*ĶWM©Þ¨\ ÜCQU¦îÀµ²WN;†¬®|àäï
-–s•.¹¥X,
-ä]Å¡UfÌDÎÞ³G>ÁRXw蛳ŸÓ´»çxñ =Éc D¥÷åF§Eï2·º QÇnWÀ*É«e~õѼ6ýL,Áð_àW«Õ6 9pã ë©1ªaÐ4‰pK”ÃÅtôm5ÐdèØ÷ølî³—‡y“ð
+x¥X]oÛÆ}÷¯¸¨HŒäÏØEÜ:A 4¾¹µ.‚¢*Œ¹‘»ìîÒŠþý=3KR2>Ý$šÜ™9sΙ¡ÿ>YÐÿt}FçW”Ö'?/OÞº Å‚–9_ºúpMËŒæÉ|>§ezš:ÝR(4¥Öm‚'›Ë÷ÆÙ¼¬45*´:õZÓ¤²käÊ„2íSW®uF¤ÖöE¯ÞMI™ ×+´Ñzí’û»%Y÷nùídN³Åyr†ø§ò›Ïw$!rë†û§DµÚ–fCŠÖ*ݶ •99ýw[:%ÄÍPNÒUwéì’fç7ÉŸþ“ª*Ò•×”«²òS*Mê´Âw¯êµúÁ#Íu»!D•~Á,­uØimè\
+YÌcAï‘>¹Ö ¡ é@Á©À8»qªUæÛ´ …ãÒ&k놟5:ÔÖ$ú»ŽVÖn‰kVfOÚ9>^7ÖŸt‡]%]!{ÛR¡^4©4Õ^ÒT†—l_´›2p0:p)ðrVÕ `×A/ÕHÈDZˆ&A|8§ÜÃúYmòUÁS®Eç³c{ùs# 9 â9êK™»ÄÄÒ™E»BÂB€ËÊ<×NTIÊá6~œ‰É­Q¸›á—„?.OÀdº¼ž£ñ®ñù ?x:Ì¿é˜{@Ž¯¨ïÉYr™Ð×Òdvç9ׯÖm}P¡>ÉœS<Èüíó•AWÄ4î°®,c©8QzÕwÑy”ž˜ùMK”Üun„PeÓ˜Y
+¬5»#ßè´ÌKÀ
+gÛM„ì•P–B’.*åý§Ëƒ =Ú oE\‡zOÿ¬¶iE‹¹j77×4£Ðs(ð,0Á¸;b(z…¢­Y$æjUØZûÕª«Eú?*(+}
+瀮q”Hˆ`Q^ª€°dØ 4X Ž Ôª4?PC4.£SiòÀŽ2;2›?%“¿È«¢„B3 š=ž)­,†û×{€´ME4eP!"°G…¼-þ_¿U¾+Pc$
+äœùtƒ®ô}§ÜÙZ~ó*Ù¿„å3øöШ¥œ…cXœ]cñ ÐÃ5f„zã©5tÉÃöBüÝßöFž¹òEO„sxض­2&û
+·“Q¡iYÔàHït=<‹€ãˆqò­5±-ƒ”Þõ±¹'“C ½ÿôC™Å»½TÁAPd/ ®VÑs†¡ëöϨ=à
+Ï“NDx Ð««œjœ ms€˜¢áùQ|zåíЩ@Qòåþ ˆ9éqJ‡{9…«ñ°aÀ˜
+Ï} Úà Ù/㨠· ºàêÚÁºµðýŽÑ[Š˜ý»›Ë)e-Æ•'l€è‰v!]`º…W!èºþZô6þ­ä.”È3‹ñÄS[7Ö€k?ö}~}9êúhž<ÄqÜ·}hÁ”ióðT[lB!°¡L/zÓ»¦©ÊnJÜ« &2ûE®X‚€ÍŽ[¢ü¨èɽöÛ`›É”&:Öfüñ)(è³6m<gá•ÇGÏæ÷ºÊY“bŒµx4æz‰÷+FN!{^ÓhåP/`G0á…àGh°ŒšÖ5ìÚˆ˜¶[C
+š`Wã²±¨q6©Eúi°2Ã@ÎÌ’9Q´zw°8ÉA¶h6¬Qô×v˜âbx´z ºîoã¡uðFL–n÷ǘåê!›L±ËÂKµÀû-Px ň¸âñÎ@O½ûe2OæʪL¸Ò§6*TÆ'ÚTa
+È>{¸‹G4nó˜K<¼òrÓ:Y·8Ôñ:oy“÷´ç};’®ó*¼º`¯õÌ<ß>Ç‚9:g()Å„ª|ÕT³!‘LÓV/:{ãÑñφMåüPäkVn`¤‘b†”±S¡lÄc£†—`«Šö®ÐFK*w5Ìw”t«ãD#µõÊàûðÛU¯“ÖTüÆ2ñ-Þ~’°— ·oÆzi”÷;ë2›÷ÚO:±1jBò¿üþÇ—åÿ“ð=`âAÇâòÙ…è•ïA€²IT–Z¬x6O ,÷¸Nˆ+¯ä1Ï€M™pÛÄ%bW²™VL:Nðq9¦
+*^'XIÝ+î}e(­gnÿBijƒP8
endobj
872 0 obj
-1597
+1999
endobj
-873 0 obj<</Type/Page/Parent 635 0 R/Contents 874 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 316 0 R>>endobj
+873 0 obj<</Type/Page/Parent 689 0 R/Contents 874 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
874 0 obj<</Length 875 0 R/Filter/FlateDecode>>stream
-x­VaoÛ6ýî_qÈ'phKqì$H3$­³¦ÈÒ, ë0Ðm³£DU¤âùK{ßQrb;ë·!ˆ![äÝ»wïù­Ñ
-E o”ÚºÕXÑ´½¬į̀ÜõÈÕ( ½-+ÅÔêbAÆâ[*dÞŠc/»}U©Gdˆ)«äbª?ÜÖG[ýS‰þM—
-E·¡ÝÛ ɦqt|rŠæ OÆhUŒï‹úøxôZÔCA ì†Ê£ÈŒd•)ø}U+3ZWFs¨/ȼ‘®û™v¯uå|ÒJaðç–\i*A¡Þ?ÜÜ%ï>ÿ…²¤g‡p“by&A,ùΖkV›¯EĤºÆ„Xsg<ÄØ£—Y“Ë¿Cåµóä|+§JYzgƒ¿‚R
-dÌôÆ\¶Ò ]H9àM¬^°[a=$€Ðzûú•À6ˆYõXXskçU<‡1
+x…W]O#G|çW´.á$¼ØÆŸHyàŽ\Bt‚}º‡8BãÝY<ÇîÌffãŸê™õ¾païzº»ºº«öŸ£µñÛ¡a—Δ–GfGgŸzÔéÐ,ç£!Í2j'ív›féÉ_ÅSZP·/êÇñZT+)5e)µwde*Õ³ÌH,Líi2£Êš\Ò]_âFá$™<¼o®¼Ÿ};jS«sžtèä¡ÞKë
+wñ—顬 P8~2«´ÉÕ匌=¥ÜXT
+ oìzôtsßÍåäï„ý:;B%4œãµ7ⵋ?”ÇÊÇMå¸ç¼2Ú•>NFI7$ôUé̬—7•öYZ>z‡ªé’W3[Jœ­iã—J?’7伩hmjr•LU¾æ…FÒÂ/Q²ðáb¡žêbØ
+“
+¯Œfè¸p÷ó¦D˜BÜ*O°ä ©©‹l*Ï'6à3¤ÈÇRœ.ȉr×PÔ)  ‰!uiizóa{A8¤Äi»x"®„ŽG««ÊXCêÔ®+8•pnelæöÒŒ’Áÿ4¤>LF¯¸2Lhº–a¼kȆ²üJJM_Ç}”À|¡¯Æ>9aì%íز~ÓîNwˆø­î(¶íÎxÐYkkÁ*È’Ò©±à¸×@RÜ€¸ÀÇEraž0+ñåþ·@·~›ÉéÖã-81}=i¸<|=h×€Vé'~uÌ $C óX»SZ`´–âY2«(“…äô”Oh~r¯R`‘D*9¿Ë ÚÀ/fn÷¶Y`z”¿?æàNÎE]x´úäôDsü¼›Ìç_Þz¸®’äù-+ÏTO­NàU¦5ŒæMŽù´@ºVdÌ|ÎüÖ¢”ÉÝÕô˜T¾?*
+ û£Èóy3_Ç CÔÐmo˽ÔŠÙp9¥Õf^„ÌÛ\ålë4Eâa¸öÑuÄøiZ ºãÀ EÀH/¬§©k:£+éžxO1E§oãr¼×_`~»½ÛzŽ)JJ§%%ð}‰Î*¬ÌŠÕB¤OÕ° ÚBn‰¥’b
+P°—…–>‘/ß­¿QCGl*C¶Ö”[S†¢Ó‹ù|¥´ö`àÚ³çÝOƒú
+)çj‘–ÎØP?K]‘ñŠ†‚a"š´Ü¡báó…XD&g¦™_UÊ3^ÁP*Ì+žŠë/75P ’¹gÐ(-!Ê€²Y܃æ@‚¶r r,ó€Y®,zé1«<÷=5•Š» î˜Úÿ~SÍŽ, {8dkoêqz“í­à0('kM‚§‡ÌH÷@¸ª]ŽŒÎš¶pí¨ñÊÎt»½·Õ>$g‹7æí¿¿âÇÉ8¡«Û›ËëÉÃÇÛÉìþösâ_<]ìû›+S
+äü‘s6ýDSv‘Öt†£V°;fÇsgœSÜÁÛnÞ4RÉ_jüW§ßß&ü¦ vºã Æ;6c)U%u¦^°Æ0‘V=*tZÔ[mZ¬é³Ôô;ͤ­ÐdÒ…ö†äñ±(ƒ+ýH‹:÷B°àhRap!ô~„QØäßa¥´Ç¥ì}°5£þà“ÛÙ¯t±Û8ìvoØa¶¤ã×XÒ‡,QL³•p ‚RZÉü
+ 9"ñþ<€Œ°:g s)e3&a<öL
+Ö »îÝnÑn·Ã"è1äíUﶉK—²~ÁŽsسO£} P|T;™^Þ|¸d+üê•Ik~6 Æ—¿Õê„›[Ã.žç²“è¡yÀsõXC]ø1ãZ¡:å÷PÞ©ô*HÓ½%£ìBÁáS{ÃØNtøLÊŸGÿsÃendstream
endobj
875 0 obj
-1117
+1723
endobj
-876 0 obj<</Type/Page/Parent 635 0 R/Contents 877 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 323 0 R>>endobj
+876 0 obj<</Type/Page/Parent 689 0 R/Contents 877 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R>>>>>>endobj
877 0 obj<</Length 878 0 R/Filter/FlateDecode>>stream
-xWQoÛ6~÷¯8ä¥)PË–íÄNž¶uK[ h·Æm0 /4EÙ¬%R#)kþ÷ûŽ’ÅéТhmYGÞÝwßwwýg”ÒRZÎh~M²ý¶Mînh6¥uŽ7×Ë­3š&Ó)~‘—¯w¢
-ÊQ:OèíLJõGúUJå=Ý‹r#ÈÛÚIEÒfêåúÛhJãÙç/ZÐë/÷üßžâG¾}<O“¿ÇuiBïLp6«eÐÖ´¦ JÓÎt¶dÃÖö”©ƒ*l¥2Ò†„!|5¤ÌA;kJeBBô{gâ<Õ^±úzùÚY; ú¢œ‡'m¶tôA•__R°]܈(Fv!wJîµ¹ÀYQxK{cxôDÒ–¥8fT3ÌÎc /<„Ó¶öÑûÆ ƒë<I¼Q$"tHðœ¹ÆšcÙ¬=v
-ÉúàZ„ƒ tÑBv
-³.£R…͸tšÐyLƒû…8ÍRt*ð×Ø@ßjðB
-Ϻè5ÆžQÛùl–Ì)½¹§xˆ\ã³}:q+½á‡ÜZ# Ί,W )øàèÅyE•Õ3€Øõn{µý +›¦Iäõ” d8‰PFOÏÄË$æÉVû30;9½xkF~«b„/ C³oG°ÍQ*‡†áÔ'bNo>|¦7¾çMm¤Û‰¾¾Ä6ðÁ¢„a×ö ÆÜõûQßð»1@['ª–@ûtËLªhP±rŠ+öh´”Ë–.ÄÛRÅÖ%ÈT"4¹…‹ÎÒäÕòå=[âQ3½ÃHŒ(¢V Á“-w¶¤nj?Źoi`BÜöPë- ŽkQp§}†+ÎëÇš[î×q´U¾t‡qÉ#‰Ô¿¢¬àU·;‡÷Ø?˜9€õ×°ä|i’¶:2Ç#ùã°r+é.Wdaà†¯›½fvc‘|Ü
-[1øzƒVêXÇóâI •É@ÝÔ&#Êh‚•z܃ò›ÆŠS^¥úhºÞp^NÁæˆ}’·:Þ1NfœTÔzlV„Ž+Ü1‰]zŒ%Û9Öèö§EâSÝNˆ®äOíÑV™“»«nÏæ“}ÀìlœÑmÕ. ·xþå´.Ýr»w­sNÇ^8¹[u·Œ9ïù­1ýüÿbëȺX.p<&µšrŒè;þ3ìendstream
+xW]OÛH}çWÜ—ª©,PV¢@WhE`‰ª”—±=N¦ØwfœÔûë÷Ü;¸&ZU•hÏǽçžsîõƒc:¿c:ŸÑÉ%ÅÁ—è`úõ”Ž)Êðäì✢”Ž&GGG%#·%¹µ$zQeª·–æ-®î'Ÿ¢ïGt8;›œbèÿTš4”`c,I•Ö‰<—) KRá(C‚ª\¨’2•KeJ•Q¥#6.G/OÿõôðüH[m^±ß)]’6íÇ'“ßÖ/?á .º³£J§U '-‚ ]ð•×ºtFç´Ý<Ü_ÝÍ©E,͘*„iºuIX—#Úw÷~Ék]½_¹ü4¡PYQ oKÎÔ’2÷°˜ÎèE˜Š>Å1ݨ•,ô(ÜÚçèaЫ
+•‹a²•Ñi8;& I:£íZ%kr/Õ=™Š\—+Úù^ ‡å‹4¢l¨’ºBM‡Å_i
+ÛÕ€dµUåjLVS.ÝGN°!§)É¥0ž$B™áÉ·àBÓ»™lc,P€_kÛÕ\ûZ¹R–/H…±°2`»û™ „‚‚S(¨B¹ê‚¤Ò&F„ÈÈ(§D®þ lR%*S„Ï\#F• ¥œµï%ɵڈ0ÞÏ¥úI7Bº´ˆÒ“ÌÔ¥GĆÁí=IÈr£Œ. 5HCä@so.€!‰ªÊU´:s[a$J/ñÈgÐäàÖ´)EyÞP®E*bÔ3W±;”8Và*+ éÕ•.'t1ŠÄ=Rÿ16TíàfÉ•vkP$€>…o…h¨”p
+ Ô<øyŽõ{ úëÅ în‡hw qXÌ}o4p—î÷Ïcé¾ã5íDZqøj ô.Q´¯K;Ïk{Ž/&K§k§~ éÝ )` l›§D,%{‚a‹.؉ˆ[–Ïpúõ¢¶ŽÏÎ'Çtöù„_íÀ‹/Wx'Óß± oZIÍú1˜= ‹ÏgxIMGŸ'“Ù„ßíüÑaZ¾Ã‹'wG(Á^âÅË9þ`ÎOÓ
+>>#V¾Â)|êéùéäïÀ8ñlÆ?ÜFÿüQn$£endstream
endobj
878 0 obj
-1481
+1722
endobj
-879 0 obj<</Type/Page/Parent 635 0 R/Contents 880 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 326 0 R>>endobj
+879 0 obj<</Type/Page/Parent 689 0 R/Contents 880 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
880 0 obj<</Length 881 0 R/Filter/FlateDecode>>stream
-xTMo›@½ûW<åD¤‚›øTç«í¡’›Xí%R´†“
-‚´•05“K±4(ýr‹Ní¨8uâ]ã|y*—Ó›œŽ<Q@ËJêŠDÅKGm©v¢#,áÚŽ‹»¡ rSI–­í6| Ui—ȘD´gy$ïL¨‰¤“£wÒž˜T—¼æL¹îPÍVìLt5ÉÀ‘‹–ŸÊQˆº#NïËs# þÿFô%žfßof/ñKü/W™ÒŒ)#í¨m˜é¶@Ã%éS9ézóY¿e+Ö–ÔîŽ(Zî@!EC.×+÷ù™ˆNì½í§û9Üy69WÀŒâè:Cºunf‡&ÒŸðûÅ€v’QJ1I:¡û˜.ÉQ¸]sˆ6LA“ž„QÎaÙ|ksþû€B«ŠÖ"ó÷øeÅ&ïhbÆ©A”Žƒ¨ªñäÀǽ“C:HìÔÀç²jöhhpKC-©ß\~rËÉd9ä“%<ܰ쭔ƸV·}„ £ˆáCºÛP㉩&¹²Œ<ÛnÌ¥x¥}B³ÎL.Ó•³±ÙpÛ}·§PÑ©ÛiÔëðcðs¶©Ëendstream
+xmR»nÛ0Ýõgt³’,Hj7; C›¤Q·,7e1¥H…¤äïsi…÷ò<õšÈù+ДØÔS¶ë²o7ŠÝÀ“ºmÐõÈEžçèäjk&"Ô›òèÝDÚâ]ƒ‘Þî~]ãÞë‰xxµ /Þ£<žV÷W—O·: WA{z6
+q$†$9ž#^t/YŽu±%+XñyÍ(b~gv$ÿæÿòìŽ<'„²UBèF
endobj
881 0 obj
-734
+383
endobj
-882 0 obj<</Type/Page/Parent 635 0 R/Contents 883 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 372 0 R>>endobj
+882 0 obj<</Type/Page/Parent 689 0 R/Contents 883 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 252 0 R>>endobj
883 0 obj<</Length 884 0 R/Filter/FlateDecode>>stream
-xÍœ[s¹…ßý+æ-›ª„æp8¼ä%åK6ë*_6+m9¯45²ó¢”7ûïsh
-u„ËátÎí`2ý¨s•ˆââÉ«§O¤»¬Kzù»Ñü¯UËéfb•]?ZÀ*û^Z?\¨U>þ~ª6ˆ1Cá…1ÃvDVTÄÉŠ˜¤lO¸8·©£¥h] ±b&èmOÿ)éI‚>l§þaô¾ü4¬Š
-Œn<šÚJ$¬‡œo†T Vá¯Á’
-xÆnµÏ RGw“°žq»z?4™>¤9‹µ†…ñ<ˆ.Ô°Äœ&n²WkG“│9©>v=ë£9U„Úœ”ûž ʬêàÌIõÒgèF(ÒžÞm¶W›ýûÜ•¤DWNg☓ÐÄ&E*0 ZÃОñt³_7Ñ"`‚Ó‡s0É"¬=Œ—¨Cr4á‚ì¡•Ñfí¡sö úØw¬öPj{PBì<&DfE˜8{P};^È$Àˆ¬
-ŒÙBLÁ0"¶blv·‡ãyµ§ «hŨzÿ@€7³Šs‚Ç–É£¡ö6_©9kê—3¸Eµ¦xQ¬©_ŠÏ´Ö4µÖ”ô¡ç>XSM¨¬)Bׂ2}:kMIßNÆð
- HxvVç2Õ]ˆù¹·”öö-¤£—øÏÔ$a=ã´{—}©û´ËŠ¡<c}Ø_oÞßWçÍ!O~¬­›ÃÄMRO»Þl‡Q°Íùמü&?õÁ!'C dˆ ïÔzg†ªŽ&Ãêh†N_¡ê£Å°^‰öïO ªºÅ@Gdz\VnB^Òˆùub~LHP‹øõp—W.,b6•q`Jµˆh7ÙüHÈ¢…'³-`!b.A"‰Þ§bs¦ZÀ"~Ùœo‚E@L§¾(
-pq^Ï›‘†ƒE †
-€é •5’P,©b0ZÀƒ®‡]òB,G&1ž…(×C6ûá|5Ç*¶
-xÄꔬ“E@LZ¯Ü6©@…ÈÒ€†‡%hO¸Z »Ã>L³²3ôuV.Ö’±ò/ë“pA–Üa·Ãø$D-Ù†âªú8²^o{Û1‰0d3­g‚Þö„Y6<’ÀîÆsqÍ Ðûpyü5õ‹€@¾fD*àÛÍÉLÒ¤”ñB3ÃўÓ4©ÀXˆغôWU—œnVÇ!/ËÄxgâŸME”ë+²ú¸ÚlÃ9::Ö‚4•CJ<‰I$ž ŽŠ+“¨ÁÑ7Ë
-Ø*¬·Ç ³þbj"—pamv,õK6.Èf±®´µÄ9 ³ZÕGc}´ÚŠPÛ­¢™1A™¾ g¹ªW+c€"= ¶Ý„ˆöňDõŒOZoB-äT¯7(¥{” ‡I&ööÙ D xÈ*™kÄ~Ã4f
-õ„ço.þ ,¤ïdþaH*à!o¯ß¾/Ò‚Þp-’Àe³_þ«`H¸kºIõD‰|æõeÆ°˜™œ$šgJ<¦y»ÙO>)ÁY†°’Ûh€=åÍÅãIaJN×ÃúÙ0´€§ ç5Æpê&ƒE|cR1ÎæÞéÐ8‰)L&¬xÅ#Ç‹â$¦K¬i\dˆ¶TÇYÑ °›£† ·=âíÍ*Çñ$Ú5ðÎSKÐÛžðâ:Õ€$Ræ ÷=àò;/%˜"(Xæ¸j$°Ç<?ì—…u  êž¢`Oy{8~øs˜dì+Nõt1õäLá•åL <ã&^-Ì%ºâ ¹ã$²XCQáùÃÑaÌ–`zÆóÍêýþp2ar•ª"Û°®. íQ?ÈÙ…#ç©dÏ<Pþ‚kVÛ¢¨¾¬»b‹† jQdaøuZ”¶B‹*b¹ÀPœ2B´B\¬·y+™4謒ѰLÐû¾/ž‡FDù{ý‡{à‡º´ Û#—)7l¸ †íïiÖr~;CmÛ!$›2AÚ՞ݬ‘’
-- ÒZFÂÚŠp,J°ê ZÀ`äçÃú°M…À,¥+Íäórø8l5 =ìP±ÝÖËi|„ êFBøã£ÆŽT„DsxvfHGVŒ›½Y™Nº²•iŒ) ì+cb;’2o!ZÀC~~ýâï¹/I&&!k ÑRRØXDñæa”ê%Æ$Ę²od ZÀž…ENz²c &𘟉YâÄà!¦Â™™ýpè"¡àuÃÙâDòðªÙ¯œŸF[TD‹”;D"Ì[¬/ë˜ú¤!+ë[ÍY÷ºpÛ8mK¡A¸ ÆAwÝ”SºØ8Šhñ/¬’Ò8ãÕêö–ã’É“å“$®¯ËÏØ Ú¯v1óhº€ì›5óœí­Ãì›cƒxQš´[Êá]eoe[64iB ûdåŠð­o0ÿäãnÒ 9ÃúÂô¾¯Ò}«5%ü²4öËÌV%ð¤‹!f(c…ô ÃŒÔ%’ÝÍå@S¢ã…6''@wp¡vZº/:±Bʲa…èRÂ>’ Aql†¾ 5ÓÊè}_‹Hú~Ä™ %ü‘(즇TT¢{Ö«‹äÈYÄ\–›¦6(€_x
-xÈÅj÷n¼µ¬|¿°Yç€ ¥œ®Ú…‹lŠ”ÝáE
-Üó8%î#…Œó^F¨Ñk_…Û»cn–a`aãŸC¹ò36Ù¿ÜìïÊV;‰‚­ºÆýžç³ØÆ Ù×üÂ#4Ù¤µÀNί5e¤ dH³Ó¸X`¡! ŠÐèˆÛÆ ô¾‡<Æ^áã›Ã)N ˜P¾Ú£¦GþmÿÚÂ9KXªKNM.¨ä…&z›Hš§ Ñøøª—¥L˜ñ¾C„ÆÁYéaû1ç`Ûö+ÙÂoj˜¥qñèn‰6âC„ j—±BÚ…ö0Bc*¡Åò
-†Ã…zH6œÜ2Ø”üâ3Ùoj*lšGŽ€s*V¼(Í3A†ˆŸ÷÷gß?ZœÓM‘ò,9w½ï!¡yö§‚…õMn¢ùüO;f»™ÌéÍ…xA ƒÕ¹ŸòŠÕ„?éÃìdôñvE¨¦¼D9Fü$õÑ*Dh…ÃÑMyE+Sžlvà8WòOSòwX
-Te6ˆ­„vŒã<„ìÂ3QAlc’ Ï/ÌåVjηf
-9Ì­É™”Ä·€„ j[¸€À-9;W’º¤çâŠñüu¶Rh³( yÆ+­ƒÞ÷µxy8|¸ /Åuÿ'‹wר88 GÌ¿NÂ5j8qô΃öØ‹Ùr:iÑž+ÆÛ¥UIkÅ~œ/WBïû„]jUÙ]þv£?›kk’8&cJïÔª¢~ Z 5Æ|ª‘œÑëmOào.Hô—*W"† LOxwÄö oU†5Læ`R…# ÕÒ'Ihº¾Û#Óð°Ï[„-ie† Á˜!iO2/°¢1Â7†b=ã¦|Œ‚UJ¾‚a¤žQŽóX©]5R¸n·‡œþÌB`Ð#{ü4©€Ç s_>)¢«ƒã_%{ 5,«žbîFÀdª¢XÏhðH²/Iõaµdk…h€Y©€gyÛc)vÿql‡èЀ”íAwlÁ¬%¤y
-
-
-r¼(ƒ¼]ø™¾¸Í0†“z.éF­·­¾,LH ¼œF¹Þ·r·(a ˆp±‡' nåZÊiXß7çlÇ,Éiø,Á(Ùb·Ö?NÆ¥¸NKÑ–ÂFL°
-vMš –À¾4 „
-S൘ $
-XN¬69–‚ðÏU&°ëC>Œd XœºM,á4 »ípÊ®Ÿ…2e~7Íš
-X BâÉY|)»ÞŸÚ.lMöJ ÛÏÑw¼ N´l0ƒý]!&BX·Bfâq3p˜Z4 áeACÐû>?´ŒlÖ€€S4zx¤4*ñ®`]?¶I
-ÒË:GѾ"¯/Ó“°œÇÉß•¶MQªGÐn‰€Àa<ŒAh
-±Ïµ †ü·Gh
-q‡suä­í§ #TòŠLÒ_ð8zŸE>ÐòƒÍÖ¤tH
-E^ßÄ ²ÞjÄ–‡¬L¿ŽOøK<[À)!ZoÅxµúÍ—Dè°0ç„Þ÷Ù²Æñ° p@` (€ŠyF9ô"…žl–Y½ð„Ý°{WR)X(Æ'¹Ú£dÁ·Ú4¶bÈãƒæM<‚>ÔD"\ا°-à¯ò¢“E2äàÆ Rp>•à`è¹vE€=¥x–`>À³øŠ(Ó#|ÈÀR€¦B™'B{jruØ­6ñ My×㿃n¬áçeo.h¬!)Éî5ÉXsû4QÓ@ì¶cDlä™~Ð$8–„6Æ TÀWÇŽ9Ò‚èÑS´€§³&øp¦iS-P!Š³&, Ǭs‡Ðâ~gM
-ßÇ“D
-›¨úŒJtÏúñÉ«<³
- œ÷b¤†ð
-ÏY…áR5-C±žq…÷§›wwçräÆj¹r hX©€g’ž‰U` ©.?
-àž°F”vÄÌò‚’•˜B–²å(Ú“| Ÿ7Ìçˆ,± f®P*àA+ãŽd€…Ó£Ïð#­9-ÇÆeN ?gÃGE—[‘…ùßîYó[þŠÁšz)¬y¿:Þôr3/xÙ:g@¼ë´¦& ôHþ™½Þö
-»L§ß]È̼"ù||¤y~XßíñG: ošôÍç!_ô»ü
-_ÇÿÛ£Ç)endstream
+xW]oÓJ}ϯ‰—"%nœ¦I@B¨)ôÂÐK"õJ…‡½IöÖöºÞ5Áÿž3»¶ã¸å^Z©ª½3sæÌ™ñã ¤1~CšOèbFQ:X®ï׃q°XÐñO±Ã¶½šSš.æø> THÚò ,âšö¶Ÿß¼¢É˜Ö[Ü>›/h»u¼‰Î®÷"·² pÐ} «é*²$ ZŠè¡ÌéN…Ê^®ÿŒi4™âøÙµÎl¡“U†·e!“ŠV"ÝjãÎQö!ÄYöat¾FÀn YÈÇRe%}•"VÙŽ­ßL) ë#“9XÊ­Fœ•.)‚ *+%âv'Ø»W†"ÑòD
+#)’ IJ°î¬ÀC¤SÜeÅ&‘tPvÏnÕ®,`ÛwÐ7X† è׿á”}¿\„ÁŒRšL/¼JhåàÇã‹]=.·ï®×Xš¨P{%9dÛ|9CHÚ™;4¡ч/wë/§»\~yWpô”.ç!¼ñ”˜€ #ºØ_^œæ)˜.Ó»B—YÌ×=üCpEÒc’‹·ô±^JE´WY3oflA(‘™˜’èÎàÔc)5´-tJ]<+¬Ò™qTraÒ(¼ð ¹SY¬†>¯kÃÝíe&à>A¥ñ×òQ¶CíwÇ›‡È<’||Á¹Îd'øTϤ§{'@ø#q†ö
+ï%n+Ü•l?©t;ra lÄí
+Ù*÷YfVꢀŀh½—ÿk±y¢¤ñÄ@Î’Þ"H06u`[]ÚÖÔ°Bò§HAz÷6OD„˜á©fWMÏn^è­Â~¸g,ê*ö@¹­´-“„\p°Ìøñ뀮ðÖ•Y×™ö‚†ÒHo§X ÀP„îâžu£G‘€„Ä´ºúähÌò2ƒ¨¡Ðç:µM`ažæÆÉÌM¹ s`ÃœóÛ^Ó´E¥¢¨žì9óí …öí¥K¤…fÊJs"Núv¶ä瓸´Y “à^¤Â°ªF:¯Øo~Õ‰²ewCåzöÐP–í
+Ù œF>¢/÷“šæ>àcNvG:ƒê÷ƒ"ªOµƒ¨Hy™¨E)^q°=YpÅVÂ?È{$Ð<‘çˆÕ¼vœËPâ‡P ëL@ï¼t3
+½x­B‰f ¬ápfX®aÚt¤¥îuw2–tDoHà/={(t©~x_››œÚÕÎ÷ɾRj’f ƒ4òù†¡·[)بпòÝ
+ÝÃ5c4<e¢ê’ÙVÿ®¡™5CÔc””MCE}µÌ«uu2F[cÈÿ¹e&U+rû7e
+ýa‡k‹€lbAp»¼Â~÷ªUùfl
+*à ãzŽœlµB‹šˆÑÀëy¢ÑO©ŽèØ—\š\I÷ –™ÂHÖ:æz~íÄæY'üÝn8ô"Üx=ÆpÂbUHçlÜ€Ò³wZlã€íÐR‹&rÇ}\a6sùǺž„²Ê¿Ã×ZF-ŒoÇ^ÒÆE=›ŸTTh£·¶IâI‰9çÇ)÷¿»ŠW«Aí`-C5Ö†§¾†Ü´ýPw~³8~²\øÏ€?ÿÄêÌ<HýÉgÕt>…ÖáK.>›M9f|´ü=ø -Òendstream
endobj
884 0 obj
-5352
+1597
endobj
-885 0 obj<</Type/Page/Parent 635 0 R/Contents 886 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 417 0 R>>endobj
+885 0 obj<</Type/Page/Parent 689 0 R/Contents 886 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 255 0 R>>endobj
886 0 obj<</Length 887 0 R/Filter/FlateDecode>>stream
-xÍœoo[DZÆßûSE‘¾Ãsÿ¸(;¾u;n¬Þ\à¢(h‰–ØŠ¤JR±óíûÌììî3s”4v,å&@¢£Ýç§åîììììþëQÛŒñoÛÌ»¦Ÿ5çÛG_ž=úâÙ²éÆÍÙÛ¦.Gm3›Oš³‹f<ñÛóÏÎVo®×Íþmód¿;­w§ãïÏþñ諳GRAk5­üôí?êg£q3›,ñßm3ëGS{¸n^Ë
-‚ÃeóųIÓ¶ò§ÑšÙŽþîdÔâßÆþá¶Íb9ê<;ÂËýi­­í&£>÷ÙÅg£ÿGÿt}íÉfÖu£ºmÒŽ–ö`Ýöų©u:·ëQ‹{éÉÕêæ´>än"ù¶™v‘eÅ2-ÝLts?šû¶XqÔÿõåóÿÍ- ѶiûÅhâV¯Ö‡íæxÜìwÄZ`›°'í%ë˜\!¢¾ÜœŽB2@°Á
-²Ú]©¶M×Íb¯
-Œ¾+)¯3V!BÞn™b 0íŒÌãFH4–ʤßéº$Wˆ Z8IIJ| ««òiHƒ)†¥ma"áõjû¦PX'®c×á>J®)Ç«Õa-Û!üùVý¡]˜è [“ÉêM‚E\5ú0L­Þ}Êjãyý]kFRa¼ZqFŽaTÏpÖG4Œw„ õˆý»Ýúp¼ÚÜH_«ùÙäûú?Uc¡Ó'…>ÐXÌǘ[Þ!MÂh˜>õëÓh wŽ‡A¬ë˜’¸Ê#’úIfv
-²]ÿ™»”EØña&E„Q=¢¹YVÛ59-*âi~Érl»àE‰€õlu,›$ï¹æÁZMoÅ€d­ÄÛkF%ÓcT¦ÇæÜa±’ÌËAÄbÍÚl&$ËrƒÆfüˆÕÈÌËŒAwÙm¦Àmb‡À” ŽöèÉÄn%aá!V!BV§Óaóæ–f
-F’1™9%kÎ`Sß\!®W‡Ë²Ia(šìs'Wˆ”ÝíöM½NÀB`²ö#G ®‹ØÈ°ÖÔN»z„Q#B=O¶¦Éîô[S¿”d~;=Tkê—r%ZSÍC«µd‚Öu+ŽŒÇ4I†¾×M¢ƒXy„¼¤£-syã™y&—A$)@8¢\Uˆ ï7Õ°IÆR„oŒUˆ Þ—‘
-Æ„ulV!2âe R‚3•ì–k ÐøE¤ÔÓ_–
-.|=Ȳ\¢½áaXÐ-GZ½>аLfƒøÑzÉa¦~7BÚ9„•GÈÝ;­¤D×"s_ÆMÉèŠþ‹”àÌ2DŽc"'í,Š$!Ö)¤`+c"æÕêüŸ«Ët}{Ô‡Ê;„ÕK39ÓPÝ3EïWý_0#è1mÏ+– 3Èÿ‘#€1¬<ò)C@Jp¦2k'£#è¸>`¨Ñ‚Øõ§Œ†3é'F¥¥Þ½>ШÈUrºÅ-¾/†Å¦OýÇú4&0“·½ì?ÝßOÄ ¾CRþúZ3EeLH+³KŽHÉàõäzƒ ð:"rüôëŒHïn¾öȦ–S›ô@ƒ1÷㇣FŠ
-à¾j‰Õfâë ®¯ 6•œþ ÞovœÐ©:±)Éì9Šqc;Võ8Ž4 `ŠaàvdhDÔÄ‹Ä ä/0jD<õvIB1*I¼zŒUˆwNO2XR±-V!Bœm²N<¥rº¦ä
-‘O)K9lóþý¤·È)Ý5îôÁìGeH¹­VhjLI|PV'# z×W¤ ”›•Ž`徜›!‰XO+&ÌMÈLOÙ7Ö‚»[˜<Žb`OÛ÷J"1yóÐ#¬‚G$#Ö65’àéçbdx_Rñ»^îÐZ>'=ÐÐ×ûpmNitM¯K­Ó§âừr ˜4ú
-%†NiÖ€T<
-DnkÐœÏ,üÉ"Y´íª¾ùÀJp°ëŠCGŽvX(ïúÉý;ÿŒ1öÆìuJãàÍøË£õîJ’„ßåJRz(sZì@|@ ]gŽº;#µxµ®]Ÿ •–“âÕa}XÿëvsÜÔ뀬†ÕáàŽ”Y¹BlÏ·ë•œwŠáÁå=Èjœ·ƒÿû.–íL¹Ì”¬_¡áúƒ‹Ð°5÷ÝšÕrÓ ß¶ ,îÖø¹ÖËÃþvw!]§õqV2øLŸä¡cp³³Ä/­>PÇÌã…Od­Cט¾EÔ½€Ÿšëš"»JÚG±§—„*WˆÍá“dRëcsß¹ÕÞZãÝ-©ÄÝÊ!°o‡UˆíðÞ……pRð.mÀ9b‚w‘ùÞR’wïJúKî]©—Hdúgq¯3˜éõM:§7¢¬\LˆÇ,$DÏ#³‡.S¦5ÃÊ#æÅêüj³£U·
-Åäz«Ãdräœnå8Žu²bJÒS )øZLúúe,_4ïÁŸ*Wˆ Ú¡±
- E<Ø`„B¦‚u  7CÇä
-±%)C^#RbáÄî1tMFGN°X”Þ•ö‹ùe‹3ê
-‘’ç¯Ú‡$ÒîÁûÂ+åNš¼”W2— ˆŠjÏ›ŒÄ-ö‹ð Œ°òùÍ7»Ï±p~þìú‡ßäøœÕâ8%©áX¹B„ Œ‰¤
-DÆD" N[1¹ùsejDcb%8˜˜dÌAü"R¼)‘
- $t1ÇÃ*D
-›æק3¥‰»ÓØâʽ°ô@>¨ZO ß’u˜ ìMœ
-„°ª
-c­7ÃÃÊ}+8f#
-ëL…]Æz+Ž„'ûí¶.<$“Ñ—¯Ép%æë ¯{|}ݶD$¬¨äsÙGÉb[(ÆbÈñ`t ÃFÆW‡Ã>½»‰Wî1X¿c$G~(‘¯(ñ»þ\!›½1×Ë¢eb=®bq*Œò×?OërL_Eè9݃1!•F«ýõæ|³®cXubrŠÁÙ¹ >_UÈèIÎÝÉSñ ‡½¼M™Î$æy˜X‡r’ÏÚõ AOÆl¦?×\Ä›ôx Á ‰ñ¿EÃbÀœ¯V º&ß9}*~^¿Õ¤Š’,Á˜qµ¾¾)£o¢4úŠ#áœÿà
-À¹S#àyùûU¿+µ3/OÅQ~¹>išï·=¼éÀˆ&î—þJQ®ÖƒxË/<pbÞzLŒÐßS& «õ ä>×QE2ú62!•ÆXš£ô•Éø‹#e†Q#Ľ(U4
-d<ÐØ’¯÷—û]rüâ1ïaà&.Ác/ ³´oõç:T¸ªƒ,N?W‰L/Is°>•FÂO —5¤Õ^e’ × )?1`JiJèئð’%é0d¸÷‹¥¬_¬8BnË’Aèq3@^©#}"Fý·ûÕ–²Î¤“T–~å
+x¥WÛnÛ8}ÏW °ë±bÉ×ô¥È­[?4éÖŠòBI”­F]‘²ë¿ß3$«JÓ.°(Ò8&5—3gÎŒ¾…4¿æg””g×볋÷
+CZg8™-æ´NiŒF#Z'ƒO·7Á›õ׳»õ¾£Ù|D4YÌñ9ÂO-)s&.)œx“(ÀÇŽ‘pŒƒ0 ê@©’š}Qõ“6Â䪢,¯RÊÆY)òŠU™Z…¬ß±ënxÈÃ\ÑýšxÊlek`uõñú
+_CQÁ° B%¢ FËšŒ¢X’hð@eòD™ÒVhþÞFr2ÄÞG4 ÇÈ^OqQ¦j²^Z—“Ùæšâ#þÈ« <ÞKs½|XQ%JIßYíSl}S«f笑?„íôÜ ­›`Ù<¤H¶¤2›e‰Ïy…“ÜÐF"½X$O”Õª´Çì+çSÎû¤$
+è 8É…cßh=ª$BO_k¾-÷ÀA8f;²#ôd+ª$NµÍé6ñ§': U•$tŸwekýÌøæú uaöü
+Í=¯cÆ 4fĬÏ]âF7øq©–Bs9µ;öÊâ)s°WhîG‘€ÿ>…sÇɲ1(Šã-niÏ÷Z<ZŒ€ #Ñ-ád2úm '£ÙËNºAg­D «1tÎD«ß:a»ù­°}ÉÑT¨¨f]Œ‚èí篠•{ɺ, »»‚¥‹¯ƒF%
+äÞ
+Üà~=Jÿ RÖ0y¹+d‰©5ÖÃØÅ»–¢dêq¹\°ÜT)B1h +i¬Ò­%WPÀÙ:ø ÷¢·`‰Æ¡p=`Y®·î¡N²¶ÐÛhfçÇ€±\²ÂÙÇàzÆS”tæ80X6øwDÿH–+ØŽZ
+ØÁ!»£Ø‹¼q^@ÐZ¿­Î/ÌrÿñM_OÏ\š•P ‡[ËhÖT´•F¸¨8šâ³ÏésšJß´=P<‡ÙcªU—Ñâ\ûõЦ³¾ LÛ }Tm.@ï5MY± `T¢’ÕÆS
+ÉxÁxËQcqx®#žå…$>¸xÕÂ.ƒ]ï1Y/>^Ý|XÞ߫孻Ѯʭ(g<ª8y'µ^±m" "”¨d9¨H`c ŸóìËuC½æ¨<[ÌXP§²ÁƒN(‘†oü”ÄúÃœ±Æ‘ÂIùiÐÕÇV@z.ä9‘vÓ¢“lÇT-g²·ó™yåÇ žˆî•‘£Ì¯1T ÝßÝ
+Áw°©
+¯_x·¢ÿûü×Y8‚9Myâ•/ƒ±û£ ¿WAj§óÞÛÏ»×vÚžI*¹TŽñÖÅÉO½¡‹÷¿ Àéºýd¯ŸJF`kÂ:ÉÓ´´š"±ºaß°:ËêÙT SPØiêñZxÊ…ã0i6‹e]O|ªÕW¼ `1JðŽƒ5Žg†álŽëÃy„×ÏtðÿÞ'sÞ³­¡ÙÔ—àﳌ“ùendstream
endobj
887 0 obj
-5223
+1660
endobj
-888 0 obj<</Type/Page/Parent 635 0 R/Contents 889 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 463 0 R>>endobj
+888 0 obj<</Type/Page/Parent 689 0 R/Contents 889 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 258 0 R>>endobj
889 0 obj<</Length 890 0 R/Filter/FlateDecode>>stream
-xÍœ_s[·Åßý)øVg¦•yyy/ɧŽ"Ç­g’ص”qòBS×[þQHªN¿}Ï àìBnãid»™éè8?‚‹ÅXàò—'ÍhŒÿšÑl2jûÑjûäÛ«'Ï^,F“ñèêý¨égͨŸMGW×£ñÙxŒ]=½Z¾Û £ýûÑÅ~wv§ã7WÿxòÝÕ©jùëÍ_ä_Fýtÿߎ¦ÍÙB6£KùWÿp3zö¢5|2t>Œ>õâvyw#ý0ÂmGÝijc±C,Î’šÛÑlvÖÛ–Åb§þëþC’“b;š/Î:+ÅN~Ú'5 ¶£f<?›[y,wòóÕ)éYÀ¤9k-@+8Âò˜$@õ”éE_Ð÷ó³©k@D:ý·ËÕ?ïï2„d[ø[ ‰äù~»\ï„e€ôcß“ZÁAÄqûͦ¸KšM|Ÿj¢–€ùØ÷ª2`™¿ )¶£¶™žÍ¬Méô¯ïÃæß Â2@0òÜÓ
-r¹Ü¾Ë aFí¸õÞ¥#›ô:5†¥
-;XFyÛ£ùžžÑÿº™F
-j_&1íe,D f8ÝæhÀ™fÞ°Z¡bì†Ó‡ýáŸÿGà”Uš ƒÖ)û“ußn!_j‹p‡Šûv ‰^vl·6I„U,¢ A‹=ƒ–Q¤ÓÀ® Zî ×{r]R cŽ›V$¬‡×% ³>çê oÑAÇÓò´.Ãj°27Y–â=ëýz—çM–Ái°0Z8ˆr=d}Ê#šU⺲š0 I<ãÚ.¯HÌbâm“È³Ê ¬èÂâø¿“ wsžÿ»yvÑÙÂ9𼎾er"Év„¯çc½[ÂÛÛ!‡’ ¯Ç2I€–[À:w+¢çÂW¸©‚PtoO¦² ²­` ¯Ÿ_äÕ
-i@˜Ém ZÁvÃp=\‡žmeyø;õì'1ëývÐJÈf²·Aljçà(Á>°“QÂú0wáb™€4ⲉ1„X^ÌŠ›e€`sWäfh…Šò.O4,a©¢„AÒ€ÐËÔ6"V¨~WW„¼ZoR%W»`!0]+ŽÎ&Ñ
-¦,bà‘꣸§ C]_ÖÈ]x ìdn´.Ø9T=F ˆõÑ+Í¢¤AÃmZì›pÓ$^ f Å^ÿ2ÅRÀo°oõúHôúã—±,ç•Å£iBªà”L ؼ!²Õ#Šÿ“Fü.áÜ´‚'Ø¡L:P°ºr½‘Àžòíó‹à°“÷¼¿=2~bMçÅÓ6lfâÔÈ‹±°Ó
-DÅOX®ÅV~yÚÃIRÁÚª Zî’‹ûCY%’LæSYh‹$®¥ütÏ~X®n×»¼F`1P!-oP©‚E¯VÈÄä`Í:¤±âIý¥†E´Ð2Ö»÷ûÃÖl•X)ùNIUšÖ Âœd[@ÞNeÎàJlCÊÂ%
-žÄƒe€ÌÚ
-¢\¹ÿáÌù½þ1'µ9wßð¸žb9¸à|áº1›ƒÃh.û×hr,dáiÆ_+ÄåêvØæ•/É`ÈC DË};–”±"‘ô…¤Ð Tüƒ'¼6aJ8ޮ˩ ‰šË¶Ê¢´‚‡•ãUÉ”9‘1ÍfM*%nIVåSËHXÏxó"'WXF×H4áv¤
-ždõ,Í1,“iRæ Q®‡ \¯Õ¹;Ä$™`ÿß°s\|´œìG' ä¸]å¶eÏKŠèrðÖk¹%`kÿ~}sÏ+,ñÖ$¨“Å£¥
-–d·l¤ç•§eà€rê¾Í‡õé6uKÄßÄ( LÛ fÒ1ع>êÊÚ¡~b"6aE!y¿ix ÄʳZG˜ _QÁnYF¿À³g¼ºv&Œ“ä?1Þ¹% ìAÈ0o$8øì±R=Æ‚æÁ™ß%¬<‚a™sÒ¡ÐÍ­´yÃì:A jwú”b9ÌY1$•1QÛ·'ŒŠÏî‘ÆžòзÆEɤȦ‡Õz¥/ ªšq'öeBŒ2CƒfÙ‚‘R]Rš†tXýÛ¦ðüHéñeKÐ
-þëü‡àw¥!$D ÁòÔ}¡Dö˜ír·¼¶¸ªŠlfÿß™ ê¶úlG¶XFäUN|(Ù"‰h£#V93Û‘ ÐŒe½h¡#kÆå°ÂlqÊ·cX‰n‡#†“*øÆpW’
-Œ¹,Ý,C+xÆQöõ4÷Ÿ}ÕOy`µsqXñúc^…ª¹ë •ã )Nɨk€C>Id8ÉÙh¹mÁñnX­—›2H
-–ÿ¥$°Å,O§ÃúÝý‰I**MsÛ‚ÏÈó?id'ó¹%hK`‡»‘þ±R¿®ãgrÕ$u|x ŽÇR¥šô˵É8ÐÏ'[&h¹g|÷ër{‡+£ê,ÌÀ˜TÁs¾þòE†DHmAzV7­à!ßa³Îw_H)Ž„:Ž£<‡=€TâCÒ‘¶-ZÁ3òŒ5âC²µ…z{‘˜}¬-mß™ø?‹I!µáÜ÷†­·Kª$WáêI{5­Ø‹Zî!û­Lba´à6ÎüsÌbõ¼öÀ¿ô½šF6 m+1Q/<ǵ g¯[œœÛ)ï¡üubÁ8S++ä¯kÖ7i„F3ئ1Zì[ñÓN®†å\MÈQ§V4øfè©ðý´Zî)ßïoö»¬I'c,LšLI`y‡kPC¹qÁJŒ’ÉØ·&U𜷸^³ÿÛÃJpZYy›o•*xÎWɸ,’+ç¶ÑŠ¥<€V¬YK y6Jªà?ýøòï¹$“ô€YˆVðû#T°|ÄRnJªà)°ë;˜VœFüäÀÓ›«¼’±/+’ðÇ å·[y5Þ €ÇŸ‚°âD¿2(;Àù»ãé°\…µq¸õûÖÆÄý“36#eöj$d·Û±¿U ãÐ3¬Ì³Û-¢u*Æ×Ý6.$7Ôrî?>ëLp“ÁMJxs"‡Ëðí
-šlŠ
-ÛP¹f?a„ Œ
-!×—R(! ú
-®†¢÷ e*-óŒ—Ï3€$èþpÂlZÁ#Î7›}ô$ñK\ÃüäÖÇç°ÿQ237&!õžVs៬9èÐ78‚"þÑñŒG¨o†ãý&Oq$B LÀ—¡å¾á\zµò .ÔØÖ¨ ¶yÛŠQ›y5éAeJJrÉ¢áEþ
-2|Õ,å® D Ì C6œ ©ãûõv}ŠwÙÂýhoYgümO³t8ÖÕ’)ÓMx ëL*Û¸Sø$—×jឬÓ# Ư6H6Ç‹±¸sþ5 bµÛ,ååÔfïî„c•ð·Z…ÏlpØaÝCG6
+x•W]oÛ6}ϯ¸Àê‘9‰>CÒ4[€®íj}Xö@Ë´ÅV"]’ŠëýúKR²¢&æ
+çv+zEáycM³…É™l"˜m¥
+áŸ1y°XÍN®ŒZª…nDUí‰v¥ÔòÑ¥ÐéH WµXÉc2¶‹î;é Ž tAïïæØã<ŽáwËÇÙ_ÖÞAh|ÂUDÜœ˜öÊþ1Bšà
+ܼ6v`וÂ*½o8¨46ÔÂ+£ÇÄOn‹µlLN§\óûÉt–V[ òb6{1±@Nç¢^
-Ç+ ŠdOÀí“4 Þ¦–ßtau,ôêW—“¤.
-q\9&dy,õò‹Í»”D •„
-N/ƒå3NÞÖùg&9†¯›/ …¿sgÒAÂÜ_“Õ(%#‹+å„¥ s‚«Wúç‹É Y*|1KX»Ð“5^T ARæ ðw‰HÖº0 †!Ód 6tò¾!ë1iUzÊ–ú1¾â¤!úá±Ôüª¼µwjÚv¹Ü‰_ !½{@y¿«(ðñ}øÕ #@/OW Kž¥(wà§;‹=æÕå³<ZI„­`¸Ée‘é o—‡|QšD `ÂÆO0QP\÷‚ñ/Ÿ¤O* Æov0"B}#ÊÅ’@Xd}$zýˆí@*<b6±ý©ÅÁv ‘Â/Q#´Ø¦É¤€1Úv¥{yù)-’ˆ^ò¥l-®ôùã‹ò™¤–¬<
-Èñs@®íhå&°dK¸Pb>=­Ü„•‡6¨„˜­9Éðw *Èôºœ,dÜ\õs™4X°RéÏË W©/ ɽ±8–úÇ¡@„Ac‚¤ÜªÏ_îÊe梀¿a @ß‚½4!õ.©d#?§gZÐáž»¬Ç{º<[D¢ÚxyC|L»
-™0ý çðWøIfœ1…ŸdþSƒ×<°·@‡ÈïÓËó¾=áêÇ?dOù|¿º—ËÙù0GÞUíGš…Û–O×뵪ÿíÉ
-endstream
+À0vuÀ!¼ç,¬œ‰Ð!Ë£­U@ȉ«—Pq½51êaø8ñ¬Îèº87´Tž¼UÅ×ý1ʉl3æµüîñT<z øç‚Ÿpû"9WzË|e6F'·ß{ÏøýDçõú
+‡îÓ†¶Ö€ãê–ÝÈ‹ÞK}÷aN±4aC œgAB÷šQÐlë  ¨ º
+M£Õ·r‚îÃs+C. ¹­FYU »§›ˆ¯7F{kªJÚPÑ0'œBàsà5NLˆ* '·¯(߬1`œMч ?_Œó1ýnvÐQºÃ¡$¾mÙ“^3 ÿú>è÷ Ï£Oé ” ÅGG ‘½““Ú)¯Ù;ߣgVïU:±1rÖ vµÇ1o!Ëû€ö®k‘Äft?Rº¨š«Uª(x¼qžµœqhªv0¸É€
+Þ¤^èb2èÏ겆!!F¡Aæ †˜Ï(›¡‘z…Ö"³†ô²u-YÇQè6Ö–#¯"È:bVÑtƒè+fϲԩ¨üÖ@"+hº;fZ¯9ø48 vtâtáÝ:ˆt§xTàFXJœÞ ðl7ÖœébDýŸ™Ž‚›®¯*f«¨‹VÕ-ëÆý(¿ùi£D\íÆ
+‘Áî aljp½såS—ÇVôãëÖXß3­±Ž `Ò’Õº•Ê4:">Ä@Øqû´ ‹Iqà
+=éwðaÖ4èAÓÈ5,N˜Ùmû­Ä¤Ò£Ý'Éwð*‡
+Eü¡`I
endobj
890 0 obj
-5146
+1615
endobj
-891 0 obj<</Type/Page/Parent 635 0 R/Contents 892 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 470 0 R>>endobj
+891 0 obj<</Type/Page/Parent 689 0 R/Contents 892 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 271 0 R>>endobj
892 0 obj<</Length 893 0 R/Filter/FlateDecode>>stream
-xÅ–MsÓ0†ïþ{,}Xþ8¦@LxÊ9±Ý’Nƒã~>»¶ì¬e†Ói“™Ä²´¤}wWú(øUk0äUp‹u
-ZBvʦBA‡ …”ø6¿Ê¶»§ê{XÕ‡¶<´Ç7Ùcð> h@7
-=}ý@o
-Sü­ T"u'ØÐ<Þøæk JÑÌhgq26ëêûöG[6à&c¸
-l"Â)»ïöʈÁœYT ¤¥mv ukëû=û·ß²ÛÀah—„à1–y^#„™!$…ö æ!6Ûj· ̦BÙba=B?ÀcëS“—„›!Ä(M!n€Éëâ‚`FˆgŠ8ª‡8ïÇp$ÄÒ×Ô ð«» …„VÂ`ÔdÅ•x¶O"]°™ˆÄ5V$È‘Ä¿¾á‚e±]ØbE88™D.†Y£àª ¼ìX®ßgÜÚ¦.Ny»¯´(«1Ržy»ÿí7ÏOZcø ~ênoäm°“ç5zG{Þq€$¤ŠÁ½sf !’™ ¹7!©8Áõû‹ð²’ÙQjKªœ2€}L[ëàF”Ø–2j‚pTq¤äuó@*‡sàåUöô”)®õì*\×`z*JÓ™ž,Þ/Vè©IRΈ°=cxr0+µ;“8ÃagV\¸2°¼c`L=vÆÀØúUîH ãÚ_^Œ>+§’Ø4Âôw’ô‹$6±s& K2’d@ô¾›0P’9ão’ŒŒÎwÆ€õ—2“ddƒ’Lë3òswã ÂñjzŒµr†î:61ø‹‡—Nê›æÉÍ¡(S\iûú»·óï‡DÑ‚/÷¶î©»·%î
+xXMsã6½ûWtå¹J¤$J²ì­ÊÁWM2Þ±vgº@$$!&  -ëßç5@ˆ”ìÙÌnMmŠ
+äØÈ L!ᜉÎs½gg,vÚ˜Oü¸¼`49HÑ„ÿúòËÅd<Ž§4O®ãk*(A–oÚ§œž“
+ëúþªÇ\”²>æí@O¾2翪ÜÆ›m**§ºëûÿ3›Æ3š]ß
+z/,ß3@w©•("|­È^èh òt:‚eSò„²ô‚µíU½#ìqª±×³¹0ˆ¥lŠ5Ä7+:K«Ó »õN7±ÚÕ¥ct°RGé¬]´ÏO$yN¹ÖÏMe©hð­]IÃzGZùgÕ©X "ª_Ô ²$^  áUAþJL·z¯9%}¿ÛÓq*d¬#›\oA…«.™G ©dýœÃžµÌ’
+FV¹Jy¼‹N»»Æs3ƒÕ1Nqäõ"âªxBoõõ^be.7öþ¾!_‘[Üð ¦ngŒmcœr7öP¦«ÁduyÞ$܉þ³ãbkwß\º7¬ÊR SóŠ«2b¼çÓ»™~3Î2*q ¿6Ê]}7È[áîwh¶>yåƒt<|oG„Ž1$ ì i2³8?s½§­D]ãR×pû \ð
+ÙM½­É×Jµr‚©mȀ˰Tü"!ç¸2îÛò€íUw5øòpjx‘ÿ%O®0I‡É[î'hÁ&¯™Š+” Ã)UîÞ$üý ˆeZ)¤(k…[©¿vq»žH;ÇE±v"¶«Ø€ö¸Kf8ÇÕ' ª58+®ÛLJVžÂ%¨?8›B²:Úõvý=Øñ®….A]î†×¶,pý­(²5j¸oXc5¨Œ|Q
+߸9œ e úêå/äPžø«¦U¦y÷dû}óßpW4µf]Aºâ91üà¬NX«SZd’~ºnó„f™Î=õ~ï·Bô¿|4⽄_-8f(Ë^ü«ãŒûendstream
endobj
893 0 obj
-699
-endobj
-894 0 obj<</Count 15/First 895 0 R/Last 1035 0 R>>endobj
-895 0 obj<</Parent 894 0 R/Title(Table of Contents)/Dest[882 0 R/XYZ null 756 null]/Next 896 0 R>>endobj
-896 0 obj<</Parent 894 0 R/Count -19/First 897 0 R/Last 915 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[639 0 R/XYZ null 750 null]/Prev 895 0 R/Next 916 0 R>>endobj
-897 0 obj<</Parent 896 0 R/Title(1.1. Step 0: Read the man pages)/Dest[639 0 R/XYZ null 726 null]/Next 898 0 R>>endobj
-898 0 obj<</Parent 896 0 R/Title(1.2. Step 1: Building the Binaries)/Dest[639 0 R/XYZ null 589 null]/Prev 897 0 R/Next 899 0 R>>endobj
-899 0 obj<</Parent 896 0 R/Title(1.3. Step 2: The all important step)/Dest[639 0 R/XYZ null 174 null]/Prev 898 0 R/Next 900 0 R>>endobj
-900 0 obj<</Parent 896 0 R/Title(1.4. Step 3: Create the smb configuration file.)/Dest[642 0 R/XYZ null 735 null]/Prev 899 0 R/Next 901 0 R>>endobj
-901 0 obj<</Parent 896 0 R/Title(1.5. Step 4: Test your config file with testparm)/Dest[642 0 R/XYZ null 375 null]/Prev 900 0 R/Next 902 0 R>>endobj
-902 0 obj<</Parent 896 0 R/Title(1.6. Step 5: Starting the smbd and nmbd)/Dest[642 0 R/XYZ null 264 null]/Prev 901 0 R/Next 903 0 R>>endobj
-903 0 obj<</Parent 896 0 R/Title(1.6.1. Step 5a: Starting from inetd.conf)/Dest[645 0 R/XYZ null 750 null]/Prev 902 0 R/Next 904 0 R>>endobj
-904 0 obj<</Parent 896 0 R/Title(1.6.2. Step 5b. Alternative: starting it as a daemon)/Dest[645 0 R/XYZ null 262 null]/Prev 903 0 R/Next 905 0 R>>endobj
-905 0 obj<</Parent 896 0 R/Title(1.7. Step 6: Try listing the shares available on your server)/Dest[648 0 R/XYZ null 682 null]/Prev 904 0 R/Next 906 0 R>>endobj
-906 0 obj<</Parent 896 0 R/Title(1.8. Step 7: Try connecting with the unix client)/Dest[648 0 R/XYZ null 505 null]/Prev 905 0 R/Next 907 0 R>>endobj
-907 0 obj<</Parent 896 0 R/Title(1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[648 0 R/XYZ null 328 null]/Prev 906 0 R/Next 908 0 R>>endobj
-908 0 obj<</Parent 896 0 R/Title(1.10. What If Things Don't Work?)/Dest[651 0 R/XYZ null 750 null]/Prev 907 0 R/Next 909 0 R>>endobj
-909 0 obj<</Parent 896 0 R/Title(1.10.1. Diagnosing Problems)/Dest[651 0 R/XYZ null 573 null]/Prev 908 0 R/Next 910 0 R>>endobj
-910 0 obj<</Parent 896 0 R/Title(1.10.2. Scope IDs)/Dest[651 0 R/XYZ null 501 null]/Prev 909 0 R/Next 911 0 R>>endobj
-911 0 obj<</Parent 896 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[651 0 R/XYZ null 390 null]/Prev 910 0 R/Next 912 0 R>>endobj
-912 0 obj<</Parent 896 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[654 0 R/XYZ null 735 null]/Prev 911 0 R/Next 913 0 R>>endobj
-913 0 obj<</Parent 896 0 R/Title(1.10.5. Locking)/Dest[654 0 R/XYZ null 611 null]/Prev 912 0 R/Next 914 0 R>>endobj
-914 0 obj<</Parent 896 0 R/Title(1.10.6. Mapping Usernames)/Dest[657 0 R/XYZ null 750 null]/Prev 913 0 R/Next 915 0 R>>endobj
-915 0 obj<</Parent 896 0 R/Title(1.10.7. Other Character Sets)/Dest[657 0 R/XYZ null 679 null]/Prev 914 0 R>>endobj
-916 0 obj<</Parent 894 0 R/Count -18/First 917 0 R/Last 934 0 R/Title(Chapter 2. Integrating MS Windows networks with Samba)/Dest[660 0 R/XYZ null 750 null]/Prev 896 0 R/Next 935 0 R>>endobj
-917 0 obj<</Parent 916 0 R/Title(2.1. Agenda)/Dest[660 0 R/XYZ null 702 null]/Next 918 0 R>>endobj
-918 0 obj<</Parent 916 0 R/Title(2.2. Name Resolution in a pure Unix/Linux world)/Dest[660 0 R/XYZ null 459 null]/Prev 917 0 R/Next 919 0 R>>endobj
-919 0 obj<</Parent 916 0 R/Title(2.2.1. /etc/hosts)/Dest[660 0 R/XYZ null 321 null]/Prev 918 0 R/Next 920 0 R>>endobj
-920 0 obj<</Parent 916 0 R/Title(2.2.2. /etc/resolv.conf)/Dest[663 0 R/XYZ null 431 null]/Prev 919 0 R/Next 921 0 R>>endobj
-921 0 obj<</Parent 916 0 R/Title(2.2.3. /etc/host.conf)/Dest[663 0 R/XYZ null 281 null]/Prev 920 0 R/Next 922 0 R>>endobj
-922 0 obj<</Parent 916 0 R/Title(2.2.4. /etc/nsswitch.conf)/Dest[666 0 R/XYZ null 750 null]/Prev 921 0 R/Next 923 0 R>>endobj
-923 0 obj<</Parent 916 0 R/Title(2.3. Name resolution as used within MS Windows networking)/Dest[666 0 R/XYZ null 264 null]/Prev 922 0 R/Next 924 0 R>>endobj
-924 0 obj<</Parent 916 0 R/Title(2.3.1. The NetBIOS Name Cache)/Dest[669 0 R/XYZ null 206 null]/Prev 923 0 R/Next 925 0 R>>endobj
-925 0 obj<</Parent 916 0 R/Title(2.3.2. The LMHOSTS file)/Dest[672 0 R/XYZ null 656 null]/Prev 924 0 R/Next 926 0 R>>endobj
-926 0 obj<</Parent 916 0 R/Title(2.3.3. HOSTS file)/Dest[675 0 R/XYZ null 367 null]/Prev 925 0 R/Next 927 0 R>>endobj
-927 0 obj<</Parent 916 0 R/Title(2.3.4. DNS Lookup)/Dest[675 0 R/XYZ null 256 null]/Prev 926 0 R/Next 928 0 R>>endobj
-928 0 obj<</Parent 916 0 R/Title(2.3.5. WINS Lookup)/Dest[678 0 R/XYZ null 750 null]/Prev 927 0 R/Next 929 0 R>>endobj
-929 0 obj<</Parent 916 0 R/Title(2.4. How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[678 0 R/XYZ null 525 null]/Prev 928 0 R/Next 930 0 R>>endobj
-930 0 obj<</Parent 916 0 R/Title(2.5. MS Windows security options and how to configure Samba for seemless integration)/Dest[681 0 R/XYZ null 629 null]/Prev 929 0 R/Next 931 0 R>>endobj
-931 0 obj<</Parent 916 0 R/Title(2.5.1. Use MS Windows NT as an authentication server)/Dest[684 0 R/XYZ null 577 null]/Prev 930 0 R/Next 932 0 R>>endobj
-932 0 obj<</Parent 916 0 R/Title(2.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[684 0 R/XYZ null 300 null]/Prev 931 0 R/Next 933 0 R>>endobj
-933 0 obj<</Parent 916 0 R/Title(2.5.3. Configure Samba as an authentication server)/Dest[687 0 R/XYZ null 590 null]/Prev 932 0 R/Next 934 0 R>>endobj
-934 0 obj<</Parent 916 0 R/Title(2.6. Conclusions)/Dest[690 0 R/XYZ null 635 null]/Prev 933 0 R>>endobj
-935 0 obj<</Parent 894 0 R/Count -3/First 936 0 R/Last 938 0 R/Title(Chapter 3. Configuring PAM for distributed but centrally managed authentication)/Dest[693 0 R/XYZ null 750 null]/Prev 916 0 R/Next 939 0 R>>endobj
-936 0 obj<</Parent 935 0 R/Title(3.1. Samba and PAM)/Dest[693 0 R/XYZ null 702 null]/Next 937 0 R>>endobj
-937 0 obj<</Parent 935 0 R/Title(3.2. Distributed Authentication)/Dest[696 0 R/XYZ null 175 null]/Prev 936 0 R/Next 938 0 R>>endobj
-938 0 obj<</Parent 935 0 R/Title(3.3. PAM Configuration in smb.conf)/Dest[699 0 R/XYZ null 722 null]/Prev 937 0 R>>endobj
-939 0 obj<</Parent 894 0 R/Count -2/First 940 0 R/Last 941 0 R/Title(Chapter 4. Hosting a Microsoft Distributed File System tree on Samba)/Dest[702 0 R/XYZ null 750 null]/Prev 935 0 R/Next 942 0 R>>endobj
-940 0 obj<</Parent 939 0 R/Title(4.1. Instructions)/Dest[702 0 R/XYZ null 702 null]/Next 941 0 R>>endobj
-941 0 obj<</Parent 939 0 R/Title(4.1.1. Notes)/Dest[705 0 R/XYZ null 669 null]/Prev 940 0 R>>endobj
-942 0 obj<</Parent 894 0 R/Count -9/First 943 0 R/Last 951 0 R/Title(Chapter 5. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[708 0 R/XYZ null 750 null]/Prev 939 0 R/Next 952 0 R>>endobj
-943 0 obj<</Parent 942 0 R/Title(5.1. Viewing and changing UNIX permissions using the NT security dialogs)/Dest[708 0 R/XYZ null 702 null]/Next 944 0 R>>endobj
-944 0 obj<</Parent 942 0 R/Title(5.2. How to view file security on a Samba share)/Dest[708 0 R/XYZ null 521 null]/Prev 943 0 R/Next 945 0 R>>endobj
-945 0 obj<</Parent 942 0 R/Title(5.3. Viewing file ownership)/Dest[708 0 R/XYZ null 344 null]/Prev 944 0 R/Next 946 0 R>>endobj
-946 0 obj<</Parent 942 0 R/Title(5.4. Viewing file or directory permissions)/Dest[711 0 R/XYZ null 682 null]/Prev 945 0 R/Next 947 0 R>>endobj
-947 0 obj<</Parent 942 0 R/Title(5.4.1. File Permissions)/Dest[711 0 R/XYZ null 439 null]/Prev 946 0 R/Next 948 0 R>>endobj
-948 0 obj<</Parent 942 0 R/Title(5.4.2. Directory Permissions)/Dest[711 0 R/XYZ null 183 null]/Prev 947 0 R/Next 949 0 R>>endobj
-949 0 obj<</Parent 942 0 R/Title(5.5. Modifying file or directory permissions)/Dest[714 0 R/XYZ null 669 null]/Prev 948 0 R/Next 950 0 R>>endobj
-950 0 obj<</Parent 942 0 R/Title(5.6. Interaction with the standard Samba create mask parameters)/Dest[714 0 R/XYZ null 228 null]/Prev 949 0 R/Next 951 0 R>>endobj
-951 0 obj<</Parent 942 0 R/Title(5.7. Interaction with the standard Samba file attribute mapping)/Dest[720 0 R/XYZ null 590 null]/Prev 950 0 R>>endobj
-952 0 obj<</Parent 894 0 R/Count -13/First 953 0 R/Last 965 0 R/Title(Chapter 6. Printing Support in Samba 2.2.x)/Dest[723 0 R/XYZ null 750 null]/Prev 942 0 R/Next 966 0 R>>endobj
-953 0 obj<</Parent 952 0 R/Title(6.1. Introduction)/Dest[723 0 R/XYZ null 726 null]/Next 954 0 R>>endobj
-954 0 obj<</Parent 952 0 R/Title(6.2. Configuration)/Dest[723 0 R/XYZ null 298 null]/Prev 953 0 R/Next 955 0 R>>endobj
-955 0 obj<</Parent 952 0 R/Title(6.2.1. Creating [print$])/Dest[726 0 R/XYZ null 689 null]/Prev 954 0 R/Next 956 0 R>>endobj
-956 0 obj<</Parent 952 0 R/Title(6.2.2. Setting Drivers for Existing Printers)/Dest[729 0 R/XYZ null 446 null]/Prev 955 0 R/Next 957 0 R>>endobj
-957 0 obj<</Parent 952 0 R/Title(6.2.3. Support a large number of printers)/Dest[732 0 R/XYZ null 682 null]/Prev 956 0 R/Next 958 0 R>>endobj
-958 0 obj<</Parent 952 0 R/Title(6.2.4. Adding New Printers via the Windows NT APW)/Dest[732 0 R/XYZ null 298 null]/Prev 957 0 R/Next 959 0 R>>endobj
-959 0 obj<</Parent 952 0 R/Title(6.2.5. Samba and Printer Ports)/Dest[735 0 R/XYZ null 682 null]/Prev 958 0 R/Next 960 0 R>>endobj
-960 0 obj<</Parent 952 0 R/Title(6.3. The Imprints Toolset)/Dest[735 0 R/XYZ null 492 null]/Prev 959 0 R/Next 961 0 R>>endobj
-961 0 obj<</Parent 952 0 R/Title(6.3.1. What is Imprints?)/Dest[735 0 R/XYZ null 381 null]/Prev 960 0 R/Next 962 0 R>>endobj
-962 0 obj<</Parent 952 0 R/Title(6.3.2. Creating Printer Driver Packages)/Dest[735 0 R/XYZ null 243 null]/Prev 961 0 R/Next 963 0 R>>endobj
-963 0 obj<</Parent 952 0 R/Title(6.3.3. The Imprints server)/Dest[735 0 R/XYZ null 145 null]/Prev 962 0 R/Next 964 0 R>>endobj
-964 0 obj<</Parent 952 0 R/Title(6.3.4. The Installation Client)/Dest[738 0 R/XYZ null 709 null]/Prev 963 0 R/Next 965 0 R>>endobj
-965 0 obj<</Parent 952 0 R/Title(6.4. Migration to from Samba 2.0.x to 2.2.x)/Dest[741 0 R/XYZ null 750 null]/Prev 964 0 R>>endobj
-966 0 obj<</Parent 894 0 R/Count -3/First 967 0 R/Last 969 0 R/Title(Chapter 7. security = domain in Samba 2.x)/Dest[744 0 R/XYZ null 750 null]/Prev 952 0 R/Next 970 0 R>>endobj
-967 0 obj<</Parent 966 0 R/Title(7.1. Joining an NT Domain with Samba 2.2)/Dest[744 0 R/XYZ null 726 null]/Next 968 0 R>>endobj
-968 0 obj<</Parent 966 0 R/Title(7.2. Samba and Windows 2000 Domains)/Dest[747 0 R/XYZ null 379 null]/Prev 967 0 R/Next 969 0 R>>endobj
-969 0 obj<</Parent 966 0 R/Title(7.3. Why is this better than security = server?)/Dest[747 0 R/XYZ null 162 null]/Prev 968 0 R>>endobj
-970 0 obj<</Parent 894 0 R/Count -14/First 971 0 R/Last 984 0 R/Title(Chapter 8. How to Configure Samba 2.2 as a Primary Domain Controller)/Dest[753 0 R/XYZ null 750 null]/Prev 966 0 R/Next 985 0 R>>endobj
-971 0 obj<</Parent 970 0 R/Title(8.1. Prerequisite Reading)/Dest[753 0 R/XYZ null 702 null]/Next 972 0 R>>endobj
-972 0 obj<</Parent 970 0 R/Title(8.2. Background)/Dest[753 0 R/XYZ null 604 null]/Prev 971 0 R/Next 973 0 R>>endobj
-973 0 obj<</Parent 970 0 R/Title(8.3. Configuring the Samba Domain Controller)/Dest[756 0 R/XYZ null 722 null]/Prev 972 0 R/Next 974 0 R>>endobj
-974 0 obj<</Parent 970 0 R/Title(8.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[759 0 R/XYZ null 603 null]/Prev 973 0 R/Next 975 0 R>>endobj
-975 0 obj<</Parent 970 0 R/Title(8.4.1. Manual Creation of Machine Trust Accounts)/Dest[759 0 R/XYZ null 228 null]/Prev 974 0 R/Next 976 0 R>>endobj
-976 0 obj<</Parent 970 0 R/Title(8.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[762 0 R/XYZ null 355 null]/Prev 975 0 R/Next 977 0 R>>endobj
-977 0 obj<</Parent 970 0 R/Title(8.4.3. Joining the Client to the Domain)/Dest[765 0 R/XYZ null 750 null]/Prev 976 0 R/Next 978 0 R>>endobj
-978 0 obj<</Parent 970 0 R/Title(8.5. Common Problems and Errors)/Dest[765 0 R/XYZ null 388 null]/Prev 977 0 R/Next 979 0 R>>endobj
-979 0 obj<</Parent 970 0 R/Title(8.6. System Policies and Profiles)/Dest[771 0 R/XYZ null 735 null]/Prev 978 0 R/Next 980 0 R>>endobj
-980 0 obj<</Parent 970 0 R/Title(8.7. What other help can I get?)/Dest[774 0 R/XYZ null 682 null]/Prev 979 0 R/Next 981 0 R>>endobj
-981 0 obj<</Parent 970 0 R/Title(8.8. Domain Control for Windows 9x/ME)/Dest[780 0 R/XYZ null 299 null]/Prev 980 0 R/Next 982 0 R>>endobj
-982 0 obj<</Parent 970 0 R/Title(8.8.1. Configuration Instructions: Network Logons)/Dest[783 0 R/XYZ null 273 null]/Prev 981 0 R/Next 983 0 R>>endobj
-983 0 obj<</Parent 970 0 R/Title(8.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[786 0 R/XYZ null 478 null]/Prev 982 0 R/Next 984 0 R>>endobj
-984 0 obj<</Parent 970 0 R/Title(8.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[798 0 R/XYZ null 270 null]/Prev 983 0 R>>endobj
-985 0 obj<</Parent 894 0 R/Count -8/First 986 0 R/Last 993 0 R/Title(Chapter 9. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[807 0 R/XYZ null 750 null]/Prev 970 0 R/Next 994 0 R>>endobj
-986 0 obj<</Parent 985 0 R/Title(9.1. Prerequisite Reading)/Dest[807 0 R/XYZ null 702 null]/Next 987 0 R>>endobj
-987 0 obj<</Parent 985 0 R/Title(9.2. Background)/Dest[807 0 R/XYZ null 617 null]/Prev 986 0 R/Next 988 0 R>>endobj
-988 0 obj<</Parent 985 0 R/Title(9.3. What qualifies a Domain Controller on the network?)/Dest[807 0 R/XYZ null 235 null]/Prev 987 0 R/Next 989 0 R>>endobj
-989 0 obj<</Parent 985 0 R/Title(9.3.1. How does a Workstation find its domain controller?)/Dest[810 0 R/XYZ null 750 null]/Prev 988 0 R/Next 990 0 R>>endobj
-990 0 obj<</Parent 985 0 R/Title(9.3.2. When is the PDC needed?)/Dest[810 0 R/XYZ null 626 null]/Prev 989 0 R/Next 991 0 R>>endobj
-991 0 obj<</Parent 985 0 R/Title(9.4. Can Samba be a Backup Domain Controller?)/Dest[810 0 R/XYZ null 528 null]/Prev 990 0 R/Next 992 0 R>>endobj
-992 0 obj<</Parent 985 0 R/Title(9.5. How do I set up a Samba BDC?)/Dest[810 0 R/XYZ null 377 null]/Prev 991 0 R/Next 993 0 R>>endobj
-993 0 obj<</Parent 985 0 R/Title(9.5.1. How do I replicate the smbpasswd file?)/Dest[813 0 R/XYZ null 646 null]/Prev 992 0 R>>endobj
-994 0 obj<</Parent 894 0 R/Count -12/First 995 0 R/Last 1006 0 R/Title(Chapter 10. Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[816 0 R/XYZ null 750 null]/Prev 985 0 R/Next 1007 0 R>>endobj
-995 0 obj<</Parent 994 0 R/Title(10.1. Purpose)/Dest[816 0 R/XYZ null 702 null]/Next 996 0 R>>endobj
-996 0 obj<</Parent 994 0 R/Title(10.2. Introduction)/Dest[816 0 R/XYZ null 433 null]/Prev 995 0 R/Next 997 0 R>>endobj
-997 0 obj<</Parent 994 0 R/Title(10.3. Supported LDAP Servers)/Dest[819 0 R/XYZ null 577 null]/Prev 996 0 R/Next 998 0 R>>endobj
-998 0 obj<</Parent 994 0 R/Title(10.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[819 0 R/XYZ null 465 null]/Prev 997 0 R/Next 999 0 R>>endobj
-999 0 obj<</Parent 994 0 R/Title(10.5. Configuring Samba with LDAP)/Dest[822 0 R/XYZ null 735 null]/Prev 998 0 R/Next 1000 0 R>>endobj
-1000 0 obj<</Parent 994 0 R/Title(10.5.1. OpenLDAP configuration)/Dest[822 0 R/XYZ null 705 null]/Prev 999 0 R/Next 1001 0 R>>endobj
-1001 0 obj<</Parent 994 0 R/Title(10.5.2. Configuring Samba)/Dest[825 0 R/XYZ null 750 null]/Prev 1000 0 R/Next 1002 0 R>>endobj
-1002 0 obj<</Parent 994 0 R/Title(10.6. Accounts and Groups management)/Dest[825 0 R/XYZ null 176 null]/Prev 1001 0 R/Next 1003 0 R>>endobj
-1003 0 obj<</Parent 994 0 R/Title(10.7. Security and sambaAccount)/Dest[828 0 R/XYZ null 629 null]/Prev 1002 0 R/Next 1004 0 R>>endobj
-1004 0 obj<</Parent 994 0 R/Title(10.8. LDAP specials attributes for sambaAccounts)/Dest[828 0 R/XYZ null 236 null]/Prev 1003 0 R/Next 1005 0 R>>endobj
-1005 0 obj<</Parent 994 0 R/Title(10.9. Example LDIF Entries for a sambaAccount)/Dest[831 0 R/XYZ null 207 null]/Prev 1004 0 R/Next 1006 0 R>>endobj
-1006 0 obj<</Parent 994 0 R/Title(10.10. Comments)/Dest[834 0 R/XYZ null 358 null]/Prev 1005 0 R>>endobj
-1007 0 obj<</Parent 894 0 R/Count -16/First 1008 0 R/Last 1023 0 R/Title(Chapter 11. Unified Logons between Windows NT and UNIX using Winbind)/Dest[837 0 R/XYZ null 750 null]/Prev 994 0 R/Next 1024 0 R>>endobj
-1008 0 obj<</Parent 1007 0 R/Title(11.1. Abstract)/Dest[837 0 R/XYZ null 702 null]/Next 1009 0 R>>endobj
-1009 0 obj<</Parent 1007 0 R/Title(11.2. Introduction)/Dest[837 0 R/XYZ null 565 null]/Prev 1008 0 R/Next 1010 0 R>>endobj
-1010 0 obj<</Parent 1007 0 R/Title(11.3. What Winbind Provides)/Dest[837 0 R/XYZ null 242 null]/Prev 1009 0 R/Next 1011 0 R>>endobj
-1011 0 obj<</Parent 1007 0 R/Title(11.3.1. Target Uses)/Dest[840 0 R/XYZ null 577 null]/Prev 1010 0 R/Next 1012 0 R>>endobj
-1012 0 obj<</Parent 1007 0 R/Title(11.4. How Winbind Works)/Dest[840 0 R/XYZ null 413 null]/Prev 1011 0 R/Next 1013 0 R>>endobj
-1013 0 obj<</Parent 1007 0 R/Title(11.4.1. Microsoft Remote Procedure Calls)/Dest[840 0 R/XYZ null 288 null]/Prev 1012 0 R/Next 1014 0 R>>endobj
-1014 0 obj<</Parent 1007 0 R/Title(11.4.2. Name Service Switch)/Dest[843 0 R/XYZ null 750 null]/Prev 1013 0 R/Next 1015 0 R>>endobj
-1015 0 obj<</Parent 1007 0 R/Title(11.4.3. Pluggable Authentication Modules)/Dest[843 0 R/XYZ null 309 null]/Prev 1014 0 R/Next 1016 0 R>>endobj
-1016 0 obj<</Parent 1007 0 R/Title(11.4.4. User and Group ID Allocation)/Dest[846 0 R/XYZ null 669 null]/Prev 1015 0 R/Next 1017 0 R>>endobj
-1017 0 obj<</Parent 1007 0 R/Title(11.4.5. Result Caching)/Dest[846 0 R/XYZ null 479 null]/Prev 1016 0 R/Next 1018 0 R>>endobj
-1018 0 obj<</Parent 1007 0 R/Title(11.5. Installation and Configuration)/Dest[846 0 R/XYZ null 328 null]/Prev 1017 0 R/Next 1019 0 R>>endobj
-1019 0 obj<</Parent 1007 0 R/Title(11.5.1. Introduction)/Dest[846 0 R/XYZ null 177 null]/Prev 1018 0 R/Next 1020 0 R>>endobj
-1020 0 obj<</Parent 1007 0 R/Title(11.5.2. Requirements)/Dest[849 0 R/XYZ null 537 null]/Prev 1019 0 R/Next 1021 0 R>>endobj
-1021 0 obj<</Parent 1007 0 R/Title(11.5.3. Testing Things Out)/Dest[849 0 R/XYZ null 254 null]/Prev 1020 0 R/Next 1022 0 R>>endobj
-1022 0 obj<</Parent 1007 0 R/Title(11.6. Limitations)/Dest[864 0 R/XYZ null 274 null]/Prev 1021 0 R/Next 1023 0 R>>endobj
-1023 0 obj<</Parent 1007 0 R/Title(11.7. Conclusion)/Dest[867 0 R/XYZ null 722 null]/Prev 1022 0 R>>endobj
-1024 0 obj<</Parent 894 0 R/Count -5/First 1025 0 R/Last 1029 0 R/Title(Chapter 12. OS2 Client HOWTO)/Dest[870 0 R/XYZ null 750 null]/Prev 1007 0 R/Next 1030 0 R>>endobj
-1025 0 obj<</Parent 1024 0 R/Title(12.1. FAQs)/Dest[870 0 R/XYZ null 726 null]/Next 1026 0 R>>endobj
-1026 0 obj<</Parent 1024 0 R/Title(12.1.1. How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[870 0 R/XYZ null 696 null]/Prev 1025 0 R/Next 1027 0 R>>endobj
-1027 0 obj<</Parent 1024 0 R/Title(12.1.2. How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[870 0 R/XYZ null 344 null]/Prev 1026 0 R/Next 1028 0 R>>endobj
-1028 0 obj<</Parent 1024 0 R/Title(12.1.3. Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[873 0 R/XYZ null 750 null]/Prev 1027 0 R/Next 1029 0 R>>endobj
-1029 0 obj<</Parent 1024 0 R/Title(12.1.4. How do I get printer driver download working for OS/2 clients?)/Dest[873 0 R/XYZ null 635 null]/Prev 1028 0 R>>endobj
-1030 0 obj<</Parent 894 0 R/Count -4/First 1031 0 R/Last 1034 0 R/Title(Chapter 13. HOWTO Access Samba source code via CVS)/Dest[876 0 R/XYZ null 750 null]/Prev 1024 0 R/Next 1035 0 R>>endobj
-1031 0 obj<</Parent 1030 0 R/Title(13.1. Introduction)/Dest[876 0 R/XYZ null 702 null]/Next 1032 0 R>>endobj
-1032 0 obj<</Parent 1030 0 R/Title(13.2. CVS Access to samba.org)/Dest[876 0 R/XYZ null 578 null]/Prev 1031 0 R/Next 1033 0 R>>endobj
-1033 0 obj<</Parent 1030 0 R/Title(13.2.1. Access via CVSweb)/Dest[876 0 R/XYZ null 480 null]/Prev 1032 0 R/Next 1034 0 R>>endobj
-1034 0 obj<</Parent 1030 0 R/Title(13.2.2. Access via cvs)/Dest[876 0 R/XYZ null 355 null]/Prev 1033 0 R>>endobj
-1035 0 obj<</Parent 894 0 R/Title(Index)/Dest[879 0 R/XYZ null 484 null]/Prev 1030 0 R>>endobj
-1036 0 obj<</Type/Catalog/Pages 635 0 R/Names 471 0 R/PageLayout/SinglePage/Outlines 894 0 R/OpenAction[636 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>5<</S/D>>]>>>>endobj
+2089
+endobj
+894 0 obj<</Type/Page/Parent 689 0 R/Contents 895 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 280 0 R>>endobj
+895 0 obj<</Length 896 0 R/Filter/FlateDecode>>stream
+xX]sÛ8|÷¯˜J¥ÎJUD‰”,)ûtJg}g{}‘RÙ­ò DB"b’à eýûëHê#ÙÜÞÅe[4ñ1˜éîiäß! ñÒ4¢Ñ„âüâýêâãêbÌftøQmñ0¤(šgS|žN‚U’6</±L÷Ã×c
+CZm°úd6¥UâÞi÷v*ËÈXÙ¢H(Óú©.©6²"Ǻ.¬!UàÝ.攨Jƽˆn
+ì)2e÷oɦ
+ã =ËjOR˜=YMu‘ÈÊX¬Ë£7´×õ›Õ·‹!õÃb_%=mcoteÅ:“´S6ÅæªØòŽ&_—˜]B•É·dT^f{lZf"–ôª{ÿÊO|uâ+8ŽgSy¶o¢ã:—…Vé"h^F“`ÌA­RÉÙàoÚÈ•Zqp c+i ‰µ®-íRayiâéƒë¨Iq¯ßçSô³D”Fäþe›ÿ%Z*´¥²ÒÏ*‘È öóÉ5uY"g±Vr#«J&
+PÔoO5§\ŠÂÞ ¶Rò™³|\h¬ŽBä.'´©tN\„¯ªHôÎP4¬æ±UÏ’-
+8AɃ&q“ƒþx¼’Þc4™6/Ûð»
+XGʤÈézßÀÍAç~¹t,x˜ßQ®“:“õ¹ýôpËÀ6ÀŠËJ`¢9[¶…L¹ÏŸ.¢0
+Ft5c)§Ñp¼kž2Z:‚â1ÄËcfj] Å´Q굪@„®óÅ--õÆî–=‘Žângð¼—Z[þ2ìv» Ià ƒÓ¡NxèãœìW½“8ÓWR"±c戜mÔ¶®PŒ30º£S)â'±E°ÍZî9ż„‰u)a'
+Á>–¨ñŒix¨0 F-=9Wª¥žáðŽå­±¼1…J‰<YCbÉ܉.M* ‚–Nü,3Dœ¸¢[i,>zõáÓüVÊÂíÅz »q¦ g‰é
+ØÔgiþ&Õu¤y,q`ñNWO^±î¥5±(å¥9â”?ÚÑV´\ü3èŠu¶qR»5A'—yœ‚9d4m„¯, × bîD‘0 ©aÑʈëzË`GæL3ëF§¢r7ê%€Žs
+#q¼iGXh²Ú(€Ã”/¥¬”ë噫͡·4í@SVI{9ôFô¯‘SA@ž\tM¦H¯¿Áäļ{š-Z^Al
+\S\é+UˆVså-ÃñŒÇ±`…Á¾Çøž†“+KÏýüî#]ovIË/(\Ió/¿ßÜÎ?ÿÑž‚û¤Œøßâãò]úZ5Q^þhÜÝ—å
+¹¤Z%ôš*ü||óÃqó?8ç–åì²4øöš
+{ôPî’[aìRZ¦·ºX!ÕôúGKº8ÉÚlü0zRñ“îž°ÚQ|HE±Å„Ç»ÚØî}Ù^gbk~º~¢ lÂþžåõ5;Ä_µû”â×¢bs‚¿Æ•*qxIlSiF®úIà‰ôÓÐä1‹}ÑWÈ4Ü+[DÄ„…T:|ªt]Þ,ð‡DçhÑÈ°Ïñ\}FÆÄ;\ïʨñ éý„ Îè”·cÜ•¾ãÝßÀÙ°é5¿Ý,Ð@XãõŽ-L SÃÁ¥=qc¸WRäN7ÐM§ŒïLnL²fF7,@”²^{ƒÄzϾló©ñ¬kØéç WÉi;£Åò-oÌ]bäS8½‚Øy74ižZõÅ#+áqÇo‚©×¹òûÀü#1„o?iI™q%i}ò²“]©­*šJº… ÈasÃ%á3{ì›÷w(ÄRÆhc_ÅŸØÿßæ¸uß{ƒÆÒ8xqÕ¼Âo²¿dÁÏŒr*@çˆ|Æpl š~à䲜E]A|ADÜ"Öµ»AázÇÆÕÝk`”5²Áe°0…égHÄJn+ÙpŽ‘}‡›QÅPëÃM³±^À««Ì èpy«TxÛ©qm‚é©qe ìvÍÏowÿ€æÃê.žwàBŽ;¯áoÄÇ¢]ª@î)™äS1öX%PpŸùŽßG×ÿ¦½ùôó*Ü–>OF7ãÓ.ä"R·µ‹ýËýÍï.€öžŽry½à+-Ñü´§©Æ*Ï
+'Ó ÄÿÌõzËùÝû9=Tš;-Ž¯ÇjßïO#w«ûoŽ|<£y¹¡“χüëâ?­È
+Êendstream
+endobj
+896 0 obj
+1970
+endobj
+897 0 obj<</Type/Page/Parent 689 0 R/Contents 898 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+898 0 obj<</Length 899 0 R/Filter/FlateDecode>>stream
+xWÛNãH}ç+Jš‚œ8@fÙEšeg!H³R¤UÇî$=cw{ºÛþ~OµÛ1 ÑKIºërêÔ©Ê£˜Æøi6¡³)%ùÑÇÅÑo‹£qtyIíÃnðbL“ ç—3<g—Ñ%YIkÅýé/«Oâ‹It^}[øš nÎ)Ži±†ßéåŒiø|L‹d ÍŽ„¦“Å·£Ñ ̆cƒùã×ÛÏóûª·÷·dVßdâ“L8GÎò”àòJ’óÆÊ”DfôÆ©T’ Â8õ<OSjOÆR!­3úÀ„Òä·’Œé4>‹&m* ƾDDwÆKžÏ!w'Ÿ¤­•ÌRGËŒ6•*]žÐn«’-ÈDA;å·|±J›Cϳ)}¦4Ò@\÷7ד³ñ 1,¶ÊþV/”J§6:¼')‡Z[“#ׇÅýãõâñ~þù ?oÛ
+/à&•Y˜óÂKWÃR{û*í¢6:{Á£é;á¡"•N–Ì©×Æ&À)3|R‡€&Q ø-àjè&S0E»…o›ÂR\
+d–}¨FU*‘\JeÁ…ˆ-uðuõ¤9Æp;n-1‘S¹ÞOª^À Æ®–u™z1‡ö†~»3ˆŽSåŠL¼Ü‰\¾ïç <áƒzSMöw\2QÇGdÍ`jBÃ(am¨k„¶ÐJ‚ÅUóö²ûY¾]qWÆ ÛE5 >| ™
+ËÄŒ£)÷Nvk€YÜÊØ[ù£ÄŽÆ#ê ÊÌ/Oöbƒc#{RûÓsÚhÔ1][è„¡¥Lá†;ºË³_vÕ#þ?Ã}¯à¿`ª_ÉÃ
+`™<Ç‚Â
+T]XÐÌÁ?»{­Va—Ç‘å ^œx\¿lP=§Í‚õ»5p‚v'³ ›I͘^µÝÖ£j{(öFk¢6ݶjF¦mï$ГÏ[6‘üQê4ÏžÅjõ/v)¤Þ¬SoZ„ƶ½J…•nؘݷ KCͺ"mÍZ|÷À–ÆfG7—õÉ_Ðbš^…õøaþçÇ9}±†¿>Ñ'“”Ìíf²ŸÆÓŸÎ&í*ð³Åá|v© ç§Wì»ÊßGÿ4–vkendstream
+endobj
+899 0 obj
+1507
+endobj
+900 0 obj<</Type/Page/Parent 689 0 R/Contents 901 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 295 0 R>>endobj
+901 0 obj<</Length 902 0 R/Filter/FlateDecode>>stream
+x¥WMsÛ8 ½ûW`’ƒÝ™X¶lY²9¤›¦Ý™6Ûm¼§Í(‰¶ÕJ¤JJuýï
+¡?Å¥ÛÂýÐí -ÜDÝšÜMaë : ÑÉ:åí)¬“Q¦RùL–BÿG~}µþ<˜Âxæ£Ùu:º¼„Z%º(¤ª ÚI+!ÛÀA× Ž­´ÉÔJm³ï7I¢k<%TÚA˜ä’Œð‰·F×% %“I ™"ƒfF&hç
+҆̀=ØfãYA¿w´,`µ<Ù{A Ñâ9á"-Pf©ú•@Bªm ¼èiö–sªlÝÞ À†ô Ÿë£Þl²ï¿6 ÂÚ‚åE¶Ù‹VžA·÷°Á’Ëê‰l²_õ¯€ý{ xуmö¢1Ûí½
+J±EË*«±ôå9(]A,±¢—RTèg'ô
+¹SÃhH¡°
+èÃ8_aÆÊ4Ÿ¹¹ÊÙ²^•Æ,H„ûû†¹`¢Û‚~ßD^wI~BK²j+í^D":‚Ü3‘HB㧂1òP€:91qâ …r‘¨k!àƒPøðÌ•®¯K©ñ9]¥É5+œþ£Íöâ|æÁ–2É6Ž…_•KìÐÂNÛŠù8B}ˆ:¯,¤ÇC[M8‡Ð™@|b'bQxá<‚Û^{ïA—U¦ìI|8ƒ)gÏéï|âGC½Ù ¯P•08cçX;†Z ¡‹ãñÕÀÛ‘w÷σ>z0T‰*OZ­¥H:¯Ì^ˆ³ Åv¿Žcˆ@«‹ d¯×0_®Î<NkLB~ò®-VÊdÇÌÿl8Ë ^<äþ¯Â¶RI#r¤¹€8%¹òä@ЃŽMµA!
+endobj
+902 0 obj
+1414
+endobj
+903 0 obj<</Type/Page/Parent 689 0 R/Contents 904 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 302 0 R>>endobj
+904 0 obj<</Length 905 0 R/Filter/FlateDecode>>stream
+xWkoã6ýž_q‘bw –-Ù±Ó
+ôkÏMu{(Ç»kI°÷ªDY¨Ðµ¤Ö²»‚ž¥)ÉæF5ŽjQÉèi·í˜†é$ÉØ)åƒüï1¤¤)ߺ? Uçe[ÈÈí之ò‹¨šRÚÑÇŸžGç‹ eP*m¤7~õ‚ëEV·&—T F­[§tðÒžgË‚þÜ^S%`ÝÈ¿ZìW!i6ì§l óŽW¤Ãl†’#°‡²D:¤±ä4g*Š(pËQœ«Zëh'^aŒ^E©
+ÒH‡`©Ô¹@.ÖÉ*!Zî`2&_œyܽ.eEjs,D%òªå Ìm6ˆ§v¡ÒìAÌ„4¯À»\ôÞú2‰™Î#†óä–ºº­²Ù<>ï@Áá#{o\§~”{mþd ¨Ú:€Gpú»ú<IwwÇ¥¤†AD•.ÚRÒ~§ò] œÃö2Ðñ:erÿþËEšM’”npͨ¢,KQŠpWÒ‚¥
+¯r¬mΑËYi8 Ñc—ÇáÕ
+…²GRCFûœ  %„sWi0±(Ui=Uh:ŸÀTý¯iìt
+mïå
+;K(Š¶…ìô‹ÑmcAóZl=ÁßÖºDôÁFV‹ ùX ¿Â2p{gÚàx¯+P¯]\ÓA·dwº- †¶Úü7(³Õž‰¢R5kTÈ•ÓºôzRHh‚Gj¿ýpAÍdÈ;ÕèSÐxûžÛ~'Ÿï¯ºýÂ"Uª?YãYÔº}úUï%äš”û—o==ÿÛ†‹Î!㟅 ³þí´•§ XÕEOžœ‘’µ€yàþa‘Ë»~îàÅY®.u{ªx]ä÷M N¿hÉŸÁÑË£´ •æ¢ó’g©Ñ=¾½Ä‡œÐ¿‘ƒ3£¹®7jÛð×ÐÓbáÑôüðÉgÈ >HŒáÁ¶Ü&‘¥ ë#éòs?á-¨Û'Ô™ÕwuÕ5¤®†ê(ÙFVeI–L®=Þ|P=ôƆAhkз“F[õ%†Ÿ„FRINƒÛ ¶>‹®¾Þ`D§Î~Ÿå>ªzCk½÷Î 0[kzZ=b‚s¡…õ}\ ¶¥^ ßð{ a—B× ¥Š™ˆ|ÏæcÌ·ùžA)¹ Ÿ4ŒŸ'´yk”;øõ™ÃqŸ˜yã'&41Ó
+´ÐF+ž
+¯ËºuhV<×Û³úru´Q[UCÃ{¦x­·3“É·;U£óUq<
+º; óñã§ÑÓò<€ë7½–MGÞ¤cnÉÎR F¸á±¡w‹™b<Å;§‡oOÝL!~Ì-·O¯ŸŸ~üý?ÏËŸŸ(ß Èƒó4œf¢þ>üõóËÏÃuYbFïàÇ‚Š2èA¶#•²¶•Aý.ýqÍÚò’pŠÚƒÆÁç·BnD[v|õ<Ãýöˆó³:­`7ÝY¨3‚¡®Ã³ZƒÕU¹¹ºÑ dÂ8.Ô Ôõú
+endobj
+905 0 obj
+1869
+endobj
+906 0 obj<</Type/Page/Parent 689 0 R/Contents 907 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 305 0 R>>endobj
+907 0 obj<</Length 908 0 R/Filter/FlateDecode>>stream
+xÅXßoÓH~ï_1
+NI¨C›´H} H´ôh•.÷°±×‰ÁöšÝuCþûûf׎·ÜzE
+‰w½3óÍ|óc¿tˆ‡ô|Davðrvðjvp889¡æC/ñãŽGÁ`HG'c|?:‘–óXÄ1Ûlöúˆ‚€f1NŒi¹õCš…ÝKe%Ù•°øôn:¹º¦B+«B•Rb(’…–¡°2¢$§XÜ*M*Þn¾}N×Vh;{wMò›•y„ªZØDå¢7j-o¥î=}>8¤~ðJÏ¢. {_ÈœRš,´Ð26IS–~›DÒ)‹BiK1Dò~•FRS&íJAFLF†¥Nò%…*ËÊ<–I i×R榉̭i y„5T2ƒji8zÐi8S¹|´Ý@_ºs†UüàÇR®ò¾ˆ²$OŒeco%•8×P¬UF+ 0ʘµÒž™¬âõ–Nl\”@’UzÌf+È
+›B‘Êùd>‰·Å*MÕšMÎß±Gø¨g¯5ο]“Š"À†Ø/Ԏᄄ7žrÔ{«Ÿ<!Ágºã;i$
+rvQ”wH„¡4¦G‹Ò"ò ±/7¬’L¬Í@l2~~3ƒ$¬Õæ,Í®*Û{¹­¿¶Þ!þ[l ì¬æg×"[š0®=UžR©ìEáY‘Š$ÿ¬Üw¥—ZÃ=mêÃ~gï¸EÇpåx8U\‚/5Už½>¥
+è‚*~‘ÖÐ_ï!';`ŠQ\ Ù±Õ”áŠCø#Í»œ‚çO{ôiÞEÎýb|ó“›y7Gö®“±üV$¾Fñ"šÎ»QbÄ"•ÑüéOÁ‘ª¥Êgpöhx[E­HKI¨1,K7TæÐ<ºB(ÒQ÷!þÔübqü˜¿$á—G ’‹ü|%òå£ ™¥±+t¥29Õè(î„+Cq‚âãZÞC©´œ´Qu׫LÀ— 5œ7ÐÇËs„¼E¢çú…ÛÜùÛvƒ…ì°‰óU´{pû¹iŽ@ãÓQÿ2êܼèg/Ð÷†«¯T*UõÌŸæÕÐ;m[bùµŽã—ÞÞZ ×ÃæJ™lá:›y÷xþFæسtzP†:†}¬RÕxzìöªQ]1bÓóS4 `› uR a±«;`tšenUÑê¢M¬Áñö;Èa½ƒSÒo†¼mþÝ Î/¦ø|uóªGJ·°¼œÌ(NR9@'y®¾Öý`^¦©î¤0äZ¦¾ÆŒc.m% %‡l1w«å–H¯×ÿ : d“ïE½AWøp® ­ ­^­ç*·úöYVaˆD?„èYĨ]\ †”‚}5uÚðÕQÊ[ïÁë;1Ú’÷Ë"6[¼AÒàÓ÷ª/‡ÏÛ(bùfÙŽ_Œ¶‹¼–÷ÅçÛØËu‰!ŠÃÙÆ“€x7ÍôZzš•*Sd+é]Á"û;YŠÑßaA£àm (ü;©¯ÊB.[Íñ+0Ãà&Ç|¾3w¹±k?zZ¦îÄR;.ªäÅØýû°ønêªSÓC© óÁØGŸšÆçN@l;°:«Ü߈ÜÛýüP'¢“ª)mO—uêøîhÁ«"ò6‘a¶È-×+ #óÓ²R©ÐSôæô›ÅÛéHXþ}‚+¹õTVBK>†ê§žþ̽ZÓÖ¬†£?<ÁÈvða‚fâ³rw >RlJæ2Ô5•s‡Èý¡›üŒ RaZs½1OoWÓsÖ ¤R&e ¦«BËð³‚~®n†¾úðßa8†F‡Gƒ±ÿ‘ÒõþE’ÛÎ÷N¸ur÷7Íì´éC|ÿÍûO³÷,©¹{rßð^×%‘HZ‘`†ÆÍŠïFß<N–%lôF¹AôÊû‹¦Þ’s•[[nìïK?͸«™{;37ØUcâ:A'ÄîÞÚ ‘†«§ÄÏÞŽu¾à‰d,ÊÔ’\ ákÝ]K0Ý=¹x9¡+­x´‡êa™Õó3CÒ÷›ûã¡ Œÿr³p4>ÇÝëãaåÐ?þ§"endstream
+endobj
+908 0 obj
+1840
+endobj
+909 0 obj<</Type/Page/Parent 689 0 R/Contents 910 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+910 0 obj<</Length 911 0 R/Filter/FlateDecode>>stream
+x¥VÛnã6}÷W ȱ¬›%Ù@|MHvÓÆE[Ô} %Zf"“^’Šãý÷)+N”ì®ÓC©™3çœêKË?Ä>¤ëÖpÖšÌZ®“$pø’9þpÁñ+Lbs$N’Â÷º¸¾î—¼®¹¶K W1ÃÓFêLCð<˜-MÆ(‰a–Ù .ÌÒSµ^\Š5…³»Vgšî7¶cL†ëÙéÜâýbŬµ½ÀñͺJ%Ûè¢Wÿ;D!rÁ(Â
++Köð®2Ú~‚%´ýÉÃBf+ª(­%[”š* ȨàÅ”’f°eX£^QPd½ ƒ4%×@¹–;`K»ò@Šrÿ$¼Ñ%) Õm`*¤áÙ=ÐGÉzSÐ3 J•(Ãlp{9›\|†QÀÅ”rH_²¼4(ð6›ñÏ0'Ñ{Ú»{åN-›`s˜ãßOWø_Vú֞–¨DË8f`˜Vû°hUëãÇÀhÆY²‚:ðÛ
+Q(•ÀÉ£œ,hz¿; G– L¬ ãgöºŠä× ¸›)JÂs`MÀôqƒ$`. n
+­¹›Ïmn>VªÔÒè#SX"Vjô´6È8)YvnÃœ‰ò|C…)KÏ­öæBÈüÄÔÁT%/Â3åg¨ò¥ØÒ*Ï*WàýCâL =¸@Û–ÞÈlYÀ¨àÍÓ†H¤^£{,µ”›‚¤(Ü㢋¢2öV2M-„UêJ®²ŒIšb/ìjÓ£¬O`1¥BÏ!!(•ÀûIEpÝóSêäŽÕêúóð½NóŽId‡  ÝÀ;Ì<¼ªÇZgÚu‰c)ìÅvø¦˜ç9=&U3ÁÕøã&ؘ Ù^
+‰Î|Þ³¡u+`3úf$š€›‹Bl+·áS[!ïÍð©ÿO‹R1Ák…6B±Çz ˆÅ²”ØÐý*“ =ƒÛÃDÝjÖd¼Æ`9N íŸÁ ‹¡ZŒß k7tY-%ÇY«ËúÄÉ8q½0r£Ñxà÷¢8„ád:ð‚n0ÅG7ÛìºTz„²ä´¾ÆaDá«}’­‰Ü]HQn>Žûàù®×U¬(º]¿çúnà 'ãI³ÆÁ0 ºÃ®ºádÒxQ\¥o©ÆÈ.~âžç‡MvÌØaº¥Šß‘å÷•¬f²î‰B~ûP܈pÏÒ{±\Vá¿ÊIS=-H®úð篿Cý÷W#˜AúÝXÒ`ñz®5žF2F„׊ØR§uÛ8&ªŽÙ×æä•+«óǘ-‰V]`ïÙ¶|îx{X|Í¥ôŸ¦Dâ\y—Q¿!aÆš|÷ §U.¨$E#›¡AÏØìû&~á¤çì4P¼Ø÷œÖƾ#cÉC÷ü“ÊÝFÿ;Ü\ûô.ùåþoôS#nåäJ‚×KŸÊõ‚Ê> »š­’â˜ù&½"güvE‹¢ãQ«F†£ü³¬†á½Bq\»½1ü YÐS5ì `}<a1æwGc5šæ¢“¿Éݽ÷l|àêQÃò½ó¸3Möo<^9D=ûöy;¸àF
+sxÀX¤ø2È5ÑxÊAÚ^ãævìÛ—òww8éëú80ñ´ý¹õ¡éŸendstream
+endobj
+911 0 obj
+1228
+endobj
+912 0 obj<</Type/Page/Parent 689 0 R/Contents 913 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 308 0 R>>endobj
+913 0 obj<</Length 914 0 R/Filter/FlateDecode>>stream
+xm‘Ënƒ0D÷|Å,é"®m »&}nª¤¥®]p(‘ ­!ªú÷½&–úP„Œ@¾3s<þH8=…D–£ê’•NnuÂG^.˜‚* ú–´¼Å.l_Þ- ôŽ„ù|Îrè$àºJ…`‚3\÷]gãp¡÷Ñrh"¼žï™eäžË‚ô2¾`eüsØžb„ˆ1²ü³qÖ iŒs¨bQ6Æ×í¡ÁøÖxX¿è5Ædø¡ð Ò½õþëj0Ý«a½oþNM£aŠ:¸Õ}uœŽ…O3À™aÄñ½6£­)bÒb&2&©‘ÔÛ³ÕHÛàO%J6'À ý4ƒœ+:Þ¹¦ËXÈ .‰*þÕõvù¸Zbãû}º‰pflûCpŸT³“ìÜͨBQíÁ4-TzJ¾Êã‰endstream
+endobj
+914 0 obj
+314
+endobj
+915 0 obj<</Type/Page/Parent 689 0 R/Contents 916 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+916 0 obj<</Length 917 0 R/Filter/FlateDecode>>stream
+x¥WMoÛF½ûW zrP[¶dGrzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M‚"Ž“»óñæÍ›áד¹\âß\V ¹ZJRž¼[Ÿ\ܾ‘Å¥¬3¼Y®ndÊåìòO’Ó÷¹ª]Ë|1“OÖdF§ò‡Û:ëe£›Nk+ŸM]çå~ýjýÏÉ¥œ/®aâTÙT>Ýßý-­7vËSäú›ã ý_Íg ‡ƒùLÞn|S«¤‰Ç®e>ï-V<tg½­Ucœ—EóôóÁ$µó.kFÁH“×®Ýæ"JÚ>ò‚‘K®<"O†Iuœ”ü’»b/°nŠ_úDæW16ƒ;(¸­¶Úµ^p³¬Ú†yi»3µ³¥¶—ÌÕ°T8<oL©gòYKUk—SZö)J7dÈôô ÷iÜYÞAŽM®åQ•5‰É·¦ÑÂâªUéi)ñ®@`ȲqáîóÔqvSèEï‚êh^ •2e…—p†ñ‰Ó#Î=¼—D…?“‡¢ÝnÌÊÛÑÚÆ$ñþ—¶…Æ –ˆyÜ«!?êzgdÕ™&É'ì¸n(ÝÄåýZRW*”
+¡q¥T©&Ð Ì$mÑ€ׄ˜2¡CÍšÎI,'Ág‹ Oƒ®Þ ìY«ëP µœõúh5û°“9w©ÚEüMjH"ö£¶bÁõ´Ç&I\Ky€±k@y0)°õ%jèË ¦CÀ?ÄŒw‚Hìüqã#„ž‡’ô!®j  ( { Š5¨5í
+‘Ý?>†5câ3ä¿°²qgq™Ê{)̦VõþË+ü ð‘sŠ±6GÈCGzŒÒÅY¶7&½F…Úc}…Ál›Pá‹Û›ã§ÚÕeüjú©OÇ@õž½D¾oX¦v½ºfØê5`eþóä?—†Õ±endstream
+endobj
+917 0 obj
+1671
+endobj
+918 0 obj<</Type/Page/Parent 689 0 R/Contents 919 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+919 0 obj<</Length 920 0 R/Filter/FlateDecode>>stream
+x…WMsÓH½çWtíÉT%Æ_$áhÈn-‡„,1‡\ZÒX"͘ÉZí¯ß×3’?IJ@ÖLw¿~ïuûûÅœfø5§›-¯)­.Þm.^ÿ±¢ùœ6[|r}{C›ŒfÓÙlF›tòÙ+çɪ EŸ>|¥ŠÓBE)‡‡†¯èa#9b“Qîl³#2\)OìådG­mÊ,¼ú›áZïÕoñ¶ðÖôÕæÛÅŒ®æËéÑ'9!÷§…m mu‰›È[\Åu¼"|¦2J:‰žÙŠuÈEÒu¤öÊPis<«åœ¢óì%QטQ`Ž/}½ú¢Mf[òÊ{âQŸ†^\OW}ÂÀ¨ìÈ&{mO8®SÔ€Cθ/Á3Òž¥M.H„ÿÅ’FØEèj~Q!ó­uÕ(Ñ»÷ëÏχƒ4< èOiS ~•¢vÔ kâ²´­?äl2U+WIGc.NeÚ©4æn‰G‘{ SkjgË=G”–Mz(pÚ±«uÚ”ì°/ ƒ Ý:-¨v—Wûkx8µUN™Tecl×Y¦%dÞ]ß9»×™ ÝiÐ_ƒ˜pðp¯Ó¡œH?z<–MžsR*ZŸUyo³FH÷<y\ß?¿"ß!ë
+Yê#£î5£ö#ñ&›Žpœ”‘€ïveŸ¥-…Mylj.uÝíå sç+²[äaÒÂY£ÿjï[ë2aUÝ*P>&êÉk`)Ý>yG4ãk‹‹9`AËzŸ'½ìhùó«Ð¤ß7ð z³œãçêö?øƒ(Ûh+oiyˆ­¬ÞÞie¾˜.§s À.W5}†ÔŒS/ºZˆMN´S‡—‘?$e]ÎÀ!ô\p£‚÷¨Ù©¿µ¯!ô#a‘ÚÀ7³uìA´ng EOLxΨ­öElyƒÅû€õ‹¯û »P þ8=вÕ@<hL:c§)zÛ•¶ ÷ãÞÞ꺰ˆ‹š¤Р΋|Åå¡2®QmšÚÆԨ䴰^ÿ¹S\ÕÀ†
+ÌÛêH¨QXΠ~à…ûàËdQQ¡8ºÅ\%~(ÿ¼þ
+MÛÁvPJʼn:e°à2w,œv À6f¢k¥1$€Þ¬ÿînP°Ì•`M;‡¼B3áà’¥{:ëí¶îéc /éQè0ò
+‚7áÀ£Ø_ñáÉ+®`'Á‡T.@CZÈ?È;¸‚äé(Šl=ÙòZäõÿ"[.ãü<ÙjJb’ I}‘*$áÿÚ‘Û~Põ††Éê\-c®ÃÇ™ÒR£¯#ùáj AÖAQ@¾`¶áM õ¦ß/&ýõÙyÊXU€„JðP™àÉ>€OúÉÜËØÛô¦Ñ2&‚ÈÜqê{b¡CÀ•E¢ÁÃGb€¹2J”Áúáé)
+bÉ¡AÖ3[ƒN ÙO+ytº’5ï.,£"ß·5l4w‚m–<ëøZv)Kb!f[bßî´*3Г)±¶Û-…þEËúàЂr°øQä]ãv³}¬”Á€˜ø@¡Ÿ¸´¶(ÓTA«Ãôx!pÑcXs£4ñ¦MÂ\Œ
+B¾˜†Ø™6£|8‘¡*ë9ÖÇ£$ô,|eˆWNé#
+endobj
+920 0 obj
+1691
+endobj
+921 0 obj<</Type/Page/Parent 689 0 R/Contents 922 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+922 0 obj<</Length 923 0 R/Filter/FlateDecode>>stream
+x…XMsÛ6½ûWìøäÎØ´%»–“›ã439Øu+eÚ["A‰1H0
+ =-úâužý?Î~  |pzöµ*9°$¦òÜv7ÝtµÌ˜mú²öõM F$;KR3ÕÒ)·0Ó
+Ncã+—_@­Â†gt©C~Ùx/T™a*Êx¢çË3ƒ'ÕeÞZ½0;V?: vjañÔXûÒµ
+Š†I
+qRm‹Îð܃¸£­ð€„Küöþ’]yÏ~UŸ¡C¼Bqy¹ø‰&M –+Ûëm¦-wl•„u7Š¼Ø¢™`ec¶1~ ˆÍÀÂO¹`¡x°1…|šcDv“£²krÞ¢èsÕŠá áÓ`—I63úµa#Ê~²€ÁÝ¢çïwÁ¹çè˜O!nð†ƒþï`p{í»É€eͳçùžyº±ñ¶¤•3ñ6øûÁ¦×˜c¾Œ…V;P!xn´.8óQÄÀu!ò!ÀHÛ…1RFå÷ó-aD”ôà=ã"€ÅŠ‚N“©Ów<·æût$rRyùª€A4Xâf»FR ÄÀ°ÙÕ9÷­ä²£÷È.Ò«_'Pº4½½†’¸¹›ñgüí”ca<~Èn¥ñuFϦ[­Ôyßq-B¯AeN…²öÃÇÃ.:ù½k‘Æ[ziìåõô|ÿ•€nBŸˆ¼‹„½ôÁ)Lv¿:t„G˜àÖUÿD‰DAçëÆ»kf(\€Xf7=ÁT¢Ì[ë}ÅÙ¡¢B±åv/‡1¯‡Nk À#à<r¾“Ð}øƒÁ‰ÃlQZ«WÎÎœÎmÝBç2Â@Ãó¨:âäbp°<ÊΈ|9Ým©˜Ü¡;QŽZ ­Çî ,#)¿¯¶* &+®6D·hÛ€Ó€9»ye l7—¤!r™¶PR쉷¢†–•#;‚–¨ÂÞ²`w@Rb A ÅõÈ;JÇ<½–E5Qz óSÏ7ˆ-RÛ¸™ªQ+Y¢BË»8‘ýîôa'°á›5-¤wУ°à¬W¬±Bn*éÊé¸ã{™~tcŸ>%Ý„X¢ äù^Žâ¿‚\äw¼Vx1A‹ž“¬û¥$=Dygxý/v1X¹‚µ|­š•@²ˆX× sÀáÑ°ÈØ"óû;u¤ñ"™Là€Ÿôî6ŠcFªc¿Tð£òÁ+´,ñ(óäø~§OãZEÿ£7‹}ÃÆŽdj«ê¬8âuÞHƒeÝ‹7FÊSó>EF#6
+endobj
+923 0 obj
+1820
+endobj
+924 0 obj<</Type/Page/Parent 689 0 R/Contents 925 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 311 0 R>>endobj
+925 0 obj<</Length 926 0 R/Filter/FlateDecode>>stream
+xWÛrÛ6}÷W웕›¶(Å’ßêÄMⶹ4V&}ðL"A 6 (
+SjªåºÖ¾2VÓv­jª\Þ”:ð7¥S¹œp¸ª‰Tƒlm2Ug)[ë쎔ÍÉX¹ûjq{pJÇãI’"‘ó¹ö -Ø«±pR¨LS¥î`]å¹±+˜$«·CÃAû{ƒ£…óôÝØ¥‹{L´
+»#Re‰xªÕ:GBˆt©¾s‡|àWÎqðüýÉ;À'`6ªú{M'ÁÅ/;$G-Ä2·1ZPX8¼'Ag7õîdhQa·_.>>E<pV|º”×¥¾W¶¦6qÀã5
+–«:ºFÆnû ÿ{£¨Ë®5ŠÙ:Ì]ÖT(T,“ÀX9ÿ "]+S†„ƒùuq
+Ÿ3M ƒ»7£¯W—7¯" ¸Ã…Ò¬Öu¹£Ü…ö¸Ç|úöéê/PÚdkZ+”ƒ¼²+M®`oKí[bq™8xáGët'Ùд¥@P•Ž÷‡î¹kØ>^Ž„„®j¦_[ßÃ@·nÉѽh…š•ô¨DjòǸØ+I÷àXP c<ðÜZü¶…Y59
+˜£ðÀØ焱Êv¯16‚þÑh GQr(4BD´÷rÇR˜»J=k°v¸—¨5ZÿÛS]µ p‡‚×uã-²1E_.ߊ $|†:îªÒE[S¯qª‹hÀó6>UǽنΖ£ö>ÞîòK…Ðó¤ŠNûM±…jin-e£¢œî§E/+&¾ƒcb‹|´(Ã:|``-׃
+It]F½˜<Ãzô¤aàšÁb~d®‚Lâ Z¡,@,ƒªµÊÅîÂ@a m/¨)Y°EÊÖC9Á…HŽÖ–é%ÎÅËMÈV.ăàxÝÃnÇÌîĹ}‚9€ÈX ¢
+våâtÛ… §è¸Ÿwe:‹=éJôä ÒE¾qHo]5òÉÞ –Zl¬4濾¾?§sìiz
+£¥“y2n+éz¸ò¦éxàû#ó[ŸÅÊ
+Ö`YÝ?ßX+K3ε}A‹3
+_÷¶ó¡±¤a6XڹƷQ.Ýfz´‡º†tWstiÙ0¯D8aÈÓ› lˆLŽ EÖ/-µ´'ûåx†*ÿÆ“Ùs‘Œ™P(¤— ê /oˆðZŽX†y.£
+`ȾևÝÂy<B ¨†Jþ¯Œ/SñÍ0¨)º*SµÄƒ
+Eß“ãåêÈÛ©{„Å'Ž,—"èq}…± ¯ º–µþÙ“q¤¿‹lóZrèõª)•?„üDÎa\`³„ÞؤâôŠzƒµK¥Æ²2ßaÄ™Œ“Ÿ¬°µÛ‡ ãƒT¯UµT2¸Ÿl @ ÂλÔPª-ÞEX6¢´(:Œhg¬Ä&;”udùÁº‰`±ÌÎøòZ*(á
+endobj
+926 0 obj
+1830
+endobj
+927 0 obj<</Type/Page/Parent 689 0 R/Contents 928 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 316 0 R>>endobj
+928 0 obj<</Length 929 0 R/Filter/FlateDecode>>stream
+x¥X]sÛ6|÷¯¸>U™‘h}ÙrŸZ§M[OêØMÔÉCÝé€$$!& Mëßw
+¿+e¶X]ºvÅ»õùG¥çoùÞ)Mf‹dαÜÿô#mø<Ü38ƒÌ†rS
+ÅÇ•©´.!j¡ÚᤠFo¥%-eÎQíÄ“$'÷qJ¾lÒ»Md™©uÕ2ÃIOÒ&’^l;¢kZtS‰¼E®ôÖcŒ
+ʌިm\™± âU‡mV[ `Ní
+[0™òD-E¶SZ&´F¿uÔ솥`A5BW¼ñŸ‘¯tqzŸÏÑâBö"* c
+'–4÷ùú|pï#nÁÇÂÂöR|¼òÝîˆE#S{\³ ÊG† F¨ä4¬*¤xÕ8p)+ £…¯TÖr“P¨4;ªÒ(j±™ùþ–›F¦mUè‰pìLBN9t
+ÊÑožmñP˜´Ž¤CQ?doÔ³Ì=‹z"_›0[ÐO¡·‡FÎç‹Tª±"Ëà‘(nJ‚—л´nmdQðß{þ¥|ا
+c™Ÿ
+8º8  ò#ˆ«Qánpôñò섹°¹WîóÜžçm2(N¨êêý¾`Uó¶
+endobj
+929 0 obj
+2008
+endobj
+930 0 obj<</Type/Page/Parent 689 0 R/Contents 931 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 329 0 R>>endobj
+931 0 obj<</Length 932 0 R/Filter/FlateDecode>>stream
+x¥WÛnÛF}÷W à‡0ˆE‰Ô=h 8MÓh’¶Ö[S+r%1!¹ê.Åß3³$EɶZ 2@‹ÚÝ™33g.ûÏUD#üE4i<£¤¸zµºúiu5
+ :>ì/#Šc<&‹9žÑ$d5m°+ó8œ4Kãq8;®Ì¢¯þÐqZp ª»T ß,)Šhµ¢ÙbN«TÖG´J‚(§á8ŒBúÑ”›l[Cµ*S¼û,×twûîÕíóÕ§«á›I'dÏ€j•«¦¤9§ªÌ”r6‘³þÝl¼Ê¹Êªl»«6Æ”MC/vDK†Ñ žz©Ö˜êÚ/F~qÌ^
+ö²<¿¡õ=¥z£ê¼ºi¶.*©âà kg‡¹IT>tªX«SAHwZS… *+)©IêB—•÷¶¡{Só¹ ¢±GsPeE•9SïL¡; èÜéÞV‚˜Tî ­ë,OEUãî”ôWÔ•Zƒ%̘÷ww”gk«ì½DVØ>¢éŒáyÊ4jƒ¦}RN­Üô€–qŸ–Þø¨aaP:‡ð'» á×ZšˆýÒ€m€eÚz>éSÙÃÇ.*µN5ì5dëRÌö§­öÖ §òJ•.ÕΚz»£¤dqkN˜}æeafioÍ^[Ô ÊuYÒfp‡¸Gê%ûNçæ@ÿß ÔQäŸ<bT©=.fW˜”æÓ©y(éÔìžAšR'Ú9ЀíåìÿmLž@Ù’»/Ö&Ï¥üüòNOÒ£¸ò’î LOüÆO‚åòuª?8߀æ•.×6¤pZÃ#}ÑV~E…Û­ ÕQÅ6䛥_³²þJ;ãªPï¨À7<RmK8ÀUºp7Þ/¨²Œ¡û‰±V'B¿˜ƒ†ÒâD%òXbæ€'âÕFèÉ•Ôùp¶ñ'‚èGa9Eï™ÊT;Hñ%cD¥‚
+·35’”µzŸ«æqÁ=w³cxJ´0zÒçïÍᆔÚ‘N³ê8]%,î<¹ÛÊp
+o£F¹1ŸIí÷ZÙŽÆ罌šÏ^Á¢ô¥¼±ƒ¹tm‹Á4ªÝïv*5‡Þþ6`gûÄr¿ÈmJpŒ¼øÇàñ…ìŠu¯ö¶áéeðÓUå´Wt‚)”ÿ¦¶¢a11[)‚žC‡r^Y“ËâZïÔ— éƒ$;_ðDÔzxý¶ÐõÞªä ÞEÍÀñÔôÇÏWñXF±%OÅËÿ#yËéŽ'¹ã04åq-Zrë÷/Zí´C_„¹H­Äfk$,.ŒüR©,çWv€¶×f¶Î¾ÁâãóÓ=2ÜñT×ÞÝ¢YÓ»ûóDê›yxG”´Âàï¨lÓ4§¬Lò:=/ÞmŽ5àÿÜæf­ò¿È¡F¡F>™íF±äŒîß…aøÃc ×Ëä©àE##œõRŸ¤={ñì]æõ‡w·oß¿h—Y ¢/xªŽ9„zÞ’Ã%oM(“rëú˜wpèûmèÖ2¾_wa;†ä{zÁšñüÌÊkNu–:_’¢>LøX¾p“hŒd $:-ü%£.„ É÷‹ØG¾D‡©;t‹—E-p‚åþíÿÀ/5éÄ€ùƒgc€|¿dÀ|)SêCüÐýMø}ÓÐ%ÆcnšhÕ(+sØéÇf"ðÏëò5|醹4s2þ"Ú}›ªƒ‘~¾Œˆ"?“®»÷+÷5Zªrïx`à*Ж3ØÊ6öã)ø æâr„«$¿\òîš±–m–¼ñf=J€{?·z㉄,0šËË%½‚îIÍGB³­Ÿ1êádžL¥ÑxF4[NÀ{\ßäJ¿Yó U†^÷/8ÂÕh6ÇöÁ<–+bs¥¥•Ì4[”b´mGêŠ7Oæ,T6.F£¿úáÙ]áendstream
+endobj
+932 0 obj
+1559
+endobj
+933 0 obj<</Type/Page/Parent 689 0 R/Contents 934 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 334 0 R>>endobj
+934 0 obj<</Length 935 0 R/Filter/FlateDecode>>stream
+x•V]oÓH}ﯸ ‹Db'i¾¨„V…¶Ð• ,ñÂËÄž$SlwfÜiüž;c'MÐ.EQâß{î9÷ëï“õñ7 éÎ&”'¯““«ä¤Íf´û0KüèÓdh4›†¯}2’¸Ê£íÉÙY4 '0…CØß~ÀN|ݧ—”,àsIæû”¤âOi©î%­U9WeFµ•Æ’€A‘“]É<§o]æ*¥ÌdFjAn%7´xËɼ”.¶v•ÅÒ¥Q‘HSií·çÏ“»X hÀ¨>½=Î8€é$RAƒ~åô™ÙØ¡÷o „á 7¦¸ÿ¼“E• 'i¥ ™)Ãþv¯úoxµC¯(æ1,]üì2~ö¥€LÆ
+}¹K á§5á¤>þ×”—?}¼HÞ½ú?ÏÁ¾ÍŽwô¨zZ.Ãå#"Þœ$òµØ€*aD©UæÕÏ«Ñ´,[£ùÌé^yšA6S—%šÆÔ>œuv´ª+K=!éZYµ2d?E™¬àò *Q»YJ´‚¦0îu›Úæ2ƒ (Ùü`g}Ì?ˆúýsÿƃ{4f¢[ ‡!ŽT!™>Éì~£eº6£Ú„œážßÒΨÊ4¯ýœß-(t4œŒ{®Bºrö ûˆÄ¶“W"ý.–0×<|y»ˆÂ>m/Åþ5¯ 5ô{w—œÙ°ÆK‰(0Ñ—¸&Ìœ+…_ ùY‚ûeÛRJ½Î…¦^½ó@¯nÓkeŠÙ2G´ ;9\Úû
+endobj
+935 0 obj
+1316
+endobj
+936 0 obj<</Type/Page/Parent 689 0 R/Contents 937 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+937 0 obj<</Length 938 0 R/Filter/FlateDecode>>stream
+x•WkoÛ6ýž_q}¨‚Å’íĆ4i»+’­†aZ¢l6©‘R\ÿûKJ~¨N¶¡…™ä}sÏ¥þ>ÑÿF4Óå”ÒòìÍâìíâlÏç´Ø^†t5çt5ŸáÏÑ+)ÇÖ!M¦ãøª[¾ŽÇa ¶°
+» %ï®h4¢E¿ÓùŒ™_Ò"~7 ¥BSf¨^Kr¢ÄÃØšLŽ”^Qmh%kZYÓT¤tnl)je4åÖ”þÐýíÍwç‹ÏgÉ»!½f7#Œ'o‘EÖ˜ú›°8
+‹—8|gQÒ8›&E¿K‘,•N6x䆫#‹j0BøäÍÛ»ooM)”¦ë¬TÚñæ!ZÿÕIûÂòûFºú…õSVMý¢‰£kkŠâô¦‰bÞ7ËB¹õéŸÒµ,Åó‰¼Õð_Yåäó{Þ{tîM¡Ò-ÝX)jcén£[{ ›)è‚*.
+ K]¿òlÐfCKI“Y‡£U®ðŠ<jÇìXšzM=:#€÷[çß<[\L »eŠtð\Ç9ªe6L®Ô”%NïèÓÑ”cìógÒ’8b>"Tª„s›,ðdÏðÝQ¦¶[›¦È<…шa›G‡÷GI[ÓXê¸ÜG‰¬Óä”õ(Øñ£KŸšÇS1¤¿Q¨ rV–´Üô2oTæ.håŸkƒ^Ë”•)ÀR2.“¹hŠË¢@éCÎ!rjS_Г´*g¯È‚¶’¶TΡŠæŸz µÔÎý…j£±²Ø¤°´¸ˆI/q»ùbü?üÞ5Š[£*‹N*‚D°€€.™Ñ ˆЧ®ÊÇÎЮ¹‘ø
+do‹OzÒå| IÜ)"d/y÷z'r—“‘gÏ^æ ž“ø2žÆ„nÍÕªAî¿…’ö^<Nù ºk®´rTÒm¤/¨è"Ý…ÞÖºÇÌÈ;êmuåòëmˆmcìc_pº±'ÂF h2Ȇ{PñÊfYÿÚ«¬yR"mpX×*mØ k¥%4ê“J%¸ø(e…Ù!2¸ƒF¶% ejªüÔ2È 4 o`®MϽ«e[Ñ­Ê<{­,e¹„_^
+tÝR¤MåuÄ7 `¥´(ú„l;±Œ¿ªÒC„dB51ýtëú¶Œ9ú°¶£ðÃ9åÈâ÷çè©^À¾µÐbªF—mâ‡óv½#(KÉFE( ûëTš¬)dEðö¯èZàáK’µV½3ÔúX!j.t/dÀØO?Ž5Ke‚Ž‡§t¢ÚÕ`§6[V.¥ŸL LµBt=h‚“-ê¡ì|A0Ë™9v}`iwm8öí¢?>íƒnéÙ;÷’ÛÈcÞM_ÏŠ‡hÈõãéå‡ÆY !7Û?ì%tƒ“icU½máa]¾Óô“ÒÍßÕŸL!0 ÉmAý]å?œ@)þ&Áçs=Îò ~'‘H+z:á¯Ã7¢ÓÆÖ`!Í&“ã³ÿà;.â¸&]“µÐ|{,Pxt{;¯XjœA'ùŽaÁ›œôsíáå”…ÆÔCuù¾‘×Uç㢇X;ŽD¸²
+endobj
+938 0 obj
+1458
+endobj
+939 0 obj<</Type/Page/Parent 689 0 R/Contents 940 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+940 0 obj<</Length 941 0 R/Filter/FlateDecode>>stream
+xÍWMoã6½çW °=¸@,Fv
+äÅ6@€î¢íºhZ¤ln$RKRñêß÷‘”lÅö~ï¡Ä5ófæÍðÍû‹ ñ3¡Å”f)eåÅËÕů«‹q²\Òá—Ùà Ž¥WÉ”æËþžÏ“9A9ÎŽi6]âk|2_ãÔþÑ|±h_šÑ"M–‡'éÕu’v/Ma%¼
+æðL£PÂô
+ l¹N2­òç)ЦÐk¸G¦¡øðª­Ú`ÔG€
+i]ÀjJäùÆTVÜp¡À€¿ éCâBÕA2aÌ­‘ Á»XÑï¾zžmç2“ž–D§žÛ¼&6t §Ö©‰Ï€·Že0Ðußm,bzÇõ9£[Qö ¬,Óuˆ…¾9²ƒ‰ÏøòÈ,)Ñ÷ø|§ÑÃœìO¸OwS¡7REvãqp¶Ÿ”`˜†]Ú±=qïH¡Ç<­íåu ¹p®9SÈCs|s!¿ØD­äÏPtÎC.u³û)þÿ`¼Ò¡Šg2uàë7gê`â;ÙÙ›>…¸dýLûqF\õöŒêÊ¡MqÅùÏé8Äh5î‰8Ϸ⽿Ý%.fÅ%ÝãÜ‹‰ýu·¿0Ãî•ìÔÝóé{p7@*h\;k?ëÚEé²wû½óæÃmåȾþj9nÁ¾¶Ö^÷¸KoriãUk´v˜˜(–ð<ª%œT~Xôa°c‘p·ý-¨Óà?Þ”}Œ>Är×âxôàÓ ôam ƒŒä¤s‚TÐD\וG
+YÁnjx½nºu"ñÒ§d_›¸ôB¹. “9ö¿nöùëGå ·‘ÀR˜dÞ6 zŒÐ‹c\ÄB›¢íÊ8ð5ÓÆÔ•^4#ÖÝž´S%kW§á´è6«§é¢}¾lŸOfËäšÒtõÿÛÛ×/oéw£ßa¥W:«K<øôÑ 'éL.¦Ø¾ùà,Åæ‹9l…çË™ ,þãâ?û#endstream
+endobj
+941 0 obj
+1484
+endobj
+942 0 obj<</Type/Page/Parent 689 0 R/Contents 943 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+943 0 obj<</Length 944 0 R/Filter/FlateDecode>>stream
+xm“_oÚ0Åßùç‘I&!Mè#e«´[Sm{1Î%¸Mlf;0¾ý®**T%±¬Ä÷ßïœü%ˆùJP¤˜åíè±Ý=eH”»ð*Ÿ(+ÄQÇ(åxÙYKÚ7gø=á¤ôVé
+݁
+­©º†PrÐÆË7”öBJÓiƒqNmùÐÉØ7ç…WFCp|cjÞyÕÒ—òucšÌ¢”ëŽ-9o• ¸¤ðhÅ[â›4yìŒÅ/nÂœÖ%:GÖEyîžäeiÍñžóOšý÷oåˆçBžÏxÍæ¯)?–°8< É>“>ô ]A$iTDX-›Îq{CÁwr<BÀË”ÜÙyj'<†5]½ï r»0»~»-á™ìQI÷|R^î'Ø4]]‹
+ý]T¾¿OØŸ©ÌÎèÝžäEþöùÃ?/V l¬y%éñÕÈ®ez*!ûtˆšaãÏ\‘WYÇóìÒÑÑ}Ù©endstream
+endobj
+944 0 obj
+521
+endobj
+945 0 obj<</Type/Page/Parent 689 0 R/Contents 946 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 343 0 R>>endobj
+946 0 obj<</Length 947 0 R/Filter/FlateDecode>>stream
+x¥W]oâF}ϯ¸â%‰6ÈJ«*‰’.j¾v¡ÝVâelà=ã‡å¥¿½çŽmHP»«¶‰DbÏ×sÏ=çòõh@}ühÑðœ’âèj~t3?ê“ í?Ì
+˜ ‚ˆF“1þ‚IK^Al³ûÀôðö‚¢>Í—Øý|<¡yêÇñ&9¹^‹ÒICƒa@³ˆ®óL*G?ÏOç_Žxí`T¯í ùÈyz‚Ƀ€n/?ZžÒ§Þ{5¯1ðAo(Š¦”hµÌVB{œ…}¦¤k­”LiC¯ÞŽHXÍvƒó€£<Iê`–˜:E,~âqH{ÅßóÓÏGÑÙE0 ³q4
+'ø[?å4cTÂÛ õ=ÎÆÃ7\R¡b¢‹2—N’PvHœ&·Î,}­¤u™VþN±$ZêJ¥„>ÜÒ>À}BkçÊwa˜£ó`“)T/"Pyøg.eµ -_&Ü
+hæ„qD÷OóYpóûM— É3gèñ—WHP#Kw—O³Ž?²žÊs;\¬W¸=ÜÌ=»ù´£#¢ã'£Ntn¢9kÇŠ‹Y†_A^^¸V5_WÆ°¾¶øÀ±ªN f ç×vÎÞ]¤ÁV+Iª*biêÐ3•€4ÈuæhitÂÅYâ™@Ž½†í”¸FªÙ½ 0Éï5–¬4(°Å‰…(4¹(PC¹†þ€^1ÈV‹×D]2ü¬L$Ò” J\†äà…‘ÖâIûCìa
+ëã,qÈDçÁ¯½Ë¬ëtÙ$l)“l‰­‰>OfM|,
+?ÎÊY·1ámŸ.¸cÀ®Ïêˆ~¢þ{˦Èo»ŠC«Ì <˜‰œ½g|†¥°î6ÐïÎ~IÓvîžã=Ä3ô$%•Þ—[œ½ËÜê.$D»]
+endobj
+947 0 obj
+1596
+endobj
+948 0 obj<</Type/Page/Parent 689 0 R/Contents 949 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 346 0 R>>endobj
+949 0 obj<</Length 950 0 R/Filter/FlateDecode>>stream
+x­V]oÛ6}÷¯¸È“ 8ôgl7H3$­³ºÈÒ,6 ë0Ðe±£DU¤âùe¿}çRrb;ëÛÄ-òÞsÏ=ç’ß[}êá¯O“ Çe­ëe«{ó–ú#Z&x3žâ!¦žèõz´ŒÚý¡è‹¡ «R‘O>e¾%ˤ«”£Mªrú¼èèk›_>©Òi›}CXA•S1IGòÍò[«G§ý±˜"C;2Zåþ'þµ{3¢~¿Î:˜ðÛGŽ¹µÅ–$ÝÍ–ôe>{$[r<B'7Ú0˜˜îK{¢÷! =(g«2Rt]ÚSåI‡rK ™­$á+ƒ#—Ú U…àä³e‹‹ SŸŸ~nõφbBãÁXô(Q`®¿Z0e *
+PuÛ‹Ò®ŒÊ\‡\…ÒÐÛ¢TL­Î×d,>°Õ¨\f8Ž²ÛÕ7yD†˜âR®× *ðÃm}´å_…‘èß"U(‚¼ íÞo LÖ£³é[4g4 Uü#hr,ê³³ñkQ}„ °9­•G‰K Rðû&7VÆ´"®Œ¨/ȼ–®û‘voté|‡¢RaðçR®4’Æ ÐßïæwË_þ@YÒ³C8ƒ‰O±<– |o‹-«¿É× bR]mB¬¹³bÑË,ŠÙÕŸ¡ Ž²Êyr¾„S…, ½³Á_A)¹2fzg.[êµÎ¥€œð:V'Ø-·’
+éD×î>ŒÙþA¤1
+ÏÊxv/¯¯±„O2òô½=ÜÀP1ÞVbaÿžé)lóa2ññôžÌÖOR›ÆÇŸkå8}Ïàl‡4ή•M"¾ø q:+
+‡²å)OlTe8è¥Ç•€!àÀ»Nëmÿãý‚ön£É‡ãjOÇœ‡Å¯­EuÂjendstream
+endobj
+950 0 obj
+1117
+endobj
+951 0 obj<</Type/Page/Parent 689 0 R/Contents 952 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 353 0 R>>endobj
+952 0 obj<</Length 953 0 R/Filter/FlateDecode>>stream
+xWQoÛ6~ϯ8ä¥)ÐÈ–ìÄNž¶uK[ h·Æm0 /4EÙ¬%R#)kþ÷ûŽ’ÅéТhmYGÞÝwßwwýç,¥)þ¤´ÈhvM²:ûmu6¹»¡lJ«o®KZå4M¦Sü"/^oE”£tžÐÛ«ô«”Ê{ºÕZ·“Š¤ÍÕËÕ·³)]fsœ¿ØkA¯¿Üóo|{ŠùöËYšdü×¥ ½3ÁÙ¼‘A[Ó™Î)M{ÓlÁ†í)W{UÚZå¤ CøjH™½vÖTÊ„„è÷ÞÄyj¼bÿôõâµ5²qôE9OÚlèþàƒª¾¾¤`û¸ÓYÙ¹Ü*¹ÓægEé-íŒmáÑK[U:œã˜Qí8w8¾ð´NÛÆGïk' ®ó$ðZ‘ˆÐ!ÀsâVkÕp°ñdØ*$ëƒëb ‚ÐeAØÙU'áËþXqÕbé(åoŸÞœeË«$¥«y–L©¢y¶LýSI÷\û)gO*¾â‹s+F•ð]Pes]hŽ»Clñ<¸Â6&'(fö4·¡‹mõídâ™7‰u›îÛDî}² Uù,…˜ â“®fª3_.ðSqŠŠ¹·æ7Ë„¹÷È],Kb!zÎKG÷ìor÷Œo+`^ ¹ÕF=Ú’k ãP7ëRËòÐR¯ËŽeˆ§¶^ëTX׿·"J#0p,u"æ A ´«…܉ò¯%—e“3b°¯Èùƒ‘à|Nßt€×Í&!
+þ†Ö"d¨¢Ï†ðz
+±¼rðJÖ "íc…}o­#
+Ñ|à~„ötú=´!êë¾´jý?Hÿm›¨‹NÏâót¢Bìñ©ƒ¢‡‡Z;Û"€¹Y–xdCF{t•´&€¿ŒÇI¶Úäz¯óF”T@Lžû +mTC†:jw–Öî˜ÕÉ^s!‚ïXm¶ìº 7ýÓû#²£Jóææ"ü®c Aa¨\‰{¹òkZ…'Ì!Ö·œ;îú:¹¦Yzƒ+ÊRî³ÝÓQè³lŠ—c|F—ä¼>zO·?­[¹Ñ—kmX¹}uŸ´ž±ngÓ›dù&e‹§AEÕB·#ÁÓHÁì&g4Ö3Ië*Ôw‘,u71"‡6z0…ªFnÑì )¦³%YV ¿B?áQn©Õaû}îŒYŠmµ[‹†Ñ‡œ‚רêR5_SQƒOK¹
+[›s3è5¡‹˜÷ qœ¥èT௱¾5>à…žu1hŒ=£¶³,Kf”Þ\S<D®ñÙ=¹•Þðcn­giEƒ+‘|pô£â¼¢ÚjŒ@ì·ƒÚ~†•mÛ&ò€zÊ2œD¨Ž£g`âEód«Ý ˜½œ^¼µ-#¿Q1ÂСÙu£Ø(‚.BËðaÊ1§7>Ó›?ßó¦€6ÒïD__bø`Q°íúcî†ýhhøý õVK Î}ºc¦U4¨X;‹NÅ{´ZÊKâí¨Žbë
+dªšÀÜÂE'ir‹êøò‰-ñ¨Ç™Áa$FÑ+†àÉV8[Q?µŸâ<´40!n{¨õ†Pϵ(¸ã>ÃçuŒc-,÷ë8Ú‚ªA_ºÃ¸ä‘Dê_QÕðª»Ã{ìÌ@ÈúkXrº4I[˜ã‘üqXŽ¹•ô—+²0pãWÍ^³û±H>n…|³F+M¬ãiñ¤…Êd ~j“U4ÁJ}9€ò›ÆŠS^¥†hºÞp^NÁæ€}’·:Þ1ŽfœTÔzlV„Ž+Ü!‰]úK2¶s¬ÑÝ3‹Ä§¦›}ÉŸÚ£­23&wWýžÍ'‡€ÙÙeN·u·,Üâù—ãºtËíÞY´
+Ì9{áänÙßrÉyÏhõˆéçÿÇ{\OÖùbŽã1©å‚cDßùëì?d\ì*endstream
+endobj
+953 0 obj
+1482
+endobj
+954 0 obj<</Type/Page/Parent 689 0 R/Contents 955 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 356 0 R>>endobj
+955 0 obj<</Length 956 0 R/Filter/FlateDecode>>stream
+xTMo›@½ûW<åD¤‚›øTç«í¡’›Xí%R´†“
+‚´•05“K±4(ýr‹Ní¨8uâ]ã|y*—Ó›œŽ<Q@ËJêŠDÅKGm©v¢#,áÚŽ‹»¡ rSI–­í6| Ui—ȘD´gy$ïL¨‰¤“£wÒž˜T—¼æL¹îPÍVìLt5ÉÀ‘‹–ŸÊQˆº#NïËs# þÿFô%žfßof/ñKü/W™ÒŒ)#í¨m˜é¶@Ã%éS9ézóY¿e+Ö–ÔîŽ(Zî@!EC.×+÷ù™ˆNì½í§û9Üy69WÀŒâè:Cºunf‡&ÒŸðûÅ€v’QJ1I:¡û˜.ÉQ¸]sˆ6LA“ž„QÎaÙ|ksþû€B«ŠÖ"ó÷øeÅ&ïhbÆ©A”Žƒ¨ªñäÀǽ“C:HìÔÀç²jöhhpKC-©ß\~rËÉd9ä“%<ܰ쭔ƸV·}„ £ˆáCºÛP㉩&¹²Œ<ÛnÌ¥x¥}B³ÎL.Ó•³±ÙpÛ}·§PÑ©ÛiÚëðcðsü©Òendstream
+endobj
+956 0 obj
+734
+endobj
+957 0 obj<</Type/Page/Parent 689 0 R/Contents 958 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 402 0 R>>endobj
+958 0 obj<</Length 959 0 R/Filter/FlateDecode>>stream
+xÍœ[s¹…ßý+æ-›ª„æp8¼ä%åK6ë*_6+m9¯45²ó¢”7ûïsh
+u„ËátÎí`2ý¨s•ˆââÉ«§O¤»¬Kzù»Ñü¯UËéfb•]?ZÀ*û^Z?\¨U>þ~ª6ˆ1Cá…1ÃvDVTÄÉŠ˜¤lO¸8·©£¥h] ±b&èmOÿ)éI‚>l§þaô¾ü4¬Š
+Œn<šÚJ$¬‡œo†T Vá¯Á’
+xÆnµÏ RGw“°žq»z?4™>¤9‹µ†…ñ<ˆ.Ô°Äœ&n²WkG“│9©>v=ë£9U„Úœ”ûž ʬêàÌIõÒgèF(ÒžÞm¶W›ýûÜ•¤DWNg☓ÐÄ&E*0 ZÃОñt³_7Ñ"`‚Ó‡s0É"¬=Œ—¨Cr4á‚ì¡•Ñfí¡sö úØw¬öPj{PBì<&DfE˜8{P};^È$Àˆ¬
+ŒÙBLÁ0"¶blv·‡ãyµ§ «hŨzÿ@€7³Šs‚Ç–É£¡ö6_©9kê—3¸Eµ¦xQ¬©_ŠÏ´Ö4µÖ”ô¡ç>XSM¨¬)Bׂ2}:kMIßNÆð
+ HxvVç2Õ]ˆù¹·”öö-¤£—øÏÔ$a=ã´{—}©û´ËŠ¡<c}Ø_oÞßWçÍ!O~¬­›ÃÄMRO»Þl‡Q°Íùמü&?õÁ!'C dˆ ïÔzg†ªŽ&Ãêh†N_¡ê£Å°^‰öïO ªºÅ@Gdz\VnB^Òˆùub~LHP‹øõp—W.,b6•q`Jµˆh7ÙüHÈ¢…'³-`!b.A"‰Þ§bs¦ZÀ"~Ùœo‚E@L§¾(
+pq^Ï›‘†ƒE †
+€é •5’P,©b0ZÀƒ®‡]òB,G&1ž…(×C6ûá|5Ç*¶
+xÄꔬ“E@LZ¯Ü6©@…ÈÒ€†‡%hO¸Z »Ã>L³²3ôuV.Ö’±ò/ë“pA–Üa·Ãø$D-Ù†âªú8²^o{Û1‰0d3­g‚Þö„Y6<’ÀîÆsqÍ Ðûpyü5õ‹€@¾fD*àÛÍÉLÒ¤”ñB3ÃўÓ4©ÀXˆغôWU—œnVÇ!/ËÄxgâŸME”ë+²ú¸ÚlÃ9::Ö‚4•CJ<‰I$ž ŽŠ+“¨ÁÑ7Ë
+Ø*¬·Ç ³þbj"—pamv,õK6.Èf±®´µÄ9 ³ZÕGc}´ÚŠPÛ­¢™1A™¾ g¹ªW+c€"= ¶Ý„ˆöňDõŒOZoB-äT¯7(¥{” ‡I&ööÙ D xÈ*™kÄ~Ã4f
+õ„ço.þ ,¤ïdþaH*à!o¯ß¾/Ò‚Þp-’Àe³_þ«`H¸kºIõD‰|æõeÆ°˜™œ$šgJ<¦y»ÙO>)ÁY†°’Ûh€=åÍÅãIaJN×ÃúÙ0´€§ ç5Æpê&ƒE|cR1ÎæÞéÐ8‰)L&¬xÅ#Ç‹â$¦K¬i\dˆ¶TÇYÑ °›£† ·=âíÍ*Çñ$Ú5ðÎSKÐÛžðâ:Õ€$Ræ ÷=àò;/%˜"(Xæ¸j$°Ç<?ì—…u  êž¢`Oy{8~øs˜dì+Nõt1õäLá•åL <ã&^-Ì%ºâ ¹ã$²XCQáùÃÑaÌ–`zÆóÍêýþp2ar•ª"Û°®. íQ?ÈÙ…#ç©dÏ<Pþ‚kVÛ¢¨¾¬»b‹† jQdaøuZ”¶B‹*b¹ÀPœ2B´B\¬·y+™4謒ѰLÐû¾/ž‡FDù{ý‡{à‡º´ Û#—)7l¸ †íïiÖr~;CmÛ!$›2AÚ՞ݬ‘’
+- ÒZFÂÚŠp,J°ê ZÀ`äçÃú°M…À,¥+Íäórø8l5 =ìP±ÝÖËi|„ êFBøã£ÆŽT„DsxvfHGVŒ›½Y™Nº²•iŒ) ì+cb;’2o!ZÀC~~ýâï¹/I&&!k ÑRRØXDñæa”ê%Æ$Ę²od ZÀž…ENz²c &𘟉YâÄà!¦Â™™ýpè"¡àuÃÙâDòðªÙ¯œŸF[TD‹”;D"Ì[¬/ë˜ú¤!+ë[ÍY÷ºpÛ8mK¡A¸ ÆAwÝ”SºØ8Šhñ/¬’Ò8ãÕêö–ã’É“å“$®¯ËÏØ Ú¯v1óhº€ì›5³iÒ³oŽ âEiÒn)‡w•½•mÙФ ì“–+ÂSZ´F¼Áü“»Iƒæ ë CÐû¾H÷=®Ö”ðËÒØ/3[•TÀ“.†˜¡ŒÒ7 3æê$%º›Ë!€¦DÇ mNN€îàBí´t_
+tb…”eÃ
+)Ð5¤„}$AƒâØ }j¦•Ñû¾/ôýþˆ3Jø#1PØM©¨D÷¬WÉ‘³ˆ¹,7MmP
+Ù놤·=áÉûaŸòºÊ{§¤ðKÛNSI%Õ=Î.\h;!­·C*ª—pÔèZGõ8.éP^`i”I(]^c&IcƒDdÙ„Þ÷•øi8¶wœfÆZPmŒS®L*àQ›}ª ‹€Àöœ<?=
+Üó8%î#…Œó^F¨Ñk_…Û»cn–a`aãŸC¹ò36Ù¿ÜìïÊV;‰‚­ºÆýžç³ØÆ Ù×üÂ#4Ù¤µÀNί5e¤ dH³Ó¸X`¡! ŠÐèˆÛÆ ô¾‡<Æ^áã›Ã)N ˜P¾Ú£¦GþmÿÚÂ9KXªKNM.¨ä…&z›Hš§ Ñøøª—¥L˜ñ¾C„ÆÁYéaû1ç`Ûö+ÙÂoj˜¥qñèn‰6âC„ j—±BÚ…ö0Bc*¡Åò
+†Ã…zH6œÜ2Ø”üâ3Ùoj*lšGŽ€s*V¼(Í3A†ˆŸ÷÷gß?ZœÓM‘ò,9w½ï!¡yö§‚…õMn¢ùüO;f»™ÌéÍ…xA ƒÕ¹ŸòŠÕ„?éÃìdôñvE¨¦¼D9Fü$õÑ*Dh…ÃÑMyE+Sžlvà8WòOSòwX
+VIP(ù
+†‘
+xF9Îc8¤vÕH<âj¸Ýrú3 A`ìñÓ¤ƒÌ}ù¤ˆ®>X Ž|m”ì1Ô°¬BxŠ¹“©Šb=£Á#ɾ$Õ‡Õ’­¢f¥žåm¥ØýDZ¢CR¶ݱ³”æm((
+1i@À*Ø5i‚ZûÒ€6(LÔÈ3
+"؃R_;æH
+¢GOÑžBΚD@àÃA˜¦ME´@…(ΚD°0³ÎB Tˆû5€ÃÀs•þ‚Ç‘³–ÃÛÿÂPò’þ?´)C)|Od=íá‚ I„~¥_’ðH‚FÇwšÐè Ðû3Zo±ÐÁ
+[|¶KÝ*åõ~˜_·é¨YR $S7çoÅ mÎߊ9O<µÝ—¿•X!ÙÊ°BþV )ã•$hhl/!5ÓÊè}ŸùšÆ+oŠ(l¢bè3*Ñ=ëÇ'¯òÌB*0pÞ‹‘bZÀ3(<g†GHÕ´ ÅzÆÞŸ>nÞÝË‘«eäÊ1 a¥žJz&V¤L¸üL(€_xÂQÚ0Ë JVbvYÊ–£hOjðD|Þ0Ÿ#² Ä.˜U¸B©€­Œ;’N>ôæ´—9],üœ  _nE>æ»gÍGlaø+kê¥l°æýêxÓËͼP4â]dëœñ®Кš$Ð#ùgjôzÛ`çÒfxÙ諾Vû™¾Ìv "þœ™~.Ž¢ðùˆ,´µŠÅ†ú†Õñ®×?¯ÇIÑ !íŸ9zÛƒžÔö(ÉŸaŸÙFŸ]lb’0›çi/ü\™ÐvÒã3®Ð\*Æãã+‚”$oz9ù΢@b‹Ïe’<ÞõòäÆÍbÄ ÁY⛣DÒÛE E=¶HmM”èõø¬SNb“ÿÔ¦ÆgwÉ眤ób™–1aæY9üœ}‚,ýª4r5ìžÌ}s²‚ÂüÉ ü,oW8q„7ib-U$ï  ¬Ö"Ò¼ø$×ÑD\Th~ì Ëû ïzDYe˜‘쎱Zy^þj³>N‡ë<é‘s’½ðŠUBo{Ì=ž´
+endobj
+959 0 obj
+5350
+endobj
+960 0 obj<</Type/Page/Parent 689 0 R/Contents 961 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 446 0 R>>endobj
+961 0 obj<</Length 962 0 R/Filter/FlateDecode>>stream
+xÍœ[oÇ…ßõ+Ad ^ïÌìõ!dÉNÄcÒQ€8+r%®ÍåÒ»KÉþ÷9U]Ý}ª†òM"8ê>ßö¥ººú2óý£¶㿶™wM?kη>={ôÉç˦7g¯švºµÍl>iÎ.šñh<Æ¿ž?>[½¼Z7»WÍÓÝõq}}<|töí£ÏÎIÍÕ´ò×W}ÔÏFãf6Yâÿ·Í¬Míáª9•
+‚ýëæ“Ï'MÛÊO£4³)~Ž~w2jñ_c¿F¸m³XŽ:ÏNÉðåî¸ÖÒv“Ñõ>»x<ú?ú_××–lf]7š¡Ù&íhiÖlŸ|>µFBãv=rq+=½\Ý×ûÜL$ß6Ó.²,9B¦¥™I‚fîGs_KŽú¯¿|þï\m›¶_Œ&aéq²Þo7‡ÃfwA¬ ¶ {ÒV²†É"êÓÍñP $d Ë!«ë‹Â Õ¶éºYl`„›ë‹ÝÛRÖ2“tÕÉ"ç˳\1_Ä‚ä ñäü|}¨%!á¶éÛ… znØLŽq
+›‰ÄîçñaÔãüruýšŠÂR±ý¹X—Å2 @<œY&fÛ‹±8Hâ 7e@WÃ#5X³¥ ³ ?`ݨZ¬e1è(Ë0 /×¹—XÓ÷£>”$aŒ:Y$Ö¯¾’+cˆæ°>¿ÝoŽ?æ°¤ùT\¦#%ø€t±Y]í^ë ×a%¿x$ùÁ3]Î0jlð¤<˜•§Ë9ýéêt!ã-ëç2^‡Ìð·ÝÛ\wÒ`̉q
+]¬Gߎaé‘Ás‰€ÀN+’©‘a[ì•”b¯²aà9–aÀÁXwÈ°lü}¡K§ Ru%Óëu)·³E%$Ù6\hÖ[r$œÕ›.¤‘î,=žoÕcט†”Ò§rgÌ•$£#èl·»:¬2p~÷õCèlÿ–°^¨WÅh›eÇ3$#à’ Zƒ –/.Weo†Dhбìå:„¥GĦv i¤KÌzB†FDîÛ¿H§àÖÞƒLÇ%dþÑ»«|½^”ÉþO¨[täý–\¡[ŒÖ´‰çà
+Ìa½Ç_ãq32^Ž Ÿü—ÐØ}-»Q½>PoŒÅÒcÄe•Rë1!õÇ€1è´½l ¸23–âù5ÎU®®t³¯ô ©elÉ)·ce|„=½Úà-í9Cü}zÆwJ‡ W¶±t:OµSºe¼? ‡^<IÐ
+ãñ´XzD|±y½÷ÍIR€ôB™ räÔ›˜,
+6º`”\¡œ!‚Nõ ¤Z)Å
+’3D„÷Á$ 8¹ˆå0n„x{ü ‡¯Áq'º¬Y[} Ô}>êÁ:-X é5Rsúd€B¸K:1cÙ’sK—w>¹·7¹«Y‚Û:BÎÜO,“a ‹1n„ðÆ-©dH<ï–!2¼;g¡˜®LBcäæ]!ç;÷ôß7¡w/AÈž²\NdI¨{\.ÓN¬¼‘õ8ƒAÃ)ÌôÉ’„ÓÝíŸ,ʆ@:±$Ù˜uKå {‹¤KÒy•Ë‘¡á-©Ê
+ŸÛÙª“ÉC¨Í•/7 {Åïy“
+ž!]hŽŒÅ°÷ß°Z}ÈÛË8Á©§²8ç*Q„þ]Œ’ÎQðI?‹ã‚`µ(†Ñµ*ctÈÿ¾Û\Ó³ªÄ˜ä<…)5–`u]m©( ÇqÔÒÉ õõ¾0IĆä#™üó–õϼ!V™‘¼¨â)92x9G"˜öìB)3œ’JâñŸ\KŽøK±Øà½_E˜8ËÓÙšþm–‡#—E|k«[oo&ÆÀ[6,V{È]3UX›ü0 ¥ÆßçûÏU"æ"¯Ð°ÞˆWoU¶C:IÉÏ2.V_Eb/²‰áŠ‘’#!Y­† ¸1X77z{¯Ô‰»ÿ‰è§¼o«×NÇ K>:À™“ïtëÅ k§ä/.Ë'’ªB¿.‹6J1ì§Sbüñz ˆ½èç4IR£úxYõ¤
+|•.;ã¾Òo[\Mò ²t{‡^˜Á­ÉY¶h÷Áp us"0«Cü—Jaør*ÎЈ£óÁ@²Ç¹ô÷·›Ã¦~ë„´
+endobj
+962 0 obj
+5308
+endobj
+963 0 obj<</Type/Page/Parent 689 0 R/Contents 964 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 492 0 R>>endobj
+964 0 obj<</Length 965 0 R/Filter/FlateDecode>>stream
+xÍœ]sDZ†ïõ+P¹8ñ¹0„° 7)™’rtÊú8"]Î]
+! Ð
+DÊóýv¹ÙõnãéT|Û=ŽˆñóÃþæf}&šN†Ó‡ó›é̹Áx<ìz7Ð rƒñ7}™70ý¢“±>yAE8;¬—'rÂò“™˜Œ1v?Väõru½Ù' ¡8Á$b29r.wÇSß~¤CûfhW™ Ž”g«:ýé˜A,h¬QŠŸ*ˆ åî²g
+Œ®‘àæctÔʾÿ»ßìȼ¬Ö öÍbMÎn6yûÚr;˜ŒºhšŒŽœÓ>#X„>Š{ \ B”ÎÎ*0Z l”\ 2RGÏGüì¨<»>ƒÑ`Š>oi^PŸiF¸ûLÓ÷m‹…ô&¤Ûãõrw·¼É–$œ}:ŠÕH÷+Hêzû®H †+¸;WÆÐ#³ÙƒE@,Ä쑨"ö_RÂM›EÅI*Žë¿¬ë» ?¨(¹ÿªHFò
+ò#¨˜b*åX¬c.ãºg$lÅxq8ì:-·Ð<NZ³†¦l;ôàÜ”zAMÙÎpÓ7ešÒôˆpxvÖ§¦¬ç¿Oëmî„$ƒu*æ v?VãÝþf³Ú¬Kc’R\BžÉq€ÆÃMIiJñaO°‘¿ú¸¹YkcN$zÔÆD›¶c×5uö—ÛS/¨=ò|0Z g¡=M¡`}jÏŠðãõ²Ÿ
+ÄZ\­O–FmdùØþ$.5q.5i®™@/È¥&2±ô!b\ÊôHÁ"XoÄHð«"$Ð “!v?BlM¤o ŠGHØuuÉäÈù¸/®I*0›0ðpU262~Üì.÷ŸJ´"¥$ª#q#DZ‘³øùéëÒ4Y}à…Á¶uN
+¢hx¢\ bÂÀÊJp0̆¶Ê"ç¿ò±léEÂxqOÛ茄Q¤r³ÏuÙ®±ÁMzÙ´“n²Le˜.ÌQŸ¾lm»OJÉÊ/{ìÙõòöTúÉ‘Ï‘`8–ÝŽ,&fCf;ÀBBãv;þgÿ)HƒÉµö}4{»eEƒ$è$Xdg1`>RYáÙªô2’
+éê2-ðU0d¬Â»»Ãúæ—ü$,”þ.©¸Ãäãö\Y‡®;šG_Ë"¥7m¿UÆb 0­ =/ˆ(ZŠ“©`Håº)'ÐÓ‡$ ÓD/ú Cg
+¦­1”I­ôOÙLX#ÛÞÖ‡õOw›ãæTö;I 6Yü¹N€ãz¿^^"_Ñ̵}´•Ç{#‡Á²Ø¼ÕW­£fE˜NÄ18jâ”ßXTT§LH­_ñA`›ñTs°ôzA¶Aãs0؆úÕ6˜Ï$X0ÀáÖƒŠÖÕ5:‡0hDü„½ÊÍÇjy/I €†åºÈÌaZ=M¸X=B·˘1rXÍYˆø9–é›Ç9búS¢9‰ÂÁñ¸F™Qe2Ì" Ð{ч¨A)¬c!‡9<ð‘±Ka]¥ú’ÛTÁ{q8HwÊ5%Ô òÞFV[CÏFÒÔ§SXÌG|4V‰ÔÑ!׫”L‘BBƒ[ÖÛýX‰Ë=-K“J:ÀDšˆf«J¿%ôiŠáôV VâG,RO~í„Ôhê‘NË
+DÖG,^å¡›e€ ^bèfH.!:
+B*ñ[Í"Ã
+DÆ¥;,ÅBq]|UŒ1«þ°Tò^92FîûÆœßþ¬s flbê½xaº(¾;Á–\5òÒ¸TTÈä%×sønøñz½Ë E8’£Æó{
+X‹êS¿‰^+Ì«!¸œ‘Ó16)0#”å`'·ÛpV¶0Hëé\Äéí¾×»,›Eâ²Nê¹€g|(™&I
+K
+ ¤èSÏ°ãýË~Q…U``…· Œ„­ãÉh–G–ÉP)#Œ{+PA®7?Û®1IÙwý-8.öYuéMW/Èq14ú| ©V˜ËVª
+DÈ‹4°õRŠ#É& çXÈa •ø4¤gXÈègŬ’ '4؋ļ¨ìC-2ÌÜûcò›:š&ɤ*]á Ù*MÂ~N6ºÎ½2!m6;„ÝyaX~Dç91)q[}1ˇBe:(ÛáýCº0ËðƒNóCÞ}; ™¥ÛŽ¥; 5SöldÒè¹qø¤ÖÌ*c·c-~ØÉ!½~õLwr-¬XŠÝ”ô:T® 뤉}\]rˆù€iërþ…•è%úŠç:rª÷5äå¼üT2çÉ­f¶ÉèÈ¡÷5H$VÕ\U@Å@™k@З=Á ‘ñÛWÍ–e™,ØÈ‘ 1n„ÜiºÁ:P𽈥ì+¹@¤À®pLú#ìñÙgæÎV58=Y2½èû í64cßmàñeW- PÂlíÊ »íÏ>àUÂåJsc4Ø×URœ FÂöZ¿ß /M÷c/öd%;ŒÞHÏú€žÞ
+º,Çk¿Þ¬ûãþcqjÝÎL š„³
+Ó×áýz»çãB½Í€SÊò£.¨U&$¦' ²¬Ö—xÅ«ï[E'¹WOÌtÛCΖ77ص|‹!Cî×ÆõïÒbÓx:N» ”Òf¦×,‚õh²Jÿf¹í U0¶d5ÎhWjÙ$Þ¬z
+endobj
+965 0 obj
+5148
+endobj
+966 0 obj<</Type/Page/Parent 689 0 R/Contents 967 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 513 0 R>>endobj
+967 0 obj<</Length 968 0 R/Filter/FlateDecode>>stream
+xÍšßsÓFÇßóWè1Ì´Šõ[zê„Ð@fÚI!nyÉ‹±˜Úø¡ÿ}¿{Ú=í­Ê”Pf
+²îûñjwooïä'I4ÁŸ$ªÒ(+£ùúäñôä첉ÒI4}%E'QYåÑtMâÉŸÎO§³W«6ê^GÝfßnö»GÓw'¿NOh€%ô¯OO²2žDeÞàÿ먤¿ú‹UtC_dÛ7ÑÙe% }5¬) |úÞ$sü‰øëo5i\„ð²þܵ[Q+Á_™Äi(ïï f›…èµ€<µÇ áé¶;¼÷ ¥£(ã<4ØÑC\=ñr%X#bi\y?À˜p¾ZuóÙ~ÙmÈ‘y—È€éâ4þÿÿ«jŽ]ŸY‹%1Ü'Cêqø ~F4MŒpk…„xÑøO‰à} Fiß·v\Ìæo—›7ô$Mèû8ï¾ð§¦)
+§N(Ü…rjšá¦™SÊ¥ƒ†æDF)­ Ì´Œ«Ín?[­\J‰oµšœ›à{à‹ÒLi@h2šÚZªÒëå›ÃÖ§x™|ß(™€LX.Yî.T@’ nŽ’˜,gDÁ šAi>b\möÛnq˜Ë/RT·‡NS—¾¡kŠ¦„aìšþbpMÑT¸9rMºFI6A\3f¼h?–Ûv-ËRºø\S5º05M=ñ‹»P~©$Lf¼Â€d’£
+ô8&W aÚîö(h~ê*MÝš«jhÇ”ŠâÎC” ‚V™ÂBÈõaOŽH(/,aM0Ðg¸UŠŠcá.T0*úÔ$i9cÐÀ h2Šà
+j1bü¶\/÷®|¹Ö
+ýÓ£¼þÔYªh1ürS¸ å¢/7•ñT1¤¦&ôÞ1Pßç«ÃNú—Ë99;­mT &QyËz2wÁ¾9»,¸Í¥QÔ{êºx;{¿:U%_caX|ÛB°zË\TšuT'qø¶\ߤPJcê3ø¾%\¬–(³Ñ:ªÔV`1Ï®_N¯É­xÒœuä}Rõ%ÚÍpwác«¶0EbªC«µ}Ð".Ä+4¨O¸<îjBJ…ýÁ*ä}­hlœ4É`¥¬cîB·Ìè¼GÊ¢Sóiëöw#ÐþaÒZÈFˆgÝä›Rôµ7 õ|Ÿü¨˜Ï6BèwpbA‚Ø` Ó&È
+J¹
+Ì®‘7–»Ý¡õ ®–arc_DA qP0àäîmë[L-"«h:j„ °O£ë¥–‚}ƒ‰¬ °ÛSåX­‡ßÆ%2ÀR>¶[ÚŒß>çj-æŽ=ìC5ÇR-ZzÏj XÉ1³µ[d€µå°ký-$/©`æZˆn©hI);U„…:Bˆ/´£Y#j }Kå™”¦êñFÆnÄêRoRó2‡RÊ…»PåÅ1<wpy¿&ˆ¾ Ñ*#Ĩ±a ’‰[h´ž‰ÖˆE'®Óš¾àÀùš ,Bõ5nÕЖcÉxd‚Z›֯à‰RÁ
+¼KÀœ<À2Þo—x;:T¥Ç-¹!‡XÎb»Ä óNQB*.?sxÀÓÝmVÝÌÏ-½~>— ° »nû·:-ÖJ*´ žKXN¤VP-Ã,IèÄ5„0×BtÔ2š¬®+Ñ®‘ÒOµ]¿iÀ;æ/œkjîùiGÇ~9ª8z¸ƒ¹þ‚g>öËqþž<;ö–;£ XL·d˜¿Jƒ„›Ð«Ê€À÷-Á·ùtS2@2·(¸ç“%ŽXÊù|Þî|=×B`**K-€,ÄõGÞ¥B¢M*J´À`)»î°û.F i¹ù¬12ÀbæÝb€( 9ïÀáZÈÇåLžG«ÀÀK
+l—ÿCùýº$?2:ŒgÖPÃÅmS1Ä3CclÚ&T3ïT#‘àG9 _1}Ó˜a¡TTúV`‡`­)ª¼h(öµa0Ö2[wí+w€F»‘/ë;øô?2!©é¬ZBâ.TH°Í2å[ðð=BÆ
+KÁOB—ô‚Päj³h?¹5ëßß}îÙŽÜ«ÝOÕ†_(º¹_(Ö˜‘îÇ‘øõæeÞÿLåôæü÷ÇçÑÛî½æxÒÍô#ÿ#¤,I£Ÿ+úYåâtù‘—Ùç'ÿãø°Ãendstream
+endobj
+968 0 obj
+2396
+endobj
+969 0 obj<</Count 16/First 970 0 R/Last 1122 0 R>>endobj
+970 0 obj<</Parent 969 0 R/Title(Table of Contents)/Dest[957 0 R/XYZ null 756 null]/Next 971 0 R>>endobj
+971 0 obj<</Parent 969 0 R/Count -19/First 972 0 R/Last 990 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[693 0 R/XYZ null 750 null]/Prev 970 0 R/Next 991 0 R>>endobj
+972 0 obj<</Parent 971 0 R/Title(1.1. Step 0: Read the man pages)/Dest[693 0 R/XYZ null 726 null]/Next 973 0 R>>endobj
+973 0 obj<</Parent 971 0 R/Title(1.2. Step 1: Building the Binaries)/Dest[693 0 R/XYZ null 589 null]/Prev 972 0 R/Next 974 0 R>>endobj
+974 0 obj<</Parent 971 0 R/Title(1.3. Step 2: The all important step)/Dest[693 0 R/XYZ null 174 null]/Prev 973 0 R/Next 975 0 R>>endobj
+975 0 obj<</Parent 971 0 R/Title(1.4. Step 3: Create the smb configuration file.)/Dest[696 0 R/XYZ null 735 null]/Prev 974 0 R/Next 976 0 R>>endobj
+976 0 obj<</Parent 971 0 R/Title(1.5. Step 4: Test your config file with testparm)/Dest[696 0 R/XYZ null 375 null]/Prev 975 0 R/Next 977 0 R>>endobj
+977 0 obj<</Parent 971 0 R/Title(1.6. Step 5: Starting the smbd and nmbd)/Dest[696 0 R/XYZ null 264 null]/Prev 976 0 R/Next 978 0 R>>endobj
+978 0 obj<</Parent 971 0 R/Title(1.6.1. Step 5a: Starting from inetd.conf)/Dest[699 0 R/XYZ null 750 null]/Prev 977 0 R/Next 979 0 R>>endobj
+979 0 obj<</Parent 971 0 R/Title(1.6.2. Step 5b. Alternative: starting it as a daemon)/Dest[699 0 R/XYZ null 262 null]/Prev 978 0 R/Next 980 0 R>>endobj
+980 0 obj<</Parent 971 0 R/Title(1.7. Step 6: Try listing the shares available on your server)/Dest[702 0 R/XYZ null 682 null]/Prev 979 0 R/Next 981 0 R>>endobj
+981 0 obj<</Parent 971 0 R/Title(1.8. Step 7: Try connecting with the unix client)/Dest[702 0 R/XYZ null 505 null]/Prev 980 0 R/Next 982 0 R>>endobj
+982 0 obj<</Parent 971 0 R/Title(1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[702 0 R/XYZ null 328 null]/Prev 981 0 R/Next 983 0 R>>endobj
+983 0 obj<</Parent 971 0 R/Title(1.10. What If Things Don't Work?)/Dest[705 0 R/XYZ null 750 null]/Prev 982 0 R/Next 984 0 R>>endobj
+984 0 obj<</Parent 971 0 R/Title(1.10.1. Diagnosing Problems)/Dest[705 0 R/XYZ null 573 null]/Prev 983 0 R/Next 985 0 R>>endobj
+985 0 obj<</Parent 971 0 R/Title(1.10.2. Scope IDs)/Dest[705 0 R/XYZ null 501 null]/Prev 984 0 R/Next 986 0 R>>endobj
+986 0 obj<</Parent 971 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[705 0 R/XYZ null 403 null]/Prev 985 0 R/Next 987 0 R>>endobj
+987 0 obj<</Parent 971 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[708 0 R/XYZ null 750 null]/Prev 986 0 R/Next 988 0 R>>endobj
+988 0 obj<</Parent 971 0 R/Title(1.10.5. Locking)/Dest[708 0 R/XYZ null 639 null]/Prev 987 0 R/Next 989 0 R>>endobj
+989 0 obj<</Parent 971 0 R/Title(1.10.6. Mapping Usernames)/Dest[708 0 R/XYZ null 171 null]/Prev 988 0 R/Next 990 0 R>>endobj
+990 0 obj<</Parent 971 0 R/Title(1.10.7. Other Character Sets)/Dest[711 0 R/XYZ null 750 null]/Prev 989 0 R>>endobj
+991 0 obj<</Parent 969 0 R/Count -18/First 992 0 R/Last 1009 0 R/Title(Chapter 2. Integrating MS Windows networks with Samba)/Dest[714 0 R/XYZ null 750 null]/Prev 971 0 R/Next 1010 0 R>>endobj
+992 0 obj<</Parent 991 0 R/Title(2.1. Agenda)/Dest[714 0 R/XYZ null 702 null]/Next 993 0 R>>endobj
+993 0 obj<</Parent 991 0 R/Title(2.2. Name Resolution in a pure Unix/Linux world)/Dest[714 0 R/XYZ null 459 null]/Prev 992 0 R/Next 994 0 R>>endobj
+994 0 obj<</Parent 991 0 R/Title(2.2.1. /etc/hosts)/Dest[714 0 R/XYZ null 321 null]/Prev 993 0 R/Next 995 0 R>>endobj
+995 0 obj<</Parent 991 0 R/Title(2.2.2. /etc/resolv.conf)/Dest[717 0 R/XYZ null 431 null]/Prev 994 0 R/Next 996 0 R>>endobj
+996 0 obj<</Parent 991 0 R/Title(2.2.3. /etc/host.conf)/Dest[717 0 R/XYZ null 281 null]/Prev 995 0 R/Next 997 0 R>>endobj
+997 0 obj<</Parent 991 0 R/Title(2.2.4. /etc/nsswitch.conf)/Dest[720 0 R/XYZ null 750 null]/Prev 996 0 R/Next 998 0 R>>endobj
+998 0 obj<</Parent 991 0 R/Title(2.3. Name resolution as used within MS Windows networking)/Dest[720 0 R/XYZ null 264 null]/Prev 997 0 R/Next 999 0 R>>endobj
+999 0 obj<</Parent 991 0 R/Title(2.3.1. The NetBIOS Name Cache)/Dest[723 0 R/XYZ null 206 null]/Prev 998 0 R/Next 1000 0 R>>endobj
+1000 0 obj<</Parent 991 0 R/Title(2.3.2. The LMHOSTS file)/Dest[726 0 R/XYZ null 656 null]/Prev 999 0 R/Next 1001 0 R>>endobj
+1001 0 obj<</Parent 991 0 R/Title(2.3.3. HOSTS file)/Dest[729 0 R/XYZ null 367 null]/Prev 1000 0 R/Next 1002 0 R>>endobj
+1002 0 obj<</Parent 991 0 R/Title(2.3.4. DNS Lookup)/Dest[729 0 R/XYZ null 256 null]/Prev 1001 0 R/Next 1003 0 R>>endobj
+1003 0 obj<</Parent 991 0 R/Title(2.3.5. WINS Lookup)/Dest[732 0 R/XYZ null 750 null]/Prev 1002 0 R/Next 1004 0 R>>endobj
+1004 0 obj<</Parent 991 0 R/Title(2.4. How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[732 0 R/XYZ null 525 null]/Prev 1003 0 R/Next 1005 0 R>>endobj
+1005 0 obj<</Parent 991 0 R/Title(2.5. MS Windows security options and how to configure Samba for seemless integration)/Dest[735 0 R/XYZ null 629 null]/Prev 1004 0 R/Next 1006 0 R>>endobj
+1006 0 obj<</Parent 991 0 R/Title(2.5.1. Use MS Windows NT as an authentication server)/Dest[738 0 R/XYZ null 577 null]/Prev 1005 0 R/Next 1007 0 R>>endobj
+1007 0 obj<</Parent 991 0 R/Title(2.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[738 0 R/XYZ null 300 null]/Prev 1006 0 R/Next 1008 0 R>>endobj
+1008 0 obj<</Parent 991 0 R/Title(2.5.3. Configure Samba as an authentication server)/Dest[741 0 R/XYZ null 590 null]/Prev 1007 0 R/Next 1009 0 R>>endobj
+1009 0 obj<</Parent 991 0 R/Title(2.6. Conclusions)/Dest[744 0 R/XYZ null 635 null]/Prev 1008 0 R>>endobj
+1010 0 obj<</Parent 969 0 R/Count -3/First 1011 0 R/Last 1013 0 R/Title(Chapter 3. Configuring PAM for distributed but centrally managed authentication)/Dest[747 0 R/XYZ null 750 null]/Prev 991 0 R/Next 1014 0 R>>endobj
+1011 0 obj<</Parent 1010 0 R/Title(3.1. Samba and PAM)/Dest[747 0 R/XYZ null 702 null]/Next 1012 0 R>>endobj
+1012 0 obj<</Parent 1010 0 R/Title(3.2. Distributed Authentication)/Dest[750 0 R/XYZ null 175 null]/Prev 1011 0 R/Next 1013 0 R>>endobj
+1013 0 obj<</Parent 1010 0 R/Title(3.3. PAM Configuration in smb.conf)/Dest[753 0 R/XYZ null 722 null]/Prev 1012 0 R>>endobj
+1014 0 obj<</Parent 969 0 R/Count -2/First 1015 0 R/Last 1016 0 R/Title(Chapter 4. Hosting a Microsoft Distributed File System tree on Samba)/Dest[756 0 R/XYZ null 750 null]/Prev 1010 0 R/Next 1017 0 R>>endobj
+1015 0 obj<</Parent 1014 0 R/Title(4.1. Instructions)/Dest[756 0 R/XYZ null 702 null]/Next 1016 0 R>>endobj
+1016 0 obj<</Parent 1014 0 R/Title(4.1.1. Notes)/Dest[759 0 R/XYZ null 669 null]/Prev 1015 0 R>>endobj
+1017 0 obj<</Parent 969 0 R/Count -9/First 1018 0 R/Last 1026 0 R/Title(Chapter 5. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[762 0 R/XYZ null 750 null]/Prev 1014 0 R/Next 1027 0 R>>endobj
+1018 0 obj<</Parent 1017 0 R/Title(5.1. Viewing and changing UNIX permissions using the NT security dialogs)/Dest[762 0 R/XYZ null 702 null]/Next 1019 0 R>>endobj
+1019 0 obj<</Parent 1017 0 R/Title(5.2. How to view file security on a Samba share)/Dest[762 0 R/XYZ null 521 null]/Prev 1018 0 R/Next 1020 0 R>>endobj
+1020 0 obj<</Parent 1017 0 R/Title(5.3. Viewing file ownership)/Dest[762 0 R/XYZ null 344 null]/Prev 1019 0 R/Next 1021 0 R>>endobj
+1021 0 obj<</Parent 1017 0 R/Title(5.4. Viewing file or directory permissions)/Dest[765 0 R/XYZ null 682 null]/Prev 1020 0 R/Next 1022 0 R>>endobj
+1022 0 obj<</Parent 1017 0 R/Title(5.4.1. File Permissions)/Dest[765 0 R/XYZ null 439 null]/Prev 1021 0 R/Next 1023 0 R>>endobj
+1023 0 obj<</Parent 1017 0 R/Title(5.4.2. Directory Permissions)/Dest[765 0 R/XYZ null 183 null]/Prev 1022 0 R/Next 1024 0 R>>endobj
+1024 0 obj<</Parent 1017 0 R/Title(5.5. Modifying file or directory permissions)/Dest[768 0 R/XYZ null 669 null]/Prev 1023 0 R/Next 1025 0 R>>endobj
+1025 0 obj<</Parent 1017 0 R/Title(5.6. Interaction with the standard Samba create mask parameters)/Dest[768 0 R/XYZ null 228 null]/Prev 1024 0 R/Next 1026 0 R>>endobj
+1026 0 obj<</Parent 1017 0 R/Title(5.7. Interaction with the standard Samba file attribute mapping)/Dest[774 0 R/XYZ null 590 null]/Prev 1025 0 R>>endobj
+1027 0 obj<</Parent 969 0 R/Count -15/First 1028 0 R/Last 1042 0 R/Title(Chapter 6. Printing Support in Samba 2.2.x)/Dest[777 0 R/XYZ null 750 null]/Prev 1017 0 R/Next 1043 0 R>>endobj
+1028 0 obj<</Parent 1027 0 R/Title(6.1. Introduction)/Dest[777 0 R/XYZ null 726 null]/Next 1029 0 R>>endobj
+1029 0 obj<</Parent 1027 0 R/Title(6.2. Configuration)/Dest[777 0 R/XYZ null 298 null]/Prev 1028 0 R/Next 1030 0 R>>endobj
+1030 0 obj<</Parent 1027 0 R/Title(6.2.1. Creating [print$])/Dest[780 0 R/XYZ null 689 null]/Prev 1029 0 R/Next 1031 0 R>>endobj
+1031 0 obj<</Parent 1027 0 R/Title(6.2.2. Setting Drivers for Existing Printers)/Dest[783 0 R/XYZ null 446 null]/Prev 1030 0 R/Next 1032 0 R>>endobj
+1032 0 obj<</Parent 1027 0 R/Title(6.2.3. DeviceModes and New Printers)/Dest[786 0 R/XYZ null 682 null]/Prev 1031 0 R/Next 1033 0 R>>endobj
+1033 0 obj<</Parent 1027 0 R/Title(6.2.4. Support a large number of printers)/Dest[786 0 R/XYZ null 399 null]/Prev 1032 0 R/Next 1034 0 R>>endobj
+1034 0 obj<</Parent 1027 0 R/Title(6.2.5. Adding New Printers via the Windows NT APW)/Dest[789 0 R/XYZ null 680 null]/Prev 1033 0 R/Next 1035 0 R>>endobj
+1035 0 obj<</Parent 1027 0 R/Title(6.2.6. Samba and Printer Ports)/Dest[789 0 R/XYZ null 397 null]/Prev 1034 0 R/Next 1036 0 R>>endobj
+1036 0 obj<</Parent 1027 0 R/Title(6.3. The Imprints Toolset)/Dest[789 0 R/XYZ null 207 null]/Prev 1035 0 R/Next 1037 0 R>>endobj
+1037 0 obj<</Parent 1027 0 R/Title(6.3.1. What is Imprints?)/Dest[792 0 R/XYZ null 709 null]/Prev 1036 0 R/Next 1038 0 R>>endobj
+1038 0 obj<</Parent 1027 0 R/Title(6.3.2. Creating Printer Driver Packages)/Dest[792 0 R/XYZ null 571 null]/Prev 1037 0 R/Next 1039 0 R>>endobj
+1039 0 obj<</Parent 1027 0 R/Title(6.3.3. The Imprints server)/Dest[792 0 R/XYZ null 473 null]/Prev 1038 0 R/Next 1040 0 R>>endobj
+1040 0 obj<</Parent 1027 0 R/Title(6.3.4. The Installation Client)/Dest[792 0 R/XYZ null 362 null]/Prev 1039 0 R/Next 1041 0 R>>endobj
+1041 0 obj<</Parent 1027 0 R/Title(6.4. Migration to from Samba 2.0.x to 2.2.x)/Dest[795 0 R/XYZ null 455 null]/Prev 1040 0 R/Next 1042 0 R>>endobj
+1042 0 obj<</Parent 1027 0 R/Title(6.4.1. Parameters in smb.conf\(5\) for Backwards Compatibility)/Dest[798 0 R/XYZ null 703 null]/Prev 1041 0 R>>endobj
+1043 0 obj<</Parent 969 0 R/Count -8/First 1044 0 R/Last 1051 0 R/Title(Chapter 7. Printing with CUPS in Samba 2.2.x)/Dest[801 0 R/XYZ null 750 null]/Prev 1027 0 R/Next 1052 0 R>>endobj
+1044 0 obj<</Parent 1043 0 R/Title(7.1. Printing with CUPS in Samba 2.2.x)/Dest[801 0 R/XYZ null 726 null]/Next 1045 0 R>>endobj
+1045 0 obj<</Parent 1043 0 R/Title(7.2. Configuring smb.conf for CUPS)/Dest[801 0 R/XYZ null 628 null]/Prev 1044 0 R/Next 1046 0 R>>endobj
+1046 0 obj<</Parent 1043 0 R/Title(7.3. Using CUPS as a mere spooling print server -- "raw" printing with vendor drivers download)/Dest[801 0 R/XYZ null 273 null]/Prev 1045 0 R/Next 1047 0 R>>endobj
+1047 0 obj<</Parent 1043 0 R/Title(7.4. CUPS as a network PostScript RIP -- CUPS drivers working on server, Adobe PostScript driver with CUPS-PPDs downloaded to clients)/Dest[804 0 R/XYZ null 750 null]/Prev 1046 0 R/Next 1048 0 R>>endobj
+1048 0 obj<</Parent 1043 0 R/Title(7.5. Windows Terminal Servers \(WTS\) as CUPS clients)/Dest[804 0 R/XYZ null 200 null]/Prev 1047 0 R/Next 1049 0 R>>endobj
+1049 0 obj<</Parent 1043 0 R/Title(7.6. Setting up CUPS for driver download)/Dest[807 0 R/XYZ null 629 null]/Prev 1048 0 R/Next 1050 0 R>>endobj
+1050 0 obj<</Parent 1043 0 R/Title(7.7. Sources of CUPS drivers / PPDs)/Dest[810 0 R/XYZ null 750 null]/Prev 1049 0 R/Next 1051 0 R>>endobj
+1051 0 obj<</Parent 1043 0 R/Title(7.7.1. cupsaddsmb)/Dest[810 0 R/XYZ null 230 null]/Prev 1050 0 R>>endobj
+1052 0 obj<</Parent 969 0 R/Count -3/First 1053 0 R/Last 1055 0 R/Title(Chapter 8. security = domain in Samba 2.x)/Dest[819 0 R/XYZ null 750 null]/Prev 1043 0 R/Next 1056 0 R>>endobj
+1053 0 obj<</Parent 1052 0 R/Title(8.1. Joining an NT Domain with Samba 2.2)/Dest[819 0 R/XYZ null 726 null]/Next 1054 0 R>>endobj
+1054 0 obj<</Parent 1052 0 R/Title(8.2. Samba and Windows 2000 Domains)/Dest[822 0 R/XYZ null 379 null]/Prev 1053 0 R/Next 1055 0 R>>endobj
+1055 0 obj<</Parent 1052 0 R/Title(8.3. Why is this better than security = server?)/Dest[822 0 R/XYZ null 162 null]/Prev 1054 0 R>>endobj
+1056 0 obj<</Parent 969 0 R/Count -14/First 1057 0 R/Last 1070 0 R/Title(Chapter 9. How to Configure Samba 2.2 as a Primary Domain Controller)/Dest[828 0 R/XYZ null 750 null]/Prev 1052 0 R/Next 1071 0 R>>endobj
+1057 0 obj<</Parent 1056 0 R/Title(9.1. Prerequisite Reading)/Dest[828 0 R/XYZ null 702 null]/Next 1058 0 R>>endobj
+1058 0 obj<</Parent 1056 0 R/Title(9.2. Background)/Dest[828 0 R/XYZ null 604 null]/Prev 1057 0 R/Next 1059 0 R>>endobj
+1059 0 obj<</Parent 1056 0 R/Title(9.3. Configuring the Samba Domain Controller)/Dest[831 0 R/XYZ null 722 null]/Prev 1058 0 R/Next 1060 0 R>>endobj
+1060 0 obj<</Parent 1056 0 R/Title(9.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[834 0 R/XYZ null 603 null]/Prev 1059 0 R/Next 1061 0 R>>endobj
+1061 0 obj<</Parent 1056 0 R/Title(9.4.1. Manual Creation of Machine Trust Accounts)/Dest[834 0 R/XYZ null 228 null]/Prev 1060 0 R/Next 1062 0 R>>endobj
+1062 0 obj<</Parent 1056 0 R/Title(9.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[837 0 R/XYZ null 355 null]/Prev 1061 0 R/Next 1063 0 R>>endobj
+1063 0 obj<</Parent 1056 0 R/Title(9.4.3. Joining the Client to the Domain)/Dest[840 0 R/XYZ null 750 null]/Prev 1062 0 R/Next 1064 0 R>>endobj
+1064 0 obj<</Parent 1056 0 R/Title(9.5. Common Problems and Errors)/Dest[840 0 R/XYZ null 388 null]/Prev 1063 0 R/Next 1065 0 R>>endobj
+1065 0 obj<</Parent 1056 0 R/Title(9.6. System Policies and Profiles)/Dest[846 0 R/XYZ null 735 null]/Prev 1064 0 R/Next 1066 0 R>>endobj
+1066 0 obj<</Parent 1056 0 R/Title(9.7. What other help can I get?)/Dest[849 0 R/XYZ null 682 null]/Prev 1065 0 R/Next 1067 0 R>>endobj
+1067 0 obj<</Parent 1056 0 R/Title(9.8. Domain Control for Windows 9x/ME)/Dest[855 0 R/XYZ null 299 null]/Prev 1066 0 R/Next 1068 0 R>>endobj
+1068 0 obj<</Parent 1056 0 R/Title(9.8.1. Configuration Instructions: Network Logons)/Dest[858 0 R/XYZ null 273 null]/Prev 1067 0 R/Next 1069 0 R>>endobj
+1069 0 obj<</Parent 1056 0 R/Title(9.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[861 0 R/XYZ null 478 null]/Prev 1068 0 R/Next 1070 0 R>>endobj
+1070 0 obj<</Parent 1056 0 R/Title(9.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[873 0 R/XYZ null 270 null]/Prev 1069 0 R>>endobj
+1071 0 obj<</Parent 969 0 R/Count -8/First 1072 0 R/Last 1079 0 R/Title(Chapter 10. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[882 0 R/XYZ null 750 null]/Prev 1056 0 R/Next 1080 0 R>>endobj
+1072 0 obj<</Parent 1071 0 R/Title(10.1. Prerequisite Reading)/Dest[882 0 R/XYZ null 702 null]/Next 1073 0 R>>endobj
+1073 0 obj<</Parent 1071 0 R/Title(10.2. Background)/Dest[882 0 R/XYZ null 617 null]/Prev 1072 0 R/Next 1074 0 R>>endobj
+1074 0 obj<</Parent 1071 0 R/Title(10.3. What qualifies a Domain Controller on the network?)/Dest[882 0 R/XYZ null 192 null]/Prev 1073 0 R/Next 1075 0 R>>endobj
+1075 0 obj<</Parent 1071 0 R/Title(10.3.1. How does a Workstation find its domain controller?)/Dest[885 0 R/XYZ null 722 null]/Prev 1074 0 R/Next 1076 0 R>>endobj
+1076 0 obj<</Parent 1071 0 R/Title(10.3.2. When is the PDC needed?)/Dest[885 0 R/XYZ null 584 null]/Prev 1075 0 R/Next 1077 0 R>>endobj
+1077 0 obj<</Parent 1071 0 R/Title(10.4. Can Samba be a Backup Domain Controller?)/Dest[885 0 R/XYZ null 486 null]/Prev 1076 0 R/Next 1078 0 R>>endobj
+1078 0 obj<</Parent 1071 0 R/Title(10.5. How do I set up a Samba BDC?)/Dest[885 0 R/XYZ null 335 null]/Prev 1077 0 R/Next 1079 0 R>>endobj
+1079 0 obj<</Parent 1071 0 R/Title(10.5.1. How do I replicate the smbpasswd file?)/Dest[888 0 R/XYZ null 407 null]/Prev 1078 0 R>>endobj
+1080 0 obj<</Parent 969 0 R/Count -13/First 1081 0 R/Last 1093 0 R/Title(Chapter 11. Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[891 0 R/XYZ null 750 null]/Prev 1071 0 R/Next 1094 0 R>>endobj
+1081 0 obj<</Parent 1080 0 R/Title(11.1. Purpose)/Dest[891 0 R/XYZ null 702 null]/Next 1082 0 R>>endobj
+1082 0 obj<</Parent 1080 0 R/Title(11.2. Introduction)/Dest[891 0 R/XYZ null 419 null]/Prev 1081 0 R/Next 1083 0 R>>endobj
+1083 0 obj<</Parent 1080 0 R/Title(11.3. Supported LDAP Servers)/Dest[894 0 R/XYZ null 563 null]/Prev 1082 0 R/Next 1084 0 R>>endobj
+1084 0 obj<</Parent 1080 0 R/Title(11.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[894 0 R/XYZ null 452 null]/Prev 1083 0 R/Next 1085 0 R>>endobj
+1085 0 obj<</Parent 1080 0 R/Title(11.5. Configuring Samba with LDAP)/Dest[897 0 R/XYZ null 577 null]/Prev 1084 0 R/Next 1086 0 R>>endobj
+1086 0 obj<</Parent 1080 0 R/Title(11.5.1. OpenLDAP configuration)/Dest[897 0 R/XYZ null 547 null]/Prev 1085 0 R/Next 1087 0 R>>endobj
+1087 0 obj<</Parent 1080 0 R/Title(11.5.2. Configuring Samba)/Dest[900 0 R/XYZ null 648 null]/Prev 1086 0 R/Next 1088 0 R>>endobj
+1088 0 obj<</Parent 1080 0 R/Title(11.5.3. Importing smbpasswd entries)/Dest[903 0 R/XYZ null 723 null]/Prev 1087 0 R/Next 1089 0 R>>endobj
+1089 0 obj<</Parent 1080 0 R/Title(11.6. Accounts and Groups management)/Dest[903 0 R/XYZ null 519 null]/Prev 1088 0 R/Next 1090 0 R>>endobj
+1090 0 obj<</Parent 1080 0 R/Title(11.7. Security and sambaAccount)/Dest[903 0 R/XYZ null 316 null]/Prev 1089 0 R/Next 1091 0 R>>endobj
+1091 0 obj<</Parent 1080 0 R/Title(11.8. LDAP specials attributes for sambaAccounts)/Dest[906 0 R/XYZ null 598 null]/Prev 1090 0 R/Next 1092 0 R>>endobj
+1092 0 obj<</Parent 1080 0 R/Title(11.9. Example LDIF Entries for a sambaAccount)/Dest[909 0 R/XYZ null 577 null]/Prev 1091 0 R/Next 1093 0 R>>endobj
+1093 0 obj<</Parent 1080 0 R/Title(11.10. Comments)/Dest[912 0 R/XYZ null 735 null]/Prev 1092 0 R>>endobj
+1094 0 obj<</Parent 969 0 R/Count -16/First 1095 0 R/Last 1110 0 R/Title(Chapter 12. Unified Logons between Windows NT and UNIX using Winbind)/Dest[915 0 R/XYZ null 750 null]/Prev 1080 0 R/Next 1111 0 R>>endobj
+1095 0 obj<</Parent 1094 0 R/Title(12.1. Abstract)/Dest[915 0 R/XYZ null 702 null]/Next 1096 0 R>>endobj
+1096 0 obj<</Parent 1094 0 R/Title(12.2. Introduction)/Dest[915 0 R/XYZ null 565 null]/Prev 1095 0 R/Next 1097 0 R>>endobj
+1097 0 obj<</Parent 1094 0 R/Title(12.3. What Winbind Provides)/Dest[915 0 R/XYZ null 242 null]/Prev 1096 0 R/Next 1098 0 R>>endobj
+1098 0 obj<</Parent 1094 0 R/Title(12.3.1. Target Uses)/Dest[918 0 R/XYZ null 577 null]/Prev 1097 0 R/Next 1099 0 R>>endobj
+1099 0 obj<</Parent 1094 0 R/Title(12.4. How Winbind Works)/Dest[918 0 R/XYZ null 413 null]/Prev 1098 0 R/Next 1100 0 R>>endobj
+1100 0 obj<</Parent 1094 0 R/Title(12.4.1. Microsoft Remote Procedure Calls)/Dest[918 0 R/XYZ null 288 null]/Prev 1099 0 R/Next 1101 0 R>>endobj
+1101 0 obj<</Parent 1094 0 R/Title(12.4.2. Name Service Switch)/Dest[921 0 R/XYZ null 750 null]/Prev 1100 0 R/Next 1102 0 R>>endobj
+1102 0 obj<</Parent 1094 0 R/Title(12.4.3. Pluggable Authentication Modules)/Dest[921 0 R/XYZ null 309 null]/Prev 1101 0 R/Next 1103 0 R>>endobj
+1103 0 obj<</Parent 1094 0 R/Title(12.4.4. User and Group ID Allocation)/Dest[924 0 R/XYZ null 669 null]/Prev 1102 0 R/Next 1104 0 R>>endobj
+1104 0 obj<</Parent 1094 0 R/Title(12.4.5. Result Caching)/Dest[924 0 R/XYZ null 479 null]/Prev 1103 0 R/Next 1105 0 R>>endobj
+1105 0 obj<</Parent 1094 0 R/Title(12.5. Installation and Configuration)/Dest[924 0 R/XYZ null 328 null]/Prev 1104 0 R/Next 1106 0 R>>endobj
+1106 0 obj<</Parent 1094 0 R/Title(12.5.1. Introduction)/Dest[924 0 R/XYZ null 217 null]/Prev 1105 0 R/Next 1107 0 R>>endobj
+1107 0 obj<</Parent 1094 0 R/Title(12.5.2. Requirements)/Dest[927 0 R/XYZ null 563 null]/Prev 1106 0 R/Next 1108 0 R>>endobj
+1108 0 obj<</Parent 1094 0 R/Title(12.5.3. Testing Things Out)/Dest[927 0 R/XYZ null 281 null]/Prev 1107 0 R/Next 1109 0 R>>endobj
+1109 0 obj<</Parent 1094 0 R/Title(12.6. Limitations)/Dest[939 0 R/XYZ null 202 null]/Prev 1108 0 R/Next 1110 0 R>>endobj
+1110 0 obj<</Parent 1094 0 R/Title(12.7. Conclusion)/Dest[942 0 R/XYZ null 709 null]/Prev 1109 0 R>>endobj
+1111 0 obj<</Parent 969 0 R/Count -5/First 1112 0 R/Last 1116 0 R/Title(Chapter 13. OS2 Client HOWTO)/Dest[945 0 R/XYZ null 750 null]/Prev 1094 0 R/Next 1117 0 R>>endobj
+1112 0 obj<</Parent 1111 0 R/Title(13.1. FAQs)/Dest[945 0 R/XYZ null 726 null]/Next 1113 0 R>>endobj
+1113 0 obj<</Parent 1111 0 R/Title(13.1.1. How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[945 0 R/XYZ null 696 null]/Prev 1112 0 R/Next 1114 0 R>>endobj
+1114 0 obj<</Parent 1111 0 R/Title(13.1.2. How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[945 0 R/XYZ null 344 null]/Prev 1113 0 R/Next 1115 0 R>>endobj
+1115 0 obj<</Parent 1111 0 R/Title(13.1.3. Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[948 0 R/XYZ null 750 null]/Prev 1114 0 R/Next 1116 0 R>>endobj
+1116 0 obj<</Parent 1111 0 R/Title(13.1.4. How do I get printer driver download working for OS/2 clients?)/Dest[948 0 R/XYZ null 635 null]/Prev 1115 0 R>>endobj
+1117 0 obj<</Parent 969 0 R/Count -4/First 1118 0 R/Last 1121 0 R/Title(Chapter 14. HOWTO Access Samba source code via CVS)/Dest[951 0 R/XYZ null 750 null]/Prev 1111 0 R/Next 1122 0 R>>endobj
+1118 0 obj<</Parent 1117 0 R/Title(14.1. Introduction)/Dest[951 0 R/XYZ null 702 null]/Next 1119 0 R>>endobj
+1119 0 obj<</Parent 1117 0 R/Title(14.2. CVS Access to samba.org)/Dest[951 0 R/XYZ null 578 null]/Prev 1118 0 R/Next 1120 0 R>>endobj
+1120 0 obj<</Parent 1117 0 R/Title(14.2.1. Access via CVSweb)/Dest[951 0 R/XYZ null 480 null]/Prev 1119 0 R/Next 1121 0 R>>endobj
+1121 0 obj<</Parent 1117 0 R/Title(14.2.2. Access via cvs)/Dest[951 0 R/XYZ null 355 null]/Prev 1120 0 R>>endobj
+1122 0 obj<</Parent 969 0 R/Title(Index)/Dest[954 0 R/XYZ null 484 null]/Prev 1117 0 R>>endobj
+1123 0 obj<</Type/Catalog/Pages 689 0 R/Names 514 0 R/PageLayout/SinglePage/Outlines 969 0 R/OpenAction[690 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>5<</S/D>>]>>>>endobj
xref
-0 1037
+0 1124
0000000000 65535 f
0000000015 00000 n
0000000244 00000 n
@@ -2420,956 +2630,1043 @@ xref
0000007214 00000 n
0000007299 00000 n
0000007323 00000 n
-0000007370 00000 n
-0000007455 00000 n
-0000007507 00000 n
-0000007592 00000 n
-0000007641 00000 n
-0000007726 00000 n
-0000007775 00000 n
-0000007859 00000 n
-0000007904 00000 n
-0000007956 00000 n
-0000008041 00000 n
-0000008089 00000 n
-0000008175 00000 n
-0000008224 00000 n
-0000008310 00000 n
-0000008374 00000 n
-0000008461 00000 n
-0000008510 00000 n
-0000008574 00000 n
-0000008661 00000 n
-0000008687 00000 n
-0000008735 00000 n
-0000008822 00000 n
-0000008869 00000 n
-0000008956 00000 n
-0000008997 00000 n
-0000009083 00000 n
-0000009125 00000 n
-0000009167 00000 n
-0000009254 00000 n
-0000009303 00000 n
-0000009390 00000 n
-0000009437 00000 n
-0000009524 00000 n
-0000009566 00000 n
-0000009619 00000 n
-0000009706 00000 n
-0000009750 00000 n
-0000009837 00000 n
-0000009894 00000 n
-0000009981 00000 n
-0000010077 00000 n
-0000010163 00000 n
-0000010213 00000 n
-0000010260 00000 n
-0000010347 00000 n
-0000010394 00000 n
-0000010481 00000 n
-0000010530 00000 n
-0000010617 00000 n
-0000010664 00000 n
-0000010751 00000 n
-0000010801 00000 n
-0000010848 00000 n
-0000010935 00000 n
-0000010982 00000 n
-0000011067 00000 n
-0000011111 00000 n
-0000011197 00000 n
-0000011239 00000 n
-0000011325 00000 n
-0000011365 00000 n
-0000011451 00000 n
-0000011499 00000 n
-0000011585 00000 n
-0000011630 00000 n
-0000011716 00000 n
-0000011760 00000 n
-0000011846 00000 n
-0000011897 00000 n
-0000011983 00000 n
-0000012032 00000 n
-0000012118 00000 n
-0000012163 00000 n
-0000012249 00000 n
-0000012291 00000 n
-0000012377 00000 n
-0000012420 00000 n
-0000012506 00000 n
-0000012548 00000 n
-0000012634 00000 n
-0000012678 00000 n
-0000012764 00000 n
-0000012801 00000 n
-0000012887 00000 n
-0000012928 00000 n
-0000013014 00000 n
-0000013056 00000 n
-0000013142 00000 n
-0000013179 00000 n
-0000013265 00000 n
-0000013306 00000 n
-0000013392 00000 n
-0000013435 00000 n
-0000013521 00000 n
-0000013567 00000 n
-0000013653 00000 n
-0000013847 00000 n
-0000013894 00000 n
-0000013981 00000 n
-0000014030 00000 n
-0000014117 00000 n
-0000014166 00000 n
-0000014252 00000 n
-0000014294 00000 n
-0000014342 00000 n
-0000014428 00000 n
-0000014474 00000 n
-0000014561 00000 n
-0000014595 00000 n
-0000014710 00000 n
-0000014797 00000 n
-0000014823 00000 n
-0000014905 00000 n
-0000014992 00000 n
-0000015077 00000 n
-0000015164 00000 n
-0000015219 00000 n
-0000015306 00000 n
-0000015362 00000 n
-0000015449 00000 n
-0000015499 00000 n
-0000015547 00000 n
-0000015634 00000 n
-0000015708 00000 n
-0000015795 00000 n
-0000015863 00000 n
-0000015950 00000 n
-0000016004 00000 n
-0000016091 00000 n
-0000016159 00000 n
-0000016246 00000 n
-0000016320 00000 n
-0000016407 00000 n
-0000016455 00000 n
-0000016542 00000 n
-0000016599 00000 n
-0000016686 00000 n
-0000016768 00000 n
-0000016823 00000 n
-0000016910 00000 n
-0000016991 00000 n
-0000017078 00000 n
-0000017112 00000 n
-0000017164 00000 n
-0000017251 00000 n
-0000017277 00000 n
-0000017333 00000 n
-0000017420 00000 n
-0000017489 00000 n
-0000017576 00000 n
-0000017627 00000 n
-0000017714 00000 n
-0000017801 00000 n
-0000017888 00000 n
-0000017944 00000 n
-0000018031 00000 n
-0000018080 00000 n
-0000018167 00000 n
-0000018233 00000 n
-0000018285 00000 n
-0000018372 00000 n
-0000018427 00000 n
-0000018514 00000 n
-0000018561 00000 n
-0000018648 00000 n
-0000018695 00000 n
-0000018782 00000 n
-0000018832 00000 n
-0000018872 00000 n
-0000018959 00000 n
-0000019002 00000 n
-0000019089 00000 n
-0000019133 00000 n
-0000019220 00000 n
-0000019263 00000 n
-0000019350 00000 n
-0000019393 00000 n
-0000019480 00000 n
-0000019521 00000 n
-0000019608 00000 n
-0000019655 00000 n
-0000019742 00000 n
-0000019816 00000 n
-0000019863 00000 n
-0000019949 00000 n
-0000019975 00000 n
-0000020027 00000 n
-0000020113 00000 n
+0000007369 00000 n
+0000007454 00000 n
+0000007501 00000 n
+0000007586 00000 n
+0000007617 00000 n
+0000007669 00000 n
+0000007754 00000 n
+0000007803 00000 n
+0000007888 00000 n
+0000007937 00000 n
+0000008021 00000 n
+0000008073 00000 n
+0000008159 00000 n
+0000008208 00000 n
+0000008295 00000 n
+0000008344 00000 n
+0000008430 00000 n
+0000008494 00000 n
+0000008581 00000 n
+0000008652 00000 n
+0000008716 00000 n
+0000008803 00000 n
+0000008829 00000 n
+0000008881 00000 n
+0000008966 00000 n
+0000008992 00000 n
+0000009056 00000 n
+0000009143 00000 n
+0000009209 00000 n
+0000009296 00000 n
+0000009354 00000 n
+0000009441 00000 n
+0000009535 00000 n
+0000009622 00000 n
+0000009686 00000 n
+0000009773 00000 n
+0000009834 00000 n
+0000009921 00000 n
+0000009987 00000 n
+0000010035 00000 n
+0000010122 00000 n
+0000010169 00000 n
+0000010256 00000 n
+0000010297 00000 n
+0000010383 00000 n
+0000010425 00000 n
+0000010467 00000 n
+0000010554 00000 n
+0000010603 00000 n
+0000010690 00000 n
+0000010737 00000 n
+0000010824 00000 n
+0000010866 00000 n
+0000010919 00000 n
+0000011006 00000 n
+0000011050 00000 n
+0000011137 00000 n
+0000011194 00000 n
+0000011281 00000 n
+0000011377 00000 n
+0000011463 00000 n
+0000011513 00000 n
+0000011560 00000 n
+0000011647 00000 n
+0000011694 00000 n
+0000011781 00000 n
+0000011830 00000 n
+0000011917 00000 n
+0000011964 00000 n
+0000012051 00000 n
+0000012101 00000 n
+0000012148 00000 n
+0000012235 00000 n
+0000012282 00000 n
+0000012367 00000 n
+0000012411 00000 n
+0000012497 00000 n
+0000012539 00000 n
+0000012625 00000 n
+0000012665 00000 n
+0000012751 00000 n
+0000012799 00000 n
+0000012885 00000 n
+0000012930 00000 n
+0000013016 00000 n
+0000013060 00000 n
+0000013146 00000 n
+0000013197 00000 n
+0000013283 00000 n
+0000013332 00000 n
+0000013418 00000 n
+0000013463 00000 n
+0000013549 00000 n
+0000013591 00000 n
+0000013677 00000 n
+0000013720 00000 n
+0000013806 00000 n
+0000013848 00000 n
+0000013934 00000 n
+0000013978 00000 n
+0000014064 00000 n
+0000014101 00000 n
+0000014187 00000 n
+0000014228 00000 n
+0000014314 00000 n
+0000014356 00000 n
+0000014442 00000 n
+0000014479 00000 n
+0000014565 00000 n
+0000014606 00000 n
+0000014692 00000 n
+0000014735 00000 n
+0000014821 00000 n
+0000014867 00000 n
+0000014953 00000 n
+0000015147 00000 n
+0000015194 00000 n
+0000015281 00000 n
+0000015330 00000 n
+0000015417 00000 n
+0000015466 00000 n
+0000015552 00000 n
+0000015594 00000 n
+0000015642 00000 n
+0000015728 00000 n
+0000015774 00000 n
+0000015861 00000 n
+0000015895 00000 n
+0000016010 00000 n
+0000016097 00000 n
+0000016123 00000 n
+0000016205 00000 n
+0000016292 00000 n
+0000016377 00000 n
+0000016464 00000 n
+0000016519 00000 n
+0000016606 00000 n
+0000016662 00000 n
+0000016749 00000 n
+0000016799 00000 n
+0000016847 00000 n
+0000016934 00000 n
+0000017008 00000 n
+0000017095 00000 n
+0000017163 00000 n
+0000017250 00000 n
+0000017304 00000 n
+0000017391 00000 n
+0000017459 00000 n
+0000017546 00000 n
+0000017620 00000 n
+0000017707 00000 n
+0000017755 00000 n
+0000017842 00000 n
+0000017899 00000 n
+0000017986 00000 n
+0000018068 00000 n
+0000018123 00000 n
+0000018210 00000 n
+0000018291 00000 n
+0000018378 00000 n
+0000018412 00000 n
+0000018464 00000 n
+0000018551 00000 n
+0000018577 00000 n
+0000018625 00000 n
+0000018711 00000 n
+0000018737 00000 n
+0000018790 00000 n
+0000018876 00000 n
+0000018902 00000 n
+0000018958 00000 n
+0000019045 00000 n
+0000019114 00000 n
+0000019201 00000 n
+0000019252 00000 n
+0000019339 00000 n
+0000019426 00000 n
+0000019513 00000 n
+0000019569 00000 n
+0000019656 00000 n
+0000019705 00000 n
+0000019792 00000 n
+0000019858 00000 n
+0000019910 00000 n
+0000019997 00000 n
+0000020052 00000 n
0000020139 00000 n
-0000020193 00000 n
-0000020280 00000 n
-0000020306 00000 n
-0000020368 00000 n
-0000020455 00000 n
-0000020481 00000 n
-0000020530 00000 n
-0000020617 00000 n
-0000020643 00000 n
-0000020690 00000 n
-0000020777 00000 n
-0000020826 00000 n
-0000020911 00000 n
-0000020945 00000 n
-0000020988 00000 n
-0000021075 00000 n
-0000021118 00000 n
-0000021205 00000 n
-0000021254 00000 n
-0000021341 00000 n
-0000021390 00000 n
-0000021477 00000 n
-0000021525 00000 n
-0000021612 00000 n
-0000021658 00000 n
-0000021745 00000 n
-0000021811 00000 n
-0000021890 00000 n
-0000021977 00000 n
-0000022059 00000 n
-0000022145 00000 n
-0000022220 00000 n
-0000022307 00000 n
+0000020186 00000 n
+0000020273 00000 n
+0000020320 00000 n
+0000020407 00000 n
+0000020457 00000 n
+0000020497 00000 n
+0000020584 00000 n
+0000020627 00000 n
+0000020714 00000 n
+0000020758 00000 n
+0000020845 00000 n
+0000020888 00000 n
+0000020975 00000 n
+0000021018 00000 n
+0000021105 00000 n
+0000021146 00000 n
+0000021233 00000 n
+0000021280 00000 n
+0000021367 00000 n
+0000021441 00000 n
+0000021496 00000 n
+0000021583 00000 n
+0000021639 00000 n
+0000021726 00000 n
+0000021773 00000 n
+0000021859 00000 n
+0000021901 00000 n
+0000021953 00000 n
+0000022038 00000 n
+0000022064 00000 n
+0000022118 00000 n
+0000022205 00000 n
+0000022231 00000 n
+0000022293 00000 n
0000022380 00000 n
-0000022467 00000 n
-0000022517 00000 n
-0000022595 00000 n
-0000022682 00000 n
-0000022708 00000 n
-0000022771 00000 n
-0000022858 00000 n
-0000022921 00000 n
-0000023008 00000 n
-0000023062 00000 n
-0000023149 00000 n
-0000023191 00000 n
-0000023232 00000 n
-0000023319 00000 n
-0000023345 00000 n
-0000023450 00000 n
-0000023556 00000 n
-0000023662 00000 n
-0000023768 00000 n
-0000023874 00000 n
-0000023980 00000 n
-0000024086 00000 n
-0000024192 00000 n
-0000024298 00000 n
-0000024404 00000 n
-0000024510 00000 n
-0000024616 00000 n
-0000024722 00000 n
-0000024828 00000 n
-0000024934 00000 n
-0000025040 00000 n
-0000025146 00000 n
-0000025252 00000 n
-0000025358 00000 n
-0000025464 00000 n
-0000025569 00000 n
-0000025675 00000 n
-0000025781 00000 n
-0000025887 00000 n
-0000025993 00000 n
-0000026099 00000 n
-0000026205 00000 n
-0000026311 00000 n
-0000026417 00000 n
-0000026523 00000 n
-0000026629 00000 n
-0000026735 00000 n
-0000026841 00000 n
-0000026947 00000 n
-0000027053 00000 n
-0000027159 00000 n
-0000027265 00000 n
-0000027371 00000 n
-0000027477 00000 n
-0000027582 00000 n
-0000027688 00000 n
-0000027794 00000 n
-0000027900 00000 n
-0000028003 00000 n
-0000028107 00000 n
-0000028485 00000 n
-0000028591 00000 n
-0000028696 00000 n
-0000028802 00000 n
-0000028908 00000 n
-0000029014 00000 n
-0000029120 00000 n
-0000029226 00000 n
-0000029332 00000 n
-0000029438 00000 n
-0000029544 00000 n
-0000029650 00000 n
-0000029755 00000 n
-0000029861 00000 n
-0000029967 00000 n
-0000030073 00000 n
-0000030179 00000 n
-0000030285 00000 n
-0000030391 00000 n
-0000030497 00000 n
-0000030603 00000 n
-0000030709 00000 n
-0000030815 00000 n
-0000030921 00000 n
-0000031027 00000 n
-0000031133 00000 n
-0000031238 00000 n
-0000031344 00000 n
-0000031450 00000 n
-0000031556 00000 n
-0000031661 00000 n
-0000031767 00000 n
-0000031873 00000 n
-0000031979 00000 n
-0000032085 00000 n
-0000032191 00000 n
-0000032297 00000 n
-0000032403 00000 n
-0000032509 00000 n
-0000032615 00000 n
-0000032721 00000 n
-0000032827 00000 n
-0000032932 00000 n
-0000033036 00000 n
-0000033140 00000 n
-0000033510 00000 n
-0000033615 00000 n
-0000033721 00000 n
-0000033827 00000 n
-0000033933 00000 n
-0000034039 00000 n
-0000034145 00000 n
-0000034251 00000 n
-0000034357 00000 n
-0000034463 00000 n
-0000034568 00000 n
-0000034674 00000 n
-0000034780 00000 n
-0000034886 00000 n
-0000034992 00000 n
-0000035098 00000 n
-0000035204 00000 n
-0000035310 00000 n
-0000035416 00000 n
-0000035522 00000 n
-0000035628 00000 n
-0000035734 00000 n
-0000035840 00000 n
-0000035945 00000 n
-0000036051 00000 n
-0000036157 00000 n
-0000036263 00000 n
-0000036369 00000 n
-0000036475 00000 n
-0000036581 00000 n
-0000036687 00000 n
-0000036793 00000 n
-0000036899 00000 n
-0000037005 00000 n
-0000037111 00000 n
-0000037217 00000 n
-0000037323 00000 n
-0000037429 00000 n
-0000037535 00000 n
-0000037641 00000 n
-0000037746 00000 n
-0000037852 00000 n
-0000037958 00000 n
-0000038063 00000 n
-0000038167 00000 n
-0000038271 00000 n
-0000038649 00000 n
-0000038754 00000 n
-0000038860 00000 n
-0000038966 00000 n
-0000039072 00000 n
-0000039178 00000 n
-0000039282 00000 n
-0000039348 00000 n
-0000039382 00000 n
-0000039416 00000 n
-0000042029 00000 n
-0000042078 00000 n
-0000042127 00000 n
-0000042176 00000 n
-0000042225 00000 n
-0000042274 00000 n
-0000042323 00000 n
-0000042372 00000 n
-0000042421 00000 n
-0000042470 00000 n
-0000042519 00000 n
-0000042568 00000 n
-0000042617 00000 n
-0000042666 00000 n
-0000042715 00000 n
-0000042764 00000 n
-0000042813 00000 n
-0000042862 00000 n
-0000042911 00000 n
-0000042960 00000 n
-0000043009 00000 n
-0000043058 00000 n
-0000043107 00000 n
-0000043156 00000 n
-0000043205 00000 n
-0000043254 00000 n
-0000043303 00000 n
-0000043352 00000 n
-0000043401 00000 n
-0000043450 00000 n
-0000043499 00000 n
-0000043548 00000 n
-0000043597 00000 n
-0000043646 00000 n
-0000043695 00000 n
-0000043744 00000 n
-0000043793 00000 n
-0000043842 00000 n
-0000043891 00000 n
-0000043940 00000 n
-0000043989 00000 n
-0000044038 00000 n
-0000044087 00000 n
-0000044136 00000 n
-0000044185 00000 n
-0000044234 00000 n
-0000044283 00000 n
-0000044332 00000 n
-0000044381 00000 n
-0000044430 00000 n
-0000044479 00000 n
-0000044528 00000 n
-0000044577 00000 n
-0000044626 00000 n
-0000044675 00000 n
-0000044724 00000 n
-0000044773 00000 n
-0000044822 00000 n
-0000044871 00000 n
-0000044920 00000 n
-0000044969 00000 n
-0000045018 00000 n
-0000045067 00000 n
-0000045116 00000 n
-0000045165 00000 n
-0000045214 00000 n
-0000045263 00000 n
-0000045312 00000 n
-0000045361 00000 n
-0000045410 00000 n
-0000045459 00000 n
-0000045508 00000 n
-0000045557 00000 n
-0000045606 00000 n
-0000045655 00000 n
-0000045704 00000 n
-0000045753 00000 n
-0000045802 00000 n
-0000045851 00000 n
-0000045900 00000 n
-0000045949 00000 n
-0000045998 00000 n
-0000046047 00000 n
-0000046096 00000 n
-0000046145 00000 n
-0000046194 00000 n
-0000046243 00000 n
-0000046292 00000 n
-0000046341 00000 n
-0000046390 00000 n
-0000046439 00000 n
-0000046488 00000 n
-0000046537 00000 n
-0000046586 00000 n
-0000046635 00000 n
-0000046684 00000 n
-0000046733 00000 n
-0000046782 00000 n
-0000046831 00000 n
-0000046880 00000 n
-0000046929 00000 n
-0000046978 00000 n
-0000047027 00000 n
-0000047076 00000 n
-0000047125 00000 n
-0000047174 00000 n
-0000047223 00000 n
-0000047272 00000 n
-0000047321 00000 n
-0000047370 00000 n
-0000047419 00000 n
-0000047468 00000 n
-0000047517 00000 n
-0000047566 00000 n
-0000047615 00000 n
-0000047664 00000 n
-0000047713 00000 n
-0000047762 00000 n
-0000047811 00000 n
-0000047860 00000 n
-0000047909 00000 n
-0000047958 00000 n
-0000048007 00000 n
-0000048056 00000 n
-0000048105 00000 n
-0000048154 00000 n
-0000048203 00000 n
-0000048252 00000 n
-0000048301 00000 n
-0000048350 00000 n
-0000048399 00000 n
-0000048448 00000 n
-0000048497 00000 n
-0000048546 00000 n
-0000048595 00000 n
-0000048644 00000 n
-0000048693 00000 n
-0000048742 00000 n
-0000048791 00000 n
-0000048840 00000 n
-0000048889 00000 n
-0000048938 00000 n
-0000048987 00000 n
-0000049036 00000 n
-0000049085 00000 n
-0000049134 00000 n
-0000049183 00000 n
-0000049232 00000 n
-0000049281 00000 n
-0000049330 00000 n
-0000049379 00000 n
-0000049428 00000 n
-0000049477 00000 n
-0000049526 00000 n
-0000049575 00000 n
-0000049624 00000 n
-0000049673 00000 n
-0000049722 00000 n
-0000049771 00000 n
-0000049820 00000 n
-0000049869 00000 n
-0000049918 00000 n
-0000050675 00000 n
-0000050831 00000 n
-0000051554 00000 n
-0000051575 00000 n
-0000051749 00000 n
-0000052911 00000 n
-0000052933 00000 n
-0000053084 00000 n
-0000054590 00000 n
-0000054612 00000 n
-0000054772 00000 n
-0000056208 00000 n
-0000056230 00000 n
-0000056408 00000 n
-0000057668 00000 n
-0000057690 00000 n
-0000057832 00000 n
-0000059416 00000 n
-0000059438 00000 n
-0000059571 00000 n
-0000061406 00000 n
-0000061428 00000 n
-0000061561 00000 n
-0000062084 00000 n
-0000062105 00000 n
-0000062266 00000 n
-0000063550 00000 n
-0000063572 00000 n
-0000063733 00000 n
-0000065488 00000 n
-0000065510 00000 n
-0000065670 00000 n
-0000067315 00000 n
-0000067337 00000 n
-0000067479 00000 n
-0000069549 00000 n
-0000069571 00000 n
-0000069713 00000 n
-0000071525 00000 n
-0000071547 00000 n
-0000071689 00000 n
-0000073414 00000 n
-0000073436 00000 n
-0000073587 00000 n
-0000075351 00000 n
-0000075373 00000 n
-0000075548 00000 n
-0000077655 00000 n
-0000077677 00000 n
-0000077837 00000 n
-0000079433 00000 n
-0000079455 00000 n
-0000079630 00000 n
-0000081125 00000 n
-0000081147 00000 n
-0000081299 00000 n
-0000082106 00000 n
-0000082127 00000 n
-0000082278 00000 n
-0000083916 00000 n
-0000083938 00000 n
-0000084103 00000 n
-0000085875 00000 n
-0000085897 00000 n
-0000086062 00000 n
-0000086955 00000 n
-0000086976 00000 n
-0000087150 00000 n
-0000088755 00000 n
-0000088777 00000 n
-0000088920 00000 n
-0000089678 00000 n
-0000089699 00000 n
-0000089882 00000 n
-0000091750 00000 n
-0000091772 00000 n
-0000091941 00000 n
-0000093795 00000 n
-0000093817 00000 n
-0000093977 00000 n
-0000095661 00000 n
-0000095683 00000 n
-0000095856 00000 n
-0000097585 00000 n
-0000097607 00000 n
-0000097758 00000 n
-0000098682 00000 n
-0000098703 00000 n
-0000098887 00000 n
-0000100712 00000 n
-0000100734 00000 n
-0000100908 00000 n
-0000103081 00000 n
-0000103103 00000 n
-0000103296 00000 n
-0000105223 00000 n
-0000105245 00000 n
-0000105429 00000 n
-0000107339 00000 n
-0000107361 00000 n
-0000107537 00000 n
-0000109338 00000 n
-0000109360 00000 n
-0000109530 00000 n
-0000111128 00000 n
-0000111150 00000 n
-0000111335 00000 n
-0000112811 00000 n
-0000112833 00000 n
-0000113026 00000 n
-0000114597 00000 n
-0000114619 00000 n
-0000114794 00000 n
-0000116574 00000 n
-0000116596 00000 n
-0000116752 00000 n
-0000118313 00000 n
-0000118335 00000 n
-0000118520 00000 n
-0000120372 00000 n
-0000120394 00000 n
-0000120560 00000 n
-0000122207 00000 n
-0000122229 00000 n
-0000122414 00000 n
-0000124363 00000 n
-0000124385 00000 n
-0000124569 00000 n
-0000126296 00000 n
-0000126318 00000 n
-0000126488 00000 n
-0000128093 00000 n
-0000128115 00000 n
-0000128284 00000 n
-0000130157 00000 n
-0000130179 00000 n
-0000130364 00000 n
-0000132228 00000 n
-0000132250 00000 n
-0000132426 00000 n
-0000134516 00000 n
-0000134538 00000 n
-0000134713 00000 n
-0000136653 00000 n
-0000136675 00000 n
-0000136851 00000 n
-0000139167 00000 n
-0000139189 00000 n
-0000139341 00000 n
-0000141321 00000 n
-0000141343 00000 n
-0000141503 00000 n
-0000143370 00000 n
-0000143392 00000 n
-0000143543 00000 n
-0000145295 00000 n
-0000145317 00000 n
-0000145449 00000 n
-0000147323 00000 n
-0000147345 00000 n
-0000147487 00000 n
-0000149558 00000 n
-0000149580 00000 n
-0000149731 00000 n
-0000151525 00000 n
-0000151547 00000 n
-0000151679 00000 n
-0000153472 00000 n
-0000153494 00000 n
-0000153617 00000 n
-0000154071 00000 n
-0000154092 00000 n
-0000154249 00000 n
-0000155883 00000 n
-0000155905 00000 n
-0000156057 00000 n
-0000157717 00000 n
-0000157739 00000 n
-0000157881 00000 n
-0000158764 00000 n
-0000158785 00000 n
-0000158970 00000 n
-0000161126 00000 n
-0000161148 00000 n
-0000161324 00000 n
-0000163509 00000 n
-0000163531 00000 n
-0000163682 00000 n
-0000164783 00000 n
-0000164805 00000 n
-0000164981 00000 n
-0000166481 00000 n
-0000166503 00000 n
-0000166688 00000 n
-0000168540 00000 n
-0000168562 00000 n
-0000168747 00000 n
-0000170654 00000 n
-0000170676 00000 n
-0000170833 00000 n
-0000171764 00000 n
-0000171785 00000 n
-0000171937 00000 n
-0000173678 00000 n
-0000173700 00000 n
-0000173842 00000 n
-0000175604 00000 n
-0000175626 00000 n
-0000175777 00000 n
-0000177668 00000 n
-0000177690 00000 n
-0000177847 00000 n
-0000179684 00000 n
-0000179706 00000 n
-0000179900 00000 n
-0000181922 00000 n
-0000181944 00000 n
-0000182119 00000 n
-0000183706 00000 n
-0000183728 00000 n
-0000183903 00000 n
-0000185300 00000 n
-0000185322 00000 n
-0000185491 00000 n
-0000186780 00000 n
-0000186802 00000 n
-0000186953 00000 n
-0000188446 00000 n
-0000188468 00000 n
-0000188629 00000 n
-0000190292 00000 n
-0000190314 00000 n
-0000190447 00000 n
-0000190963 00000 n
-0000190984 00000 n
-0000191151 00000 n
-0000192819 00000 n
-0000192841 00000 n
-0000192998 00000 n
-0000194186 00000 n
-0000194208 00000 n
-0000194365 00000 n
-0000195917 00000 n
-0000195939 00000 n
-0000196123 00000 n
-0000196928 00000 n
-0000196949 00000 n
-0000197106 00000 n
-0000202529 00000 n
-0000202551 00000 n
-0000202708 00000 n
-0000208002 00000 n
-0000208024 00000 n
-0000208181 00000 n
-0000213398 00000 n
-0000213420 00000 n
-0000213577 00000 n
-0000214347 00000 n
-0000214368 00000 n
-0000214425 00000 n
-0000214530 00000 n
-0000214708 00000 n
-0000214827 00000 n
-0000214962 00000 n
-0000215098 00000 n
-0000215246 00000 n
-0000215396 00000 n
-0000215536 00000 n
-0000215677 00000 n
-0000215830 00000 n
-0000215992 00000 n
-0000216141 00000 n
-0000216329 00000 n
-0000216462 00000 n
-0000216590 00000 n
-0000216708 00000 n
-0000216844 00000 n
-0000216986 00000 n
-0000217102 00000 n
-0000217228 00000 n
-0000217344 00000 n
-0000217535 00000 n
-0000217634 00000 n
-0000217782 00000 n
-0000217900 00000 n
-0000218024 00000 n
-0000218146 00000 n
-0000218272 00000 n
-0000218430 00000 n
-0000218560 00000 n
-0000218684 00000 n
-0000218802 00000 n
-0000218920 00000 n
-0000219039 00000 n
-0000219229 00000 n
-0000219415 00000 n
-0000219568 00000 n
-0000219731 00000 n
-0000219882 00000 n
-0000219986 00000 n
-0000220203 00000 n
-0000220309 00000 n
-0000220441 00000 n
-0000220563 00000 n
-0000220768 00000 n
-0000220873 00000 n
-0000220973 00000 n
-0000221177 00000 n
-0000221338 00000 n
-0000221486 00000 n
-0000221614 00000 n
-0000221757 00000 n
-0000221881 00000 n
-0000222010 00000 n
-0000222155 00000 n
-0000222320 00000 n
-0000222472 00000 n
-0000222652 00000 n
-0000222757 00000 n
-0000222876 00000 n
-0000223001 00000 n
-0000223146 00000 n
-0000223288 00000 n
-0000223438 00000 n
-0000223569 00000 n
-0000223695 00000 n
-0000223820 00000 n
-0000223960 00000 n
-0000224087 00000 n
-0000224218 00000 n
-0000224349 00000 n
-0000224527 00000 n
-0000224655 00000 n
-0000224791 00000 n
-0000224926 00000 n
-0000225132 00000 n
-0000225245 00000 n
-0000225361 00000 n
-0000225506 00000 n
-0000225677 00000 n
-0000225826 00000 n
-0000225981 00000 n
-0000226121 00000 n
-0000226253 00000 n
-0000226387 00000 n
-0000226519 00000 n
-0000226657 00000 n
-0000226807 00000 n
-0000226975 00000 n
-0000227122 00000 n
-0000227346 00000 n
-0000227459 00000 n
-0000227575 00000 n
-0000227731 00000 n
-0000227889 00000 n
-0000228020 00000 n
-0000228166 00000 n
-0000228300 00000 n
-0000228433 00000 n
-0000228654 00000 n
-0000228755 00000 n
-0000228874 00000 n
-0000229003 00000 n
-0000229162 00000 n
-0000229297 00000 n
-0000229430 00000 n
-0000229559 00000 n
-0000229699 00000 n
-0000229834 00000 n
-0000229986 00000 n
-0000230135 00000 n
-0000230240 00000 n
-0000230450 00000 n
-0000230555 00000 n
-0000230678 00000 n
-0000230810 00000 n
-0000230934 00000 n
-0000231062 00000 n
-0000231207 00000 n
-0000231339 00000 n
-0000231484 00000 n
-0000231625 00000 n
-0000231752 00000 n
-0000231893 00000 n
-0000232018 00000 n
-0000232143 00000 n
-0000232274 00000 n
-0000232396 00000 n
-0000232503 00000 n
-0000232673 00000 n
-0000232774 00000 n
-0000232963 00000 n
-0000233157 00000 n
-0000233344 00000 n
-0000233506 00000 n
-0000233698 00000 n
-0000233807 00000 n
-0000233941 00000 n
-0000234071 00000 n
-0000234184 00000 n
-0000234279 00000 n
+0000022406 00000 n
+0000022455 00000 n
+0000022542 00000 n
+0000022591 00000 n
+0000022677 00000 n
+0000022711 00000 n
+0000022758 00000 n
+0000022845 00000 n
+0000022894 00000 n
+0000022981 00000 n
+0000023024 00000 n
+0000023111 00000 n
+0000023154 00000 n
+0000023241 00000 n
+0000023290 00000 n
+0000023375 00000 n
+0000023424 00000 n
+0000023509 00000 n
+0000023575 00000 n
+0000023623 00000 n
+0000023710 00000 n
+0000023756 00000 n
+0000023843 00000 n
+0000023877 00000 n
+0000023956 00000 n
+0000024043 00000 n
+0000024125 00000 n
+0000024211 00000 n
+0000024286 00000 n
+0000024373 00000 n
+0000024446 00000 n
+0000024533 00000 n
+0000024583 00000 n
+0000024661 00000 n
+0000024748 00000 n
+0000024774 00000 n
+0000024837 00000 n
+0000024924 00000 n
+0000024987 00000 n
+0000025074 00000 n
+0000025128 00000 n
+0000025215 00000 n
+0000025257 00000 n
+0000025298 00000 n
+0000025385 00000 n
+0000025411 00000 n
+0000025516 00000 n
+0000025622 00000 n
+0000025728 00000 n
+0000025834 00000 n
+0000025940 00000 n
+0000026046 00000 n
+0000026152 00000 n
+0000026258 00000 n
+0000026364 00000 n
+0000026470 00000 n
+0000026576 00000 n
+0000026682 00000 n
+0000026788 00000 n
+0000026894 00000 n
+0000027000 00000 n
+0000027106 00000 n
+0000027212 00000 n
+0000027318 00000 n
+0000027424 00000 n
+0000027530 00000 n
+0000027635 00000 n
+0000027741 00000 n
+0000027847 00000 n
+0000027953 00000 n
+0000028059 00000 n
+0000028165 00000 n
+0000028271 00000 n
+0000028377 00000 n
+0000028483 00000 n
+0000028589 00000 n
+0000028695 00000 n
+0000028801 00000 n
+0000028907 00000 n
+0000029013 00000 n
+0000029119 00000 n
+0000029225 00000 n
+0000029331 00000 n
+0000029437 00000 n
+0000029543 00000 n
+0000029648 00000 n
+0000029754 00000 n
+0000029860 00000 n
+0000029966 00000 n
+0000030069 00000 n
+0000030173 00000 n
+0000030551 00000 n
+0000030657 00000 n
+0000030762 00000 n
+0000030868 00000 n
+0000030974 00000 n
+0000031080 00000 n
+0000031186 00000 n
+0000031292 00000 n
+0000031398 00000 n
+0000031504 00000 n
+0000031610 00000 n
+0000031716 00000 n
+0000031821 00000 n
+0000031927 00000 n
+0000032033 00000 n
+0000032139 00000 n
+0000032245 00000 n
+0000032351 00000 n
+0000032457 00000 n
+0000032563 00000 n
+0000032669 00000 n
+0000032775 00000 n
+0000032881 00000 n
+0000032987 00000 n
+0000033093 00000 n
+0000033199 00000 n
+0000033305 00000 n
+0000033411 00000 n
+0000033516 00000 n
+0000033622 00000 n
+0000033728 00000 n
+0000033834 00000 n
+0000033940 00000 n
+0000034046 00000 n
+0000034152 00000 n
+0000034258 00000 n
+0000034364 00000 n
+0000034470 00000 n
+0000034575 00000 n
+0000034681 00000 n
+0000034787 00000 n
+0000034893 00000 n
+0000034996 00000 n
+0000035100 00000 n
+0000035462 00000 n
+0000035568 00000 n
+0000035674 00000 n
+0000035780 00000 n
+0000035886 00000 n
+0000035992 00000 n
+0000036098 00000 n
+0000036204 00000 n
+0000036310 00000 n
+0000036416 00000 n
+0000036522 00000 n
+0000036628 00000 n
+0000036734 00000 n
+0000036840 00000 n
+0000036945 00000 n
+0000037051 00000 n
+0000037157 00000 n
+0000037263 00000 n
+0000037369 00000 n
+0000037475 00000 n
+0000037581 00000 n
+0000037687 00000 n
+0000037793 00000 n
+0000037898 00000 n
+0000038004 00000 n
+0000038110 00000 n
+0000038216 00000 n
+0000038322 00000 n
+0000038428 00000 n
+0000038534 00000 n
+0000038640 00000 n
+0000038746 00000 n
+0000038852 00000 n
+0000038958 00000 n
+0000039064 00000 n
+0000039170 00000 n
+0000039276 00000 n
+0000039381 00000 n
+0000039487 00000 n
+0000039593 00000 n
+0000039699 00000 n
+0000039805 00000 n
+0000039911 00000 n
+0000040016 00000 n
+0000040120 00000 n
+0000040224 00000 n
+0000040602 00000 n
+0000040708 00000 n
+0000040814 00000 n
+0000040920 00000 n
+0000041026 00000 n
+0000041132 00000 n
+0000041238 00000 n
+0000041344 00000 n
+0000041450 00000 n
+0000041555 00000 n
+0000041661 00000 n
+0000041767 00000 n
+0000041873 00000 n
+0000041979 00000 n
+0000042085 00000 n
+0000042190 00000 n
+0000042296 00000 n
+0000042402 00000 n
+0000042508 00000 n
+0000042614 00000 n
+0000042718 00000 n
+0000042896 00000 n
+0000042930 00000 n
+0000042964 00000 n
+0000045748 00000 n
+0000045797 00000 n
+0000045846 00000 n
+0000045895 00000 n
+0000045944 00000 n
+0000045993 00000 n
+0000046042 00000 n
+0000046091 00000 n
+0000046140 00000 n
+0000046189 00000 n
+0000046238 00000 n
+0000046287 00000 n
+0000046336 00000 n
+0000046385 00000 n
+0000046434 00000 n
+0000046483 00000 n
+0000046532 00000 n
+0000046581 00000 n
+0000046630 00000 n
+0000046679 00000 n
+0000046728 00000 n
+0000046777 00000 n
+0000046826 00000 n
+0000046875 00000 n
+0000046924 00000 n
+0000046973 00000 n
+0000047022 00000 n
+0000047071 00000 n
+0000047120 00000 n
+0000047169 00000 n
+0000047218 00000 n
+0000047267 00000 n
+0000047316 00000 n
+0000047365 00000 n
+0000047414 00000 n
+0000047463 00000 n
+0000047512 00000 n
+0000047561 00000 n
+0000047610 00000 n
+0000047659 00000 n
+0000047708 00000 n
+0000047757 00000 n
+0000047806 00000 n
+0000047855 00000 n
+0000047904 00000 n
+0000047953 00000 n
+0000048002 00000 n
+0000048051 00000 n
+0000048100 00000 n
+0000048149 00000 n
+0000048198 00000 n
+0000048247 00000 n
+0000048296 00000 n
+0000048345 00000 n
+0000048394 00000 n
+0000048443 00000 n
+0000048492 00000 n
+0000048541 00000 n
+0000048590 00000 n
+0000048639 00000 n
+0000048688 00000 n
+0000048737 00000 n
+0000048786 00000 n
+0000048835 00000 n
+0000048884 00000 n
+0000048933 00000 n
+0000048982 00000 n
+0000049031 00000 n
+0000049080 00000 n
+0000049129 00000 n
+0000049178 00000 n
+0000049227 00000 n
+0000049276 00000 n
+0000049325 00000 n
+0000049374 00000 n
+0000049423 00000 n
+0000049472 00000 n
+0000049521 00000 n
+0000049570 00000 n
+0000049619 00000 n
+0000049668 00000 n
+0000049717 00000 n
+0000049766 00000 n
+0000049815 00000 n
+0000049864 00000 n
+0000049913 00000 n
+0000049962 00000 n
+0000050011 00000 n
+0000050060 00000 n
+0000050109 00000 n
+0000050158 00000 n
+0000050207 00000 n
+0000050256 00000 n
+0000050305 00000 n
+0000050354 00000 n
+0000050403 00000 n
+0000050452 00000 n
+0000050501 00000 n
+0000050550 00000 n
+0000050599 00000 n
+0000050648 00000 n
+0000050697 00000 n
+0000050746 00000 n
+0000050795 00000 n
+0000050844 00000 n
+0000050893 00000 n
+0000050942 00000 n
+0000050991 00000 n
+0000051040 00000 n
+0000051089 00000 n
+0000051138 00000 n
+0000051187 00000 n
+0000051236 00000 n
+0000051285 00000 n
+0000051334 00000 n
+0000051383 00000 n
+0000051432 00000 n
+0000051481 00000 n
+0000051530 00000 n
+0000051579 00000 n
+0000051628 00000 n
+0000051677 00000 n
+0000051726 00000 n
+0000051775 00000 n
+0000051824 00000 n
+0000051873 00000 n
+0000051922 00000 n
+0000051971 00000 n
+0000052020 00000 n
+0000052069 00000 n
+0000052118 00000 n
+0000052167 00000 n
+0000052216 00000 n
+0000052265 00000 n
+0000052314 00000 n
+0000052363 00000 n
+0000052412 00000 n
+0000052461 00000 n
+0000052510 00000 n
+0000052559 00000 n
+0000052608 00000 n
+0000052657 00000 n
+0000052706 00000 n
+0000052755 00000 n
+0000052804 00000 n
+0000052853 00000 n
+0000052902 00000 n
+0000052951 00000 n
+0000053000 00000 n
+0000053049 00000 n
+0000053098 00000 n
+0000053147 00000 n
+0000053196 00000 n
+0000053245 00000 n
+0000053294 00000 n
+0000053343 00000 n
+0000053392 00000 n
+0000053441 00000 n
+0000053490 00000 n
+0000053539 00000 n
+0000053588 00000 n
+0000053637 00000 n
+0000053686 00000 n
+0000053735 00000 n
+0000053784 00000 n
+0000053833 00000 n
+0000053882 00000 n
+0000053931 00000 n
+0000053980 00000 n
+0000054029 00000 n
+0000054078 00000 n
+0000054127 00000 n
+0000054176 00000 n
+0000054989 00000 n
+0000055145 00000 n
+0000055868 00000 n
+0000055889 00000 n
+0000056063 00000 n
+0000057225 00000 n
+0000057247 00000 n
+0000057398 00000 n
+0000058904 00000 n
+0000058926 00000 n
+0000059086 00000 n
+0000060522 00000 n
+0000060544 00000 n
+0000060722 00000 n
+0000061982 00000 n
+0000062004 00000 n
+0000062146 00000 n
+0000063722 00000 n
+0000063744 00000 n
+0000063877 00000 n
+0000065671 00000 n
+0000065693 00000 n
+0000065826 00000 n
+0000066252 00000 n
+0000066273 00000 n
+0000066434 00000 n
+0000067718 00000 n
+0000067740 00000 n
+0000067901 00000 n
+0000069656 00000 n
+0000069678 00000 n
+0000069838 00000 n
+0000071483 00000 n
+0000071505 00000 n
+0000071647 00000 n
+0000073709 00000 n
+0000073731 00000 n
+0000073873 00000 n
+0000075685 00000 n
+0000075707 00000 n
+0000075849 00000 n
+0000077574 00000 n
+0000077596 00000 n
+0000077747 00000 n
+0000079513 00000 n
+0000079535 00000 n
+0000079710 00000 n
+0000081803 00000 n
+0000081825 00000 n
+0000081985 00000 n
+0000083581 00000 n
+0000083603 00000 n
+0000083778 00000 n
+0000085272 00000 n
+0000085294 00000 n
+0000085446 00000 n
+0000086253 00000 n
+0000086274 00000 n
+0000086425 00000 n
+0000088063 00000 n
+0000088085 00000 n
+0000088250 00000 n
+0000090022 00000 n
+0000090044 00000 n
+0000090209 00000 n
+0000091102 00000 n
+0000091123 00000 n
+0000091297 00000 n
+0000092902 00000 n
+0000092924 00000 n
+0000093067 00000 n
+0000093825 00000 n
+0000093846 00000 n
+0000094029 00000 n
+0000095897 00000 n
+0000095919 00000 n
+0000096088 00000 n
+0000097942 00000 n
+0000097964 00000 n
+0000098124 00000 n
+0000099808 00000 n
+0000099830 00000 n
+0000100003 00000 n
+0000101732 00000 n
+0000101754 00000 n
+0000101905 00000 n
+0000102829 00000 n
+0000102850 00000 n
+0000103034 00000 n
+0000104859 00000 n
+0000104881 00000 n
+0000105055 00000 n
+0000107226 00000 n
+0000107248 00000 n
+0000107441 00000 n
+0000109373 00000 n
+0000109395 00000 n
+0000109570 00000 n
+0000111468 00000 n
+0000111490 00000 n
+0000111675 00000 n
+0000113825 00000 n
+0000113847 00000 n
+0000114017 00000 n
+0000115591 00000 n
+0000115613 00000 n
+0000115798 00000 n
+0000117786 00000 n
+0000117808 00000 n
+0000117969 00000 n
+0000118569 00000 n
+0000118590 00000 n
+0000118774 00000 n
+0000120652 00000 n
+0000120674 00000 n
+0000120853 00000 n
+0000123027 00000 n
+0000123049 00000 n
+0000123200 00000 n
+0000124638 00000 n
+0000124660 00000 n
+0000124863 00000 n
+0000127373 00000 n
+0000127395 00000 n
+0000127554 00000 n
+0000129639 00000 n
+0000129661 00000 n
+0000129784 00000 n
+0000130044 00000 n
+0000130065 00000 n
+0000130258 00000 n
+0000131829 00000 n
+0000131851 00000 n
+0000132026 00000 n
+0000133807 00000 n
+0000133829 00000 n
+0000133985 00000 n
+0000135546 00000 n
+0000135568 00000 n
+0000135753 00000 n
+0000137607 00000 n
+0000137629 00000 n
+0000137795 00000 n
+0000139443 00000 n
+0000139465 00000 n
+0000139650 00000 n
+0000141603 00000 n
+0000141625 00000 n
+0000141809 00000 n
+0000143537 00000 n
+0000143559 00000 n
+0000143729 00000 n
+0000145335 00000 n
+0000145357 00000 n
+0000145526 00000 n
+0000147396 00000 n
+0000147418 00000 n
+0000147603 00000 n
+0000149467 00000 n
+0000149489 00000 n
+0000149665 00000 n
+0000151755 00000 n
+0000151777 00000 n
+0000151952 00000 n
+0000153892 00000 n
+0000153914 00000 n
+0000154090 00000 n
+0000156407 00000 n
+0000156429 00000 n
+0000156581 00000 n
+0000158562 00000 n
+0000158584 00000 n
+0000158744 00000 n
+0000160615 00000 n
+0000160637 00000 n
+0000160788 00000 n
+0000162539 00000 n
+0000162561 00000 n
+0000162693 00000 n
+0000164566 00000 n
+0000164588 00000 n
+0000164730 00000 n
+0000166800 00000 n
+0000166822 00000 n
+0000166973 00000 n
+0000168767 00000 n
+0000168789 00000 n
+0000168921 00000 n
+0000170714 00000 n
+0000170736 00000 n
+0000170859 00000 n
+0000171313 00000 n
+0000171334 00000 n
+0000171491 00000 n
+0000173159 00000 n
+0000173181 00000 n
+0000173366 00000 n
+0000175097 00000 n
+0000175119 00000 n
+0000175313 00000 n
+0000176999 00000 n
+0000177021 00000 n
+0000177206 00000 n
+0000179366 00000 n
+0000179388 00000 n
+0000179564 00000 n
+0000181605 00000 n
+0000181627 00000 n
+0000181778 00000 n
+0000183356 00000 n
+0000183378 00000 n
+0000183554 00000 n
+0000185039 00000 n
+0000185061 00000 n
+0000185255 00000 n
+0000187195 00000 n
+0000187217 00000 n
+0000187384 00000 n
+0000189295 00000 n
+0000189317 00000 n
+0000189487 00000 n
+0000190786 00000 n
+0000190808 00000 n
+0000190956 00000 n
+0000191341 00000 n
+0000191362 00000 n
+0000191514 00000 n
+0000193256 00000 n
+0000193278 00000 n
+0000193420 00000 n
+0000195182 00000 n
+0000195204 00000 n
+0000195355 00000 n
+0000197246 00000 n
+0000197268 00000 n
+0000197425 00000 n
+0000199326 00000 n
+0000199348 00000 n
+0000199542 00000 n
+0000201621 00000 n
+0000201643 00000 n
+0000201818 00000 n
+0000203448 00000 n
+0000203470 00000 n
+0000203645 00000 n
+0000205032 00000 n
+0000205054 00000 n
+0000205214 00000 n
+0000206743 00000 n
+0000206765 00000 n
+0000206926 00000 n
+0000208481 00000 n
+0000208503 00000 n
+0000208646 00000 n
+0000209238 00000 n
+0000209259 00000 n
+0000209426 00000 n
+0000211093 00000 n
+0000211115 00000 n
+0000211272 00000 n
+0000212460 00000 n
+0000212482 00000 n
+0000212639 00000 n
+0000214192 00000 n
+0000214214 00000 n
+0000214398 00000 n
+0000215203 00000 n
+0000215224 00000 n
+0000215381 00000 n
+0000220802 00000 n
+0000220824 00000 n
+0000220981 00000 n
+0000226360 00000 n
+0000226382 00000 n
+0000226539 00000 n
+0000231758 00000 n
+0000231780 00000 n
+0000231937 00000 n
+0000234404 00000 n
+0000234426 00000 n
+0000234483 00000 n
+0000234588 00000 n
+0000234766 00000 n
+0000234885 00000 n
+0000235020 00000 n
+0000235156 00000 n
+0000235304 00000 n
+0000235454 00000 n
+0000235594 00000 n
+0000235735 00000 n
+0000235888 00000 n
+0000236050 00000 n
+0000236199 00000 n
+0000236387 00000 n
+0000236520 00000 n
+0000236648 00000 n
+0000236766 00000 n
+0000236902 00000 n
+0000237044 00000 n
+0000237160 00000 n
+0000237286 00000 n
+0000237402 00000 n
+0000237595 00000 n
+0000237694 00000 n
+0000237842 00000 n
+0000237960 00000 n
+0000238084 00000 n
+0000238206 00000 n
+0000238332 00000 n
+0000238490 00000 n
+0000238621 00000 n
+0000238747 00000 n
+0000238868 00000 n
+0000238989 00000 n
+0000239111 00000 n
+0000239304 00000 n
+0000239493 00000 n
+0000239649 00000 n
+0000239815 00000 n
+0000239969 00000 n
+0000240075 00000 n
+0000240296 00000 n
+0000240405 00000 n
+0000240541 00000 n
+0000240666 00000 n
+0000240876 00000 n
+0000240984 00000 n
+0000241087 00000 n
+0000241296 00000 n
+0000241460 00000 n
+0000241612 00000 n
+0000241744 00000 n
+0000241891 00000 n
+0000242019 00000 n
+0000242152 00000 n
+0000242301 00000 n
+0000242470 00000 n
+0000242625 00000 n
+0000242810 00000 n
+0000242918 00000 n
+0000243041 00000 n
+0000243170 00000 n
+0000243319 00000 n
+0000243459 00000 n
+0000243605 00000 n
+0000243759 00000 n
+0000243894 00000 n
+0000244024 00000 n
+0000244153 00000 n
+0000244297 00000 n
+0000244428 00000 n
+0000244563 00000 n
+0000244711 00000 n
+0000244864 00000 n
+0000245050 00000 n
+0000245179 00000 n
+0000245318 00000 n
+0000245517 00000 n
+0000245755 00000 n
+0000245913 00000 n
+0000246058 00000 n
+0000246198 00000 n
+0000246306 00000 n
+0000246489 00000 n
+0000246620 00000 n
+0000246760 00000 n
+0000246898 00000 n
+0000247109 00000 n
+0000247225 00000 n
+0000247345 00000 n
+0000247494 00000 n
+0000247669 00000 n
+0000247822 00000 n
+0000247981 00000 n
+0000248125 00000 n
+0000248261 00000 n
+0000248399 00000 n
+0000248535 00000 n
+0000248677 00000 n
+0000248831 00000 n
+0000249003 00000 n
+0000249153 00000 n
+0000249383 00000 n
+0000249500 00000 n
+0000249621 00000 n
+0000249782 00000 n
+0000249945 00000 n
+0000250081 00000 n
+0000250232 00000 n
+0000250371 00000 n
+0000250508 00000 n
+0000250732 00000 n
+0000250836 00000 n
+0000250959 00000 n
+0000251092 00000 n
+0000251255 00000 n
+0000251393 00000 n
+0000251528 00000 n
+0000251658 00000 n
+0000251798 00000 n
+0000251939 00000 n
+0000252075 00000 n
+0000252228 00000 n
+0000252378 00000 n
+0000252484 00000 n
+0000252695 00000 n
+0000252800 00000 n
+0000252923 00000 n
+0000253055 00000 n
+0000253179 00000 n
+0000253307 00000 n
+0000253452 00000 n
+0000253584 00000 n
+0000253729 00000 n
+0000253870 00000 n
+0000253997 00000 n
+0000254138 00000 n
+0000254263 00000 n
+0000254388 00000 n
+0000254519 00000 n
+0000254641 00000 n
+0000254748 00000 n
+0000254918 00000 n
+0000255019 00000 n
+0000255208 00000 n
+0000255402 00000 n
+0000255589 00000 n
+0000255751 00000 n
+0000255943 00000 n
+0000256052 00000 n
+0000256186 00000 n
+0000256316 00000 n
+0000256429 00000 n
+0000256524 00000 n
trailer
-<</Size 1037/Root 1036 0 R/Info 1 0 R/ID[<5784a3b52ed48a1bb5f4095a67bdf744><5784a3b52ed48a1bb5f4095a67bdf744>]>>
+<</Size 1124/Root 1123 0 R/Info 1 0 R/ID[<37f2139748809e07227d5db7799d36c3><37f2139748809e07227d5db7799d36c3>]>>
startxref
-234494
+256739
%%EOF
diff --git a/docs/docbook/Makefile.in b/docs/docbook/Makefile.in
index 39f891b4b5d..7e5bca566de 100644
--- a/docs/docbook/Makefile.in
+++ b/docs/docbook/Makefile.in
@@ -59,7 +59,7 @@ HOWTOSRC=projdoc/DOMAIN_MEMBER.sgml projdoc/NT_Security.sgml \
projdoc/Samba-PDC-HOWTO.sgml projdoc/ENCRYPTION.sgml \
projdoc/CVS-Access.sgml projdoc/Integrating-with-Windows.sgml \
projdoc/PAM-Authentication-And-Samba.sgml projdoc/Samba-LDAP-HOWTO.sgml \
- projdoc/Samba-BDC-HOWTO.sgml
+ projdoc/Samba-BDC-HOWTO.sgml projdoc/cups.sgml
@@ -116,6 +116,10 @@ proj-doc:
@mv -f samba-doc.pdf ../Samba-HOWTO-Collection.pdf
@/bin/mv -f samba-doc.html ../htmldocs/Samba-HOWTO-Collection.html
+proj-doc-ps:
+ sgmltools -b ps projdoc/samba-doc.sgml
+ mv projdoc/samba-doc.ps .
+
## generate all HTML man pages
man-html-all: $(SGMLMANSRC)
diff --git a/docs/docbook/manpages/nmblookup.1.sgml b/docs/docbook/manpages/nmblookup.1.sgml
index 67efac56343..502262ac730 100644
--- a/docs/docbook/manpages/nmblookup.1.sgml
+++ b/docs/docbook/manpages/nmblookup.1.sgml
@@ -16,6 +16,7 @@
<refsynopsisdiv>
<cmdsynopsis>
<command>nmblookup</command>
+ <arg choice="opt">-f</arg>
<arg choice="opt">-M</arg>
<arg choice="opt">-R</arg>
<arg choice="opt">-S</arg>
@@ -50,6 +51,13 @@
<variablelist>
<varlistentry>
+ <term>-f</term>
+ <listitem><para>Causes nmblookup to print out the flags
+ in the NMB packet headers. These flags will print out as
+ strings like Authoritative, Recursion_Desired, Recursion_available, etc.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
<term>-M</term>
<listitem><para>Searches for a master browser by looking
up the NetBIOS name <replaceable>name</replaceable> with a
diff --git a/docs/docbook/manpages/smb.conf.5.sgml b/docs/docbook/manpages/smb.conf.5.sgml
index af0e65d2804..696bdf3b343 100644
--- a/docs/docbook/manpages/smb.conf.5.sgml
+++ b/docs/docbook/manpages/smb.conf.5.sgml
@@ -394,7 +394,12 @@
<term>%L</term>
<listitem><para>the NetBIOS name of the server. This allows you
to change your config based on what the client calls you. Your
- server can have a "dual personality".</para></listitem>
+ server can have a "dual personality".</para>
+
+ <para>Note that this paramater is not available when Samba listens
+ on port 445, as clients no longer send this information </para>
+ </listitem>
+
</varlistentry>
<varlistentry>
@@ -484,6 +489,21 @@
<variablelist>
<varlistentry>
+ <term>mangling method</term>
+ <listitem><para> controls the algorithm used for the generating
+ the mangled names. Can take two different values, "hash" and
+ "hash2". "hash" is the default and is the algorithm that has been
+ used in Samba for many years. "hash2" is a newer and considered
+ a better algorithm (generates less collisions) in the names.
+ However, many Win32 applications store the
+ mangled names and so changing to the new algorithm must not be done
+ lightly as these applications may break unless reinstalled.
+ New installations of Samba may set the default to hash2.
+ Default <emphasis>hash</emphasis>.</para></listitem>
+ </varlistentry>
+
+
+ <varlistentry>
<term>mangle case = yes/no</term>
<listitem><para> controls if names that have characters that
aren't of the "default" case are mangled. For example,
@@ -662,6 +682,7 @@
<listitem><para><link linkend="LPQCACHETIME"><parameter>lpq cache time</parameter></link></para></listitem>
<listitem><para><link linkend="MACHINEPASSWORDTIMEOUT"><parameter>machine password timeout</parameter></link></para></listitem>
<listitem><para><link linkend="MANGLEDSTACK"><parameter>mangled stack</parameter></link></para></listitem>
+ <listitem><para><link linkend="MANGLINGMETHOD"><parameter>mangling method</parameter></link></para></listitem>
<listitem><para><link linkend="MAPTOGUEST"><parameter>map to guest</parameter></link></para></listitem>
<listitem><para><link linkend="MAXDISKSIZE"><parameter>max disk size</parameter></link></para></listitem>
<listitem><para><link linkend="MAXLOGSIZE"><parameter>max log size</parameter></link></para></listitem>
@@ -820,6 +841,7 @@
<listitem><para><link linkend="FORCEDIRECTORYSECURITYMODE"><parameter>force directory security mode</parameter></link></para></listitem>
<listitem><para><link linkend="FORCEGROUP"><parameter>force group</parameter></link></para></listitem>
<listitem><para><link linkend="FORCESECURITYMODE"><parameter>force security mode</parameter></link></para></listitem>
+ <listitem><para><link linkend="FORCEUNKNOWNACLUSER"><parameter>force unknown acl user</parameter></link></para></listitem>
<listitem><para><link linkend="FORCEUSER"><parameter>force user</parameter></link></para></listitem>
<listitem><para><link linkend="FSTYPE"><parameter>fstype</parameter></link></para></listitem>
<listitem><para><link linkend="GROUP"><parameter>group</parameter></link></para></listitem>
@@ -1163,7 +1185,7 @@
<term><anchor id="ANNOUNCEVERSION">announce version (G)</term>
<listitem><para>This specifies the major and minor version numbers
that nmbd will use when announcing itself as a server. The default
- is 4.2. Do not change this parameter unless you have a specific
+ is 4.5. Do not change this parameter unless you have a specific
need to set a Samba server to be a downlevel server.</para>
<para>Default: <command>announce version = 4.5</command></para>
@@ -2836,6 +2858,34 @@
<varlistentry>
+ <term><anchor id="FORCEUNKNOWNACLUSER">force unknown acl user (S)</term>
+ <listitem><para>If this parameter is set, a Windows NT ACL that contains
+ an unknown SID (security descriptor, or representation of a user or group id)
+ as the owner or group owner of the file will be silently mapped into the
+ current UNIX uid or gid of the currently connected user.</para>
+
+ <para>This is designed to allow Windows NT clients to copy files and
+ folders containing ACLs that were created locally on the client machine
+ and contain users local to that machine only (no domain users) to be
+ copied to a Samba server (usually with XCOPY /O) and have the unknown
+ userid and groupid of the file owner map to the current connected user.
+ This can only be fixed correctly when winbindd allows arbitrary mapping
+ from any Windows NT SID to a UNIX uid or gid.</para>
+
+ <para>Try using this parameter when XCOPY /O gives an ACCESS_DENIED error.
+ </para>
+
+ <para>See also <link linkend="FORCEGROUP"><parameter>force group
+ </parameter></link></para>
+
+ <para>Default: <emphasis>False</emphasis></para>
+ <para>Example: <command>force unknown acl user = yes</command></para>
+ </listitem>
+ </varlistentry>
+
+
+
+ <varlistentry>
<term><anchor id="FORCEUSER">force user (S)</term>
<listitem><para>This specifies a UNIX user name that will be
assigned as the default user for all users connecting to this service.
@@ -3502,7 +3552,8 @@
<para>See Also: <link linkend="LDAPSSL">ldap ssl</link>
</para>
- <para>Default : <command>ldap port = 636</command></para>
+ <para>Default : <command>ldap port = 636 ; if ldap ssl = on</command></para>
+ <para>Default : <command>ldap port = 389 ; if ldap ssl = off</command></para>
</listitem>
</varlistentry>
@@ -4273,7 +4324,7 @@
<para>See the section on <link linkend="NAMEMANGLINGSECT">
NAME MANGLING</link> for details on how to control the mangling process.</para>
- <para>If mangling is used then the mangling algorithm is as follows:</para>
+ <para>If mangling algorithm "hash" is used then the mangling algorithm is as follows:</para>
<itemizedlist>
<listitem><para>The first (up to) five alphanumeric characters
@@ -4313,6 +4364,40 @@
in a directory share the same first five alphanumeric characters.
The probability of such a clash is 1/1300.</para>
+ <para>If mangling algorithm "hash2" is used then the mangling algorithm is as follows:</para>
+
+ <itemizedlist>
+ <listitem><para>The first alphanumeric character
+ before the rightmost dot of the filename is preserved, forced
+ to upper case, and appears as the first character of the mangled name.
+ </para></listitem>
+
+ <listitem><para>A base63 hash of 5 characters is generated and the
+ first 4 characters of that hash are appended to the first character.
+ </para></listitem>
+
+ <listitem><para>A tilde "~" is appended to the first part of the mangled
+ name, followed by the final character of the base36 hash of the name.
+ </para>
+
+ <para>Note that the character to use may be specified using
+ the <link linkend="MANGLINGCHAR"><parameter>mangling char</parameter>
+ </link> option, if you don't like '~'.</para></listitem>
+
+ <listitem><para>The first three alphanumeric characters of the final
+ extension are preserved, forced to upper case and appear as the
+ extension of the mangled name. The final extension is defined as that
+ part of the original filename after the rightmost dot. If there are no
+ dots in the filename, the mangled name will have no extension (except
+ in the case of "hidden files" - see below).</para></listitem>
+
+ <listitem><para>Files whose UNIX name begins with a dot will be
+ presented as DOS hidden files. The mangled name will be created as
+ for other filenames, but with the leading dot removed and "___" as
+ its extension regardless of actual original extension (that's three
+ underscores).</para></listitem>
+ </itemizedlist>
+
<para>The name mangling (if enabled) allows a file to be
copied between UNIX directories from Windows/DOS while retaining
the long UNIX filename. UNIX files can be renamed to a new extension
@@ -4366,6 +4451,21 @@
</varlistentry>
+ <varlistentry>
+ <term><anchor id="MANGLINGMETHOD">mangling mathod(G)</term>
+ <listitem><para> controls the algorithm used for the generating
+ the mangled names. Can take two different values, "hash" and
+ "hash2". "hash" is the default and is the algorithm that has been
+ used in Samba for many years. "hash2" is a newer and considered
+ a better algorithm (generates less collisions) in the names.
+ However, many Win32 applications store the mangled names and so
+ changing to the new algorithm must not be done
+ lightly as these applications may break unless reinstalled.
+ New installations of Samba may set the default to hash2.</para>
+ <para>Default: <command>mangling method = hash</command></para>
+ <para>Example: <command>mangling method = hash2</command></para>
+ </listitem>
+ </varlistentry>
@@ -7478,9 +7578,11 @@
<varlistentry>
<term><anchor id="STRIPDOT">strip dot (G)</term>
- <listitem><para>This is a boolean that controls whether to
- strip trailing dots off UNIX filenames. This helps with some
- CDROMs that have filenames ending in a single dot.</para>
+ <listitem><para>This parameter is now unused in Samba (2.2.5 and above).
+ It used strip trailing dots off UNIX filenames but was not correctly implmented.
+ In Samba 2.2.5 and above UNIX filenames ending in a dot are invalid Windows long
+ filenames (as they are in Windows NT and above) and are mangled to 8.3 before
+ being returned to a client.</para>
<para>Default: <command>strip dot = no</command></para>
</listitem>
@@ -8338,25 +8440,24 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
</varlistentry>
-
-
<varlistentry>
- <term><anchor id="WINBINDUSEDEFAULTDOMAIN">winbind use default domain (G)</term>
- <listitem><para>This option controls whether or not smbd
- should lookup 'username' as 'DOMAIN\username' when winbindd is
- running on a system. This is most useful when used in conjunction
- with pam_winbind.so to prevent a Windows user from having to enter
- commands like "ssh 'DOMAIN\username@hostname'". This option is disabled
- by default, thus requiring that the DOMAIN\username format be used.</para>
-
- <para>Default: <command>winbind use default domain = no</command>
- </para></listitem>
+ <term>winbind use default domain</term>
+
+ <term><anchor id="WINBINDUSEDEFAULTDOMAIN">winbind use default domain</term>
+ <listitem><para>This parameter specifies whether the <ulink url="winbindd.8.html">
+ winbindd(8)</ulink>
+ daemon should operate on users without domain component in their username.
+ Users without a domain component are treated as is part of the winbindd server's
+ own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
+ function in a way much closer to the way they would in a native unix system.</para>
+
+ <para>Default: <command>winbind use default domain = &lt;falseg&gt;
+ </command></para>
+ <para>Example: <command>winbind use default domain = true</command></para>
+ </listitem>
</varlistentry>
-
-
-
<varlistentry>
<term><anchor id="WINSHOOK">wins hook (G)</term>
<listitem><para>When Samba is running as a WINS server this
diff --git a/docs/docbook/manpages/smbcontrol.1.sgml b/docs/docbook/manpages/smbcontrol.1.sgml
index 517e2ca41f4..d56a560b09f 100644
--- a/docs/docbook/manpages/smbcontrol.1.sgml
+++ b/docs/docbook/manpages/smbcontrol.1.sgml
@@ -15,14 +15,18 @@
<refsynopsisdiv>
<cmdsynopsis>
<command>smbcontrol</command>
- <arg>-i</arg>
+ <arg choice="opt">-d &lt;debug level&gt;</arg>
+ <arg choice="opt">-s &lt;smb config file&gt;</arg>
+ <arg choice="req">-i</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>smbcontrol</command>
- <arg>destination</arg>
- <arg>message-type</arg>
- <arg>parameter</arg>
+ <arg choice="opt">-d &lt;debug level&gt;</arg>
+ <arg choice="opt">-s &lt;smb config file&gt;</arg>
+ <arg choice="req">destination</arg>
+ <arg choice="req">message-type</arg>
+ <arg choice="opt">parameter</arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -45,6 +49,20 @@
<variablelist>
<varlistentry>
+ <term>-d &lt;debuglevel&gt;</term>
+ <listitem><para>debuglevel is an integer from 0 to 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-s &lt;smb.conf&gt;</term>
+ <listitem><para>This parameter specifies the pathname to
+ the Samba configuration file, <ulink url="smb.conf.5.html">
+ smb.conf(5)</ulink>. This file controls all aspects of
+ the Samba setup on the machine.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>-i</term>
<listitem><para>Run interactively. Individual commands
of the form destination message-type parameters can be entered
diff --git a/docs/docbook/manpages/smbpasswd.5.sgml b/docs/docbook/manpages/smbpasswd.5.sgml
index be751078192..c207074a9b1 100644
--- a/docs/docbook/manpages/smbpasswd.5.sgml
+++ b/docs/docbook/manpages/smbpasswd.5.sgml
@@ -35,7 +35,7 @@
<para>The format of the smbpasswd file used by Samba 2.2
is very similar to the familiar Unix <filename>passwd(5)</filename>
file. It is an ASCII file containing one line for each user. Each field
- ithin each line is separated from the next by a colon. Any entry
+ within each line is separated from the next by a colon. Any entry
beginning with '#' is ignored. The smbpasswd file contains the
following information for each user: </para>
diff --git a/docs/docbook/manpages/smbpasswd.8.sgml b/docs/docbook/manpages/smbpasswd.8.sgml
index ad962144331..64150fb53c6 100644
--- a/docs/docbook/manpages/smbpasswd.8.sgml
+++ b/docs/docbook/manpages/smbpasswd.8.sgml
@@ -93,17 +93,6 @@
<varlistentry>
- <term>-s</term>
- <listitem><para>This option causes smbpasswd to be silent (i.e.
- not issue prompts) and to read its old and new passwords from
- standard input, rather than from <filename>/dev/tty</filename>
- (like the <command>passwd(1)</command> program does). This option
- is to aid people writing scripts to drive smbpasswd</para>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
<term>-c smb.conf file</term>
<listitem><para>This option specifies that the configuration
file specified should be used instead of the default value
@@ -159,6 +148,40 @@
</varlistentry>
+
+ <varlistentry>
+ <term>-s</term>
+ <listitem><para>This option causes smbpasswd to be silent (i.e.
+ not issue prompts) and to read its old and new passwords from
+ standard input, rather than from <filename>/dev/tty</filename>
+ (like the <command>passwd(1)</command> program does). This option
+ is to aid people writing scripts to drive smbpasswd</para>
+ </listitem>
+ </varlistentry>
+
+
+
+ <varlistentry>
+ <term>-S</term>
+ <listitem><para>This option causes <command>smbpasswd</command>
+ to query a domain controller of the domain specified
+ by the <ulink url="smb.conf.5.html#WORKGROUP">workgroup</ulink>
+ parameter in <filename>smb.conf</filename> and store the
+ domain SID in the <filename>secrets.tdb</filename> file
+ as its own machine SID. This is only useful when configuring
+ a Samba PDC and Samba BDC, or when migrating from a Windows PDC
+ to a Samba PDC. </para>
+
+ <para>The <parameter>-r</parameter> options can be used
+ as well to indicate a specific domain controller which should
+ be contacted. In this case, the domain SID obtained is the
+ one for the domain to which the remote machine belongs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+
<varlistentry>
<term>-U username[%pass]</term>
<listitem><para>This option may only be used in conjunction
@@ -267,7 +290,7 @@ run as root or in local mode.</command>
dn</parameter></ulink>. Note that the password is stored in
the <filename>private/secrets.tdb</filename> and is keyed off
of the admin's DN. This means that if the value of <parameter>ldap
- admin dn</parameter> ever changes, the password will beed to be
+ admin dn</parameter> ever changes, the password will need to be
manually updated as well.
</para>
</listitem>
diff --git a/docs/docbook/projdoc/Integrating-with-Windows.sgml b/docs/docbook/projdoc/Integrating-with-Windows.sgml
index 0b6abaf80f6..701e48678c3 100644
--- a/docs/docbook/projdoc/Integrating-with-Windows.sgml
+++ b/docs/docbook/projdoc/Integrating-with-Windows.sgml
@@ -132,7 +132,7 @@ by the TCP/IP configuration control files. The file
<para>
When the IP address of the destination interface has been
-determined a protocol called ARP/RARP isused to identify
+determined a protocol called ARP/RARP is used to identify
the MAC address of the target interface. ARP stands for Address
Resolution Protocol, and is a broadcast oriented method that
uses UDP (User Datagram Protocol) to send a request to all
@@ -335,7 +335,7 @@ architecture of the MS Windows network. The term "workgroup" indicates
that the primary nature of the network environment is that of a
peer-to-peer design. In a WORKGROUP all machines are responsible for
their own security, and generally such security is limited to use of
-just a password (known as SHARE MORE security). In most situations
+just a password (known as SHARE MODE security). In most situations
with peer-to-peer networking the users who control their own machines
will simply opt to have no security at all. It is possible to have
USER MODE security in a WORKGROUP environment, thus requiring use
@@ -366,8 +366,8 @@ limited to this area.
<para>
All MS Windows machines employ an in memory buffer in which is
-stored the NetBIOS names and their IP addresses for all external
-machines that that the local machine has communicated with over the
+stored the NetBIOS names and IP addresses for all external
+machines that that machine has communicated with over the
past 10-15 minutes. It is more efficient to obtain an IP address
for a machine from the local cache than it is to go through all the
configured name resolution mechanisms.
@@ -377,7 +377,7 @@ configured name resolution mechanisms.
If a machine whose name is in the local name cache has been shut
down before the name had been expired and flushed from the cache, then
an attempt to exchange a message with that machine will be subject
-to time-out delays. ie: It's name is in the cache, so a name resolution
+to time-out delays. i.e.: Its name is in the cache, so a name resolution
lookup will succeed, but the machine can not respond. This can be
frustrating for users - but it is a characteristic of the protocol.
</para>
@@ -563,7 +563,7 @@ dependable browsing using Samba</title>
<para>
As stated above, MS Windows machines register their NetBIOS names
-(ie: the machine name for each service type in operation) on start
+(i.e.: the machine name for each service type in operation) on start
up. Also, as stated above, the exact method by which this name registration
takes place is determined by whether or not the MS Windows client/server
has been given a WINS server address, whether or not LMHOSTS lookup
@@ -594,7 +594,7 @@ Instead, the domain master browser serves the role of contacting each local
master browser (found by asking WINS or from LMHOSTS) and exchanging browse
list contents. This way every master browser will eventually obtain a complete
list of all machines that are on the network. Every 11-15 minutes an election
-is held to determine which machine will be the master browser. By nature of
+is held to determine which machine will be the master browser. By the nature of
the election criteria used, the machine with the highest uptime, or the
most senior protocol version, or other criteria, will win the election
as domain master browser.
@@ -679,8 +679,8 @@ these versions no longer support plain text passwords by default.
<para>
MS Windows clients have a habit of dropping network mappings that
have been idle for 10 minutes or longer. When the user attempts to
-use the mapped drive connection that has been dropped the SMB protocol
-has a mechanism by which the connection can be re-established using
+use the mapped drive connection that has been dropped, the client
+re-establishes the connection using
a cached copy of the password.
</para>
@@ -835,7 +835,7 @@ this HOWTO collection.
<para>
This mode of authentication demands that there be on the
-Unix/Linux system both a Unix style account as well as and
+Unix/Linux system both a Unix style account as well as an
smbpasswd entry for the user. The Unix system account can be
locked if required as only the encrypted password will be
used for SMB client authentication.
diff --git a/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml b/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
index 53a0959c39a..08cdc3a6680 100644
--- a/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
+++ b/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
@@ -64,9 +64,13 @@ parameters in the [global]-section of the smb.conf have to be set:
</para>
<para><programlisting>
-workgroup = SAMBA
-domain master = yes
-domain logons = yes
+[global]
+ workgroup = SAMBA
+ domain master = yes
+ domain logons = yes
+ encrypt passwords = yes
+ security = user
+ ....
</programlisting></para>
<para>
@@ -156,35 +160,48 @@ Several things have to be done:
<itemizedlist>
-<listitem><para>
-The file private/MACHINE.SID identifies the domain. When a samba
-server is first started, it is created on the fly and must never be
-changed again. This file has to be the same on the PDC and the BDC,
-so the MACHINE.SID has to be copied from the PDC to the BDC.
-</para></listitem>
-
-<listitem><para>
-The Unix user database has to be synchronized from the PDC to the
-BDC. This means that both the /etc/passwd and /etc/group have to be
-replicated from the PDC to the BDC. This can be done manually
-whenever changes are made, or the PDC is set up as a NIS master
-server and the BDC as a NIS slave server. To set up the BDC as a
-mere NIS client would not be enough, as the BDC would not be able to
-access its user database in case of a PDC failure.
-</para></listitem>
-
-<listitem><para>
-The Samba password database in the file private/smbpasswd has to be
-replicated from the PDC to the BDC. This is a bit tricky, see the
-next section.
-</para></listitem>
-
-<listitem><para>
-Any netlogon share has to be replicated from the PDC to the
-BDC. This can be done manually whenever login scripts are changed,
-or it can be done automatically together with the smbpasswd
-synchronization.
-</para></listitem>
+ <listitem><para>
+ The file <filename>private/MACHINE.SID</filename> identifies the domain. When a samba
+ server is first started, it is created on the fly and must never be
+ changed again. This file has to be the same on the PDC and the BDC,
+ so the MACHINE.SID has to be copied from the PDC to the BDC. Note that in the
+ latest Samba 2.2.x releases, the machine SID (and therefore domain SID) is stored
+ in the <filename>private/secrets.tdb</filename> database. This file cannot just
+ be copied because Samba looks under the key <constant>SECRETS/SID/<replaceable>DOMAIN</replaceable></constant>.
+ where <replaceable>DOMAIN</replaceable> is the machine's netbios name. Since this name has
+ to be unique for each SAMBA server, this lookup will fail. </para>
+ <para>
+ A new option has been added to the <command>smbpasswd(8)</command>
+ command to help ease this problem. When running <command>smbpasswd -S</command> as the root user,
+ the domain SID will be retrieved from a domain controller matching the value of the
+ <parameter>workgroup</parameter> parameter in <filename>smb.conf</filename> and stored as the
+ new Samba server's machine SID. See the <ulink url="smbpasswd.8.html"><command>smbpasswd(8)</command></ulink>
+ man page for more details on this functionality.
+ </para></listitem>
+
+ <listitem><para>
+ The Unix user database has to be synchronized from the PDC to the
+ BDC. This means that both the /etc/passwd and /etc/group have to be
+ replicated from the PDC to the BDC. This can be done manually
+ whenever changes are made, or the PDC is set up as a NIS master
+ server and the BDC as a NIS slave server. To set up the BDC as a
+ mere NIS client would not be enough, as the BDC would not be able to
+ access its user database in case of a PDC failure. LDAP is also a
+ potential vehicle for sharing this information.
+ </para></listitem>
+
+ <listitem><para>
+ The Samba password database in the file <filename>private/smbpasswd</filename>
+ has to be replicated from the PDC to the BDC. This is a bit tricky, see the
+ next section.
+ </para></listitem>
+
+ <listitem><para>
+ Any netlogon share has to be replicated from the PDC to the
+ BDC. This can be done manually whenever login scripts are changed,
+ or it can be done automatically together with the smbpasswd
+ synchronization.
+ </para></listitem>
</itemizedlist>
@@ -194,9 +211,13 @@ by setting
</para>
<para><programlisting>
-workgroup = samba
-domain master = no
-domain logons = yes
+[global]
+ workgroup = SAMBA
+ domain master = yes
+ domain logons = yes
+ encrypt passwords = yes
+ security = user
+ ....
</programlisting></para>
<para>
@@ -213,8 +234,9 @@ name is reserved for the Primary Domain Controller.
<para>
Replication of the smbpasswd file is sensitive. It has to be done
-whenever changes to the SAM are made. Every user's password change is
-done in the smbpasswd file and has to be replicated to the BDC. So
+whenever changes to the SAM are made. Every user's password change
+(including machine trust account password changes) is done in the
+smbpasswd file and has to be replicated to the BDC. So
replicating the smbpasswd file very often is necessary.
</para>
@@ -222,11 +244,18 @@ replicating the smbpasswd file very often is necessary.
As the smbpasswd file contains plain text password equivalents, it
must not be sent unencrypted over the wire. The best way to set up
smbpasswd replication from the PDC to the BDC is to use the utility
-rsync. rsync can use ssh as a transport. ssh itself can be set up to
-accept *only* rsync transfer without requiring the user to type a
-password.
+<command>rsync(1)</command>. <command>rsync</command> can use
+<command>ssh(1)</command> as a transport. <command>ssh</command> itself
+can be set up to accept <emphasis>only</emphasis> <command>rsync</command> transfer without requiring the user to
+type a password. Refer to the man pages for these two tools for more details.
</para>
+<para>
+Another solution with high potential is to use Samba's <parameter>--with-ldapsam</parameter>
+for sharing and/or replicating the list of <constant>sambaAccount</constant> entries.
+This can all be done over SSL to ensure security. See the <ulink url="Samba-LDAP-HOWTO.html">Samba-LDAP-HOWTO</ulink>
+for more details.
+</para>
</sect2>
</sect1>
diff --git a/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml b/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml
index c6c04ccab83..6b153af6feb 100644
--- a/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml
+++ b/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml
@@ -15,7 +15,7 @@
</author>
- <pubdate> (13 Jan 2002) </pubdate>
+ <pubdate> (16 Jun 2002) </pubdate>
</chapterinfo>
<title>Storing Samba's User/Machine Account information in an LDAP Directory</title>
@@ -39,7 +39,7 @@ on LDAP architectures and Directories, please refer to the following sites.
<para>
Note that <ulink url="http://www.ora.com/">O'Reilly Publishing</ulink> is working on
a guide to LDAP for System Administrators which has a planned release date of
-early summer, 2002.
+late 2002.
</para>
<para>
@@ -51,7 +51,8 @@ Two additional Samba resources which may prove to be helpful are
maintained by Ignacio Coupeau.</para></listitem>
<listitem><para>The NT migration scripts from <ulink url="http://samba.idealx.org/">IDEALX</ulink> that are
- geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
+ geared to manage users and group in such a Samba-LDAP Domain Controller configuration. These scripts can
+ be found in the Samba 2.2.5 release in the <filename>examples/LDAP/smbldap-tools/</filename> directory.
</para></listitem>
</itemizedlist>
@@ -75,7 +76,7 @@ in the thousands).
The first is that all lookups must be performed sequentially. Given that
there are approximately two lookups per domain logon (one for a normal
session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for lareg sites. What is needed is an indexed approach
+is a performance bottleneck for large sites. What is needed is an indexed approach
such as is used in databases.
</para></listitem>
@@ -96,7 +97,7 @@ Identified (RID).
<para>
As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed. The API which defines access to user accounts
+used by <command>smbd</command> was developed. The API which defines access to user accounts
is commonly referred to as the samdb interface (previously this was called the passdb
API, and is still so named in the CVS trees). In Samba 2.2.3, enabling support
for a samdb backend (e.g. <parameter>--with-ldapsam</parameter> or
@@ -105,7 +106,7 @@ for a samdb backend (e.g. <parameter>--with-ldapsam</parameter> or
<para>
When compiling Samba to include the <parameter>--with-ldapsam</parameter> autoconf
-option, smbd (and associated tools) will store and lookup user accounts in
+option, <command>smbd</command> (and associated tools) will store and lookup user accounts in
an LDAP directory. In reality, this is very easy to understand. If you are
comfortable with using an smbpasswd file, simply replace "smbpasswd" with
"LDAP directory" in all the documentation.
@@ -162,7 +163,7 @@ in 2.2.2). The sambaAccount objectclass is given here:
</para>
<para><programlisting>
-objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
+objectclass ( 1.3.1.5.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILARY
DESC 'Samba Account'
MUST ( uid $ rid )
MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
@@ -172,29 +173,45 @@ objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
</programlisting></para>
<para>
-The samba.schema file has been formatted for OpenLDAP 2.0. The OID's are
+The <filename>samba.schema</filename> file has been formatted for OpenLDAP 2.0 & 2.1. The OID's are
owned by the Samba Team and as such is legal to be openly published.
If you translate the schema to be used with Netscape DS, please
-submit the modified schema file as a patch to <ulink
-url="jerry@samba.org">jerry@samba.org</ulink>
+submit the modified schema file as a patch to <ulink url="jerry@samba.org">jerry@samba.org</ulink>
+</para>
+
+<para>
+Since the original release, schema files for
+</para>
+
+<itemizedlist>
+ <listitem><para>IBM's SecureWay Server</para></listitem>
+ <listitem><para>Netscape Directory Server version 4.x and 5.x</para></listitem>
+</itemizedlist>
+
+<para>
+have been submitted and included in the Samba source distribution. I cannot
+personally comment on the integration of these commercial directory servers since
+I have not had the oppotinuity to work with them.
</para>
<para>
Just as the smbpasswd file is mean to store information which supplements a
user's <filename>/etc/passwd</filename> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information. A sambaAccount is a
-<constant>STRUCTURAL</constant> objectclass so it can be stored individually
-in the directory. However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307. This is by design.
+meant to supplement the UNIX user account information. A sambaAccount is now an
+<constant>AUXILARY</constant> objectclass so it can be stored alongside
+a posixAccount or person objectclass in the directory. Note that there are
+several fields (e.g. uid) which overlap with the posixAccount objectclass
+outlined in RFC2307. This is by design. The move from a STRUCTURAL objectclass
+to an AUXILIARY one was compliance with the LDAP data model which states that
+an entry can contain only one STRUCTURAL objectclass per entry. This is now
+enforced by the OpenLDAP 2.1 server.
</para>
-<!--olem: we should perhaps have a note about shadowAccounts too as many
-systems use them, isn'it ? -->
<para>
In order to store all user account information (UNIX and Samba) in the directory,
it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination. However, smbd will still obtain the user's UNIX account
+combination. However, <command>smbd</command> will still obtain the user's UNIX account
information via the standard C library calls (e.g. getpwnam(), et. al.).
This means that the Samba server must also have the LDAP NSS library installed
and functioning correctly. This division of information makes it possible to
@@ -254,9 +271,9 @@ like in the following example, to speed up searches made on sambaAccount objectc
## required by OpenLDAP 2.0
index objectclass eq
-## support pb_getsampwnam()
+## support pbb_getsampwnam()
index uid pres,eq
-## support pdb_getsambapwrid()
+## support pdb_getsampwrid()
index rid eq
## uncomment these if you are storing posixAccount and
@@ -331,9 +348,39 @@ use with an LDAP directory could appear as
</sect2>
+
+
+<sect2>
+<title>Importing <filename>smbpasswd</filename> entries</title>
+
+<para>
+Import existing user entries from an <filename>smbpasswd</filename> can be trivially done using
+a Perl script named <filename>import_smbpasswd.pl</filename> included in the
+<filename>examples/LDAP/</filename> directory of the Samba source distribution. There are
+two main requirements of this script:
+</para>
+
+<itemizedlist>
+ <listitem><para>All users to be imported to the directory must have a valid uid on the
+ local system. This can be a problem if using a machinej different from the Samba server
+ to import the file.</para></listitem>
+
+ <listitem><para>The local system must have a working installation of the Net::LDAP perl
+ module which can be obtained from with <ulink url="http://search.cpan.org/">http://search.cpan.org/</ulink>
+ by searching for <filename>perl-ldap</filename> or directly from <ulink
+ url="http://perl-ldap.sf.net/">http://perl-ldap.sf.net/</ulink>.
+ </para></listitem>
+</itemizedlist>
+
+<para>
+Please refer to the documentation in the same directory as the script for more details.
+</para>
+
+</sect2>
</sect1>
+
<sect1>
<title>Accounts and Groups management</title>
@@ -582,7 +629,7 @@ ntPassword: 878D8014606CDA29677A44EFA1353FC7
<para>
Please mail all comments regarding this HOWTO to <ulink
url="mailto:jerry@samba.org">jerry@samba.org</ulink>. This documents was
-last updated to reflect the Samba 2.2.3 release.
+last updated to reflect the Samba 2.2.5 release.
</para>
diff --git a/docs/docbook/projdoc/UNIX_INSTALL.sgml b/docs/docbook/projdoc/UNIX_INSTALL.sgml
index 90d48435770..39c0213d79e 100644
--- a/docs/docbook/projdoc/UNIX_INSTALL.sgml
+++ b/docs/docbook/projdoc/UNIX_INSTALL.sgml
@@ -231,7 +231,7 @@
<para><prompt>$ </prompt><userinput>smbclient -L
<replaceable>yourhostname</replaceable></userinput></para>
- <para>Your should get back a list of shares available on
+ <para>You should get back a list of shares available on
your server. If you don't then something is incorrectly setup.
Note that this method can also be used to see what shares
are available on other LanManager clients (such as WfWg).</para>
@@ -316,8 +316,8 @@
<para>By default Samba uses a blank scope ID. This means
all your windows boxes must also have a blank scope ID.
If you really want to use a non-blank scope ID then you will
- need to use the -i &lt;scope&gt; option to nmbd, smbd, and
- smbclient. All your PCs will need to have the same setting for
+ need to use the 'netbios scope' smb.conf option.
+ All your PCs will need to have the same setting for
this to work. I do not recommend scope IDs.</para>
</sect2>
@@ -421,12 +421,6 @@
its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE
or DENY_ALL. There are also special compatibility modes called
DENY_FCB and DENY_DOS.</para>
-
- <para>You can disable share modes using "share modes = no".
- This may be useful on a heavily loaded server as the share
- modes code is very slow. See also the FAST_SHARE_MODES
- option in the Makefile for a way to do full share modes
- very fast using shared memory (if your OS supports it).</para>
</sect2>
<sect2>
diff --git a/docs/docbook/projdoc/cups.sgml b/docs/docbook/projdoc/cups.sgml
new file mode 100644
index 00000000000..57a12843a84
--- /dev/null
+++ b/docs/docbook/projdoc/cups.sgml
@@ -0,0 +1,445 @@
+<chapter id="cups">
+
+
+<chapterinfo>
+ <author>
+ <firstname>Kurt</firstname><surname>Pfeifle</surname>
+ <affiliation>
+ <address>
+ <email>kpfeifle@danka.de</email>
+ </address>
+ </affiliation>
+ </author>
+
+
+ <pubdate> (24 May 2002) </pubdate>
+</chapterinfo>
+
+<title>Printing with CUPS in Samba 2.2.x</title>
+
+
+<sect1>
+<title>Printing with CUPS in Samba 2.2.x</title>
+
+<para>
+<ulink url="http://www.cups.org/">CUPS</ulink> is a newcomer in
+the UNIX printing scene, which has convinced many people upon first trial
+already. However, it has quite a few new features, which make it different
+from other, more traditional printing systems.
+</para>
+</sect1>
+
+
+<sect1>
+<title>Configuring <filename>smb.conf</filename> for CUPS</title>
+
+<para>
+Printing with CUPS in the most basic <filename>smb.conf</filename>
+setup in Samba 2.2.x only needs two settings: <command>printing = cups</command> and
+<command>printcap = cups</command>. While CUPS itself doesn't need a printcap
+anymore, the <filename>cupsd.conf</filename> configuration file knows two directives
+(example: <command>Printcap /etc/printcap</command> and <command>PrintcapFormat
+BSD</command>), which control if such a file should be created for the
+convenience of third party applications. Make sure it is set! For details see
+<command>man cupsd.conf</command> and other CUPS-related documentation.
+</para>
+
+<para>
+If SAMBA is compiled against libcups, then <command>printcap =
+cups</command> uses the CUPS API to list printers, submit jobs, etc. Otherwise it
+maps to the System V commands with an additional <parameter>-oraw</parameter>
+option for printing. On a Linux system, you can use the <command>ldd</command> command to
+find out details (ldd may not be present on other OS platforms, or its
+function may be embodied by a different command):
+</para>
+
+<para>
+<programlisting>transmeta:/home/kurt # ldd `which smbd`
+ libssl.so.0.9.6 => /usr/lib/libssl.so.0.9.6 (0x4002d000)
+ libcrypto.so.0.9.6 => /usr/lib/libcrypto.so.0.9.6 (0x4005a000)
+ libcups.so.2 => /usr/lib/libcups.so.2 (0x40123000)
+ libdl.so.2 => /lib/libdl.so.2 (0x401e8000)
+ libnsl.so.1 => /lib/libnsl.so.1 (0x401ec000)
+ libpam.so.0 => /lib/libpam.so.0 (0x40202000)
+ libc.so.6 => /lib/libc.so.6 (0x4020b000)
+ /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)
+</programlisting></para>
+
+<para>
+The line "libcups.so.2 =&gt; /usr/lib/libcups.so.2
+(0x40123000)" shows there is CUPS support compiled into this version of
+Samba. If this is the case, and <command>printing = cups</command> is set, then any
+otherwise manually set print command in smb.conf is ignored.
+</para>
+</sect1>
+
+
+
+
+<sect1>
+<title>Using CUPS as a mere spooling print server -- "raw"
+printing with vendor drivers download</title>
+
+<para>
+You can setup Samba and your Windows clients to use the
+CUPS print subsystem just as you would with any of the more traditional print
+subsystems: that means the use of vendor provided, native Windows printer
+drivers for each target printer. If you setup the [print$] share to
+download these drivers to the clients, their GDI system (Graphical Device
+Interface) will output the Wndows EMF (Enhanced MetaFile) and
+convert it -- with the help of the printer driver -- locally into the format
+the printer is expecting. Samba and the CUPS print subsystem will have to
+treat these files as raw print files -- they are already in the
+shape to be digestable for the printer. This is the same traditional setup
+for Unix print servers handling Windows client jobs. It does not take much
+CPU power to handle this kind of task efficiently.
+</para>
+</sect1>
+
+
+
+
+<sect1>
+<title>CUPS as a network PostScript RIP -- CUPS drivers working on server, Adobe
+PostScript driver with CUPS-PPDs downloaded to clients</title>
+
+
+<para>
+CUPS is perfectly able to use PPD files (PostScript
+Printer Descriptions). PPDs can control all print device options. They
+are usually provided by the manufacturer -- if you own a PostSript printer,
+that is. PPD files are always a component of PostScript printer drivers on MS
+Windows or Apple Mac OS systems. They are ASCII files containing
+user-selectable print options, mapped to appropriate PostScript, PCL or PJL
+commands for the target printer. Printer driver GUI dialogs translate these
+options "on-the-fly" into buttons and drop-down lists for the user to
+select.
+</para>
+
+<para>
+CUPS can load, without any conversions, the PPD file from
+any Windows (NT is recommended) PostScript driver and handle the options.
+There is a web browser interface to the print options (select
+http://localhost:631/printers/ and click on one "Configure Printer" button
+to see it), a commandline interface (see <command>man lpoptions</command> or
+try if you have <command>lphelp</command> on your system) plus some different GUI frontends on Linux
+UNIX, which can present PPD options to the users. PPD options are normally
+meant to become evaluated by the PostScript RIP on the real PostScript
+printer.
+</para>
+
+<para>
+CUPS doesn't stop at "real" PostScript printers in its
+usage of PPDs. The CUPS developers have extended the PPD concept, to also
+describe available device and driver options for non-PostScript printers
+through CUPS-PPDs.
+</para>
+
+<para>
+This is logical, as CUPS includes a fully featured
+PostScript interpreter (RIP). This RIP is based on Ghostscript. It can
+process all received PostScript (and additionally many other file formats)
+from clients. All CUPS-PPDs geared to non-PostScript printers contain an
+additional line, starting with the keyword <parameter>*cupsFilter</parameter>.
+This line
+tells the CUPS print system which printer-specific filter to use for the
+interpretation of the accompanying PostScript. Thus CUPS lets all its
+printers appear as PostScript devices to its clients, because it can act as a
+PostScript RIP for those printers, processing the received PostScript code
+into a proper raster print format.
+</para>
+
+<para>
+CUPS-PPDs can also be used on Windows-Clients, on top of a
+PostScript driver (recommended is the Adobe one).
+</para>
+
+<para>
+This feature enables CUPS to do a few tricks no other
+spooler can do:
+</para>
+
+<itemizedlist>
+ <listitem><para>act as a networked PostScript RIP (Raster Image Processor), handling
+ printfiles from all client platforms in a uniform way;</para></listitem>
+ <listitem><para>act as a central accounting and billing server, as all files are passed
+ through the <command>pstops</command> Filter and are therefor logged in
+ the CUPS <filename>page&lowbar;log</filename>. - <emphasis>NOTE: </emphasis>this
+ can not happen with "raw" print jobs, which always remain unfiltered
+ per definition;</para></listitem>
+ <listitem><para>enable clients to consolidate on a single PostScript driver, even for
+ many different target printers.</para></listitem>
+</itemizedlist>
+</sect1>
+
+
+
+<sect1>
+<title>Windows Terminal Servers (WTS) as CUPS clients</title>
+
+<para>
+This setup may be of special interest to people
+experiencing major problems in WTS environments. WTS need often a multitude
+of non-PostScript drivers installed to run their clients' variety of
+different printer models. This often imposes the price of much increased
+instability. In many cases, in an attempt to overcome this problem, site
+administrators have resorted to restrict the allowed drivers installed on
+their WTS to one generic PCL- and one PostScript driver. This however
+restricts the clients in the amount of printer options available for them --
+often they can't get out more then simplex prints from one standard paper
+tray, while their devices could do much better, if driven by a different
+driver!
+</para>
+
+<para>
+Using an Adobe PostScript driver, enabled with a CUPS-PPD,
+seems to be a very elegant way to overcome all these shortcomings. The
+PostScript driver is not known to cause major stability problems on WTS (even
+if used with many different PPDs). The clients will be able to (again) chose
+paper trays, duplex printing and other settings. However, there is a certain
+price for this too: a CUPS server acting as a PostScript RIP for its clients
+requires more CPU and RAM than just to act as a "raw spooling" device. Plus,
+this setup is not yet widely tested, although the first feedbacks look very
+promising...
+</para>
+</sect1>
+
+
+<sect1>
+<title>Setting up CUPS for driver download</title>
+
+<para>
+The <command>cupsadsmb</command> utility (shipped with all current
+CUPS versions) makes the sharing of any (or all) installed CUPS printers very
+easy. Prior to using it, you need the following settings in smb.conf:
+</para>
+
+<para><programlisting>[global]
+ load printers = yes
+ printing = cups
+ printcap name = cups
+
+[printers]
+ comment = All Printers
+ path = /var/spool/samba
+ browseable = no
+ public = yes
+ guest ok = yes
+ writable = no
+ printable = yes
+ printer admin = root
+
+[print$]
+ comment = Printer Drivers
+ path = /etc/samba/drivers
+ browseable = yes
+ guest ok = no
+ read only = yes
+ write list = root
+</programlisting></para>
+
+<para>
+For licensing reasons the necessary files of the Adobe
+Postscript driver can not be distributed with either Samba or CUPS. You need
+to download them yourself from the Adobe website. Once extracted, create a
+<filename>drivers</filename> directory in the CUPS data directory (usually
+<filename>/usr/share/cups/</filename>). Copy the Adobe files using
+UPPERCASE filenames, to this directory as follows:
+</para>
+
+<para><programlisting>
+ ADFONTS.MFM
+ ADOBEPS4.DRV
+ ADOBEPS4.HLP
+ ADOBEPS5.DLL
+ ADOBEPSU.DLL
+ ADOBEPSU.HLP
+ DEFPRTR2.PPD
+ ICONLIB.DLL
+</programlisting></para>
+
+<para>
+Users of the ESP Print Pro software are able to install
+their "Samba Drivers" package for this purpose with no problem.
+</para>
+</sect1>
+
+
+
+<sect1>
+<title>Sources of CUPS drivers / PPDs</title>
+
+<para>
+On the internet you can find now many thousand CUPS-PPD
+files (with their companion filters), in many national languages,
+supporting more than 1.000 non-PostScript models.
+</para>
+
+<itemizedlist>
+ <listitem><para><ulink url="http://wwwl.easysw.com/printpro/">ESP PrintPro
+ (http://wwwl.easysw.com/printpro/)</ulink>
+ (commercial, non-Free) is packaged with more than 3.000 PPDs, ready for
+ successful usage "out of the box" on Linux, IBM-AIX, HP-UX, Sun-Solaris,
+ SGI-IRIX, Compaq Tru64, Digital Unix and some more commercial Unices (it
+ is written by the CUPS developers themselves and its sales help finance
+ the further development of CUPS, as they feed their creators)</para></listitem>
+ <listitem><para>the <ulink
+ url="http://gimp-print.sourceforge.net/">Gimp-Print-Project
+ (http://gimp-print.sourceforge.net/)</ulink>
+ (GPL, Free Software) provides around 120 PPDs (supporting nearly 300
+ printers, many driven to photo quality output), to be used alongside the
+ Gimp-Print CUPS filters;</para></listitem>
+ <listitem><para><ulink url="http://www.turboprint.com/">TurboPrint
+ (http://www.turboprint.com/)</ulink>
+ (Shareware, non-Freee) supports roughly the same amount of printers in
+ excellent quality;</para></listitem>
+ <listitem><para><ulink
+ url="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/">OMNI
+ (http://www-124.ibm.com/developerworks/oss/linux/projects/omni/)</ulink>
+ (LPGL, Free) is a package made by IBM, now containing support for more
+ than 400 printers, stemming from the inheritance of IBM OS/2 KnowHow
+ ported over to Linux (CUPS support is in a Beta-stage at present);</para></listitem>
+ <listitem><para><ulink url="http://hpinkjet.sourceforge.net/">HPIJS
+ (http://hpinkjet.sourceforge.net/)</ulink>
+ (BSD-style licnes, Free) supports around 120 of HP's own printers and is
+ also providing excellent print quality now;</para></listitem>
+ <listitem><para><ulink
+ url="http://www.linuxprinting.org/">Foomatic/cupsomatic (http://www.linuxprinting.org/)</ulink>
+ (LPGL, Free) from Linuxprinting.org are providing PPDs for practically every
+ Ghostscript filter known to the world, now usable with CUPS.</para></listitem>
+</itemizedlist>
+
+<para>
+<emphasis>NOTE: </emphasis>the cupsomatic trick from Linuxprinting.org is
+working different from the other drivers. While the other drivers take the
+generic CUPS raster (produced by CUPS' own pstoraster PostScript RIP) as
+their input, cupsomatic "kidnaps" the PostScript inside CUPS, before
+RIP-ping, deviates it to an external Ghostscript installation (which now
+becomes the RIP) and gives it back to a CUPS backend once Ghostscript is
+finished. -- CUPS versions from 1.1.15 and later will provide their pstoraster
+PostScript RIP function again inside a system-wide Ghostscript
+installation rather than in "their own" pstoraster filter. (This
+CUPS-enabling Ghostscript version may be installed either as a
+patch to GNU or AFPL Ghostscript, or as a complete ESP Ghostscript package).
+However, this will not change the cupsomatic approach of guiding the printjob
+along a different path through the filtering system than the standard CUPS
+way...
+</para>
+
+<para>
+Once you installed a printer inside CUPS with one of the
+recommended methods (the lpadmin command, the web browser interface or one of
+the available GUI wizards), you can use <command>cupsaddsmb</command> to share the
+printer via Samba. <command>cupsaddsmb</command> prepares the driver files for
+comfortable client download and installation upon their first contact with
+this printer share.
+</para>
+
+
+
+<sect2>
+<title><command>cupsaddsmb</command></title>
+
+
+<para>
+The <command>cupsaddsmb</command> command copies the needed files
+for convenient Windows client installations from the previously prepared CUPS
+data directory to your [print$] share. Additionally, the PPD
+associated with this printer is copied from <filename>/etc/cups/ppd/</filename> to
+[print$].
+</para>
+
+<para><programlisting>
+<prompt>root# </prompt> <command>cupsaddsmb -U root infotec_IS2027</command>
+Password for root required to access localhost via SAMBA: <userinput>[type in password 'secret']</userinput>
+</programlisting></para>
+
+<para>
+To share all printers and drivers, use the <parameter>-a</parameter>
+parameter instead of a printer name.
+</para>
+
+
+<para>
+Probably you want to see what's going on. Use the
+<parameter>-v</parameter> parameter to get a more verbose output:
+</para>
+
+<para><programlisting>
+<prompt>root# </prompt> cupsaddsmb -v -U root infotec_IS2027
+ Password for root required to access localhost via SAMBA:
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir W32X86;put /var/spool/cups/tmp/3cd1cc66376c0 W32X86/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADOBEPS5.DLL W32X86/ADOBEPS5.DLL;put /usr/share/cups/drivers/ADOBEPSU.DLL W32X86/ADOBEPSU.DLL;put /usr/share/cups/drivers/ADOBEPSU.HLP W32X86/ADOBEPSU.HLP'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \W32X86
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \W32X86/infotec_IS2027.PPD (17394.6 kb/s) (average 17395.2 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS5.DLL as \W32X86/ADOBEPS5.DLL (10877.4 kb/s) (average 11343.0 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.DLL as \W32X86/ADOBEPSU.DLL (5095.2 kb/s) (average 9260.4 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.HLP as \W32X86/ADOBEPSU.HLP (8828.7 kb/s) (average 9247.1 kb/s)
+
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir WIN40;put /var/spool/cups/tmp/3cd1cc66376c0 WIN40/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADFONTS.MFM WIN40/ADFONTS.MFM;put /usr/share/cups/drivers/ADOBEPS4.DRV WIN40/ADOBEPS4.DRV;put /usr/share/cups/drivers/ADOBEPS4.HLP WIN40/ADOBEPS4.HLP;put /usr/share/cups/drivers/DEFPRTR2.PPD WIN40/DEFPRTR2.PPD;put /usr/share/cups/drivers/ICONLIB.DLL WIN40/ICONLIB.DLL;put /usr/share/cups/drivers/PSMON.DLL WIN40/PSMON.DLL;'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \WIN40
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \WIN40/infotec_IS2027.PPD (26091.5 kb/s) (average 26092.8 kb/s)
+ putting file /usr/share/cups/drivers/ADFONTS.MFM as \WIN40/ADFONTS.MFM (11241.6 kb/s) (average 11812.9 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.DRV as \WIN40/ADOBEPS4.DRV (16640.6 kb/s) (average 14679.3 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.HLP as \WIN40/ADOBEPS4.HLP (11285.6 kb/s) (average 14281.5 kb/s)
+ putting file /usr/share/cups/drivers/DEFPRTR2.PPD as \WIN40/DEFPRTR2.PPD (823.5 kb/s) (average 12944.0 kb/s)
+ putting file /usr/share/cups/drivers/ICONLIB.DLL as \WIN40/ICONLIB.DLL (19226.2 kb/s) (average 13169.7 kb/s)
+ putting file /usr/share/cups/drivers/PSMON.DLL as \WIN40/PSMON.DLL (18666.1 kb/s) (average 13266.7 kb/s)
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"'
+ cmd = adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"'
+ cmd = adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'setdriver infotec_IS2027 infotec_IS2027'
+ cmd = setdriver infotec_IS2027 infotec_IS2027
+ Succesfully set infotec_IS2027 to driver infotec_IS2027.
+
+ <prompt>root# </prompt>
+</programlisting></para>
+
+<para>
+If you look closely, you'll discover your root password
+was transfered unencrypted over the wire, so beware! Also, if you look
+further her, you'll discover error messages like
+<constant>NT_STATUS_OBJECT_NAME_COLLISION</constant> in between. They occur, because
+the directories <filename>WIN40</filename> and <filename>W32X86</filename> already
+existed in the [print$] driver download share (from a previous driver
+installation). They are harmless here.
+</para>
+
+<para>
+Now your printer is prepared for the clients to use. From
+a client, browse to the CUPS/Samba server, open the "Printers"
+share, right-click on this printer and select "Install..." or
+"Connect..." (depending on the Windows version you use). Now their
+should be a new printer in your client's local "Printers" folder,
+named (in my case) "infotec_IS2027 on kdebitshop"
+</para>
+
+<para>
+<emphasis>NOTE: </emphasis>
+<command>cupsaddsmb</command> will only reliably work i
+with CUPS version 1.1.15 or higher
+and Samba from 2.2.4. If it doesn't work, or if the automatic printer
+driver download to the clients doesn't succeed, you can still manually
+install the CUPS printer PPD on top of the Adobe PostScript driver on
+clients and then point the client's printer queue to the Samba printer
+share for connection, should you desire to use the CUPS networked
+PostScript RIP functions.
+</para>
+</sect2>
+</sect1>
+
+
+</chapter>
diff --git a/docs/docbook/projdoc/printer_driver2.sgml b/docs/docbook/projdoc/printer_driver2.sgml
index 84a24bcdefc..2afba6b5968 100644
--- a/docs/docbook/projdoc/printer_driver2.sgml
+++ b/docs/docbook/projdoc/printer_driver2.sgml
@@ -107,7 +107,7 @@ the client.
<para>
These parameters, including <parameter>printer driver
-file</parameter> parameter, are being depreciated and should not
+file</parameter> parameter, are being deprecated and should not
be used in new installations. For more information on this change,
you should refer to the <link linkend="MIGRATION">Migration section</link>
of this document.
@@ -259,37 +259,37 @@ driver now?</emphasis>
</para>
<para>
-Click "No" in the error dialog and you will be presented with
-the printer properties window. The way assign a driver to a
+Click <emphasis>No</emphasis> in the error dialog and you will be presented with
+the printer properties window. The way assign a driver to a
printer is to either
</para>
-
+
<itemizedlist>
- <listitem><para>Use the "New Driver..." button to install
+ <listitem><para>Use the "New Driver..." button to install
a new printer driver, or</para></listitem>
-
- <listitem><para>Select a driver from the popup list of
+
+ <listitem><para>Select a driver from the popup list of
installed drivers. Initially this list will be empty.</para>
</listitem>
</itemizedlist>
-
-<para>If you wish to install printer drivers for client
-operating systems other than "Windows NT x86", you will need
+
+<para>If you wish to install printer drivers for client
+operating systems other than "Windows NT x86", you will need
to use the "Sharing" tab of the printer properties dialog.</para>
-<para>Assuming you have connected with a root account, you
-will also be able modify other printer properties such as
+<para>Assuming you have connected with a root account, you
+will also be able modify other printer properties such as
ACLs and device settings using this dialog box.</para>
-<para>A few closing comments for this section, it is possible
+<para>A few closing comments for this section, it is possible
on a Windows NT print server to have printers
listed in the Printers folder which are not shared. Samba does
not make this distinction. By definition, the only printers of
which Samba is aware are those which are specified as shares in
<filename>smb.conf</filename>.</para>
-
+
<para>Another interesting side note is that Windows NT clients do
-not use the SMB printer share, but rather can print directly
+not use the SMB printer share, but rather can print directly
to any printer on another Windows NT host using MS-RPC. This
of course assumes that the printing client has the necessary
privileges on the remote host serving the printer. The default
@@ -297,42 +297,77 @@ permissions assigned by Windows NT to a printer gives the "Print"
permissions to the "Everyone" well-known group.
</para>
-</sect2>
+</sect2>
+
+<sect2>
+<title>DeviceModes and New Printers</title>
+
+<para>
+In order for a printer to be truly usbla eby a Windows NT/2k/XP client,
+it must posses:
+</para>
+
+<itemizedlist>
+ <listitem><para>a valid Device Mode generated by the driver for the printer, and</para></listitem>
+ <listitem><para>a complete set of PrinterDriverData generated by the driver.</para></listitem>
+</itemizedlist>
+
+<para>
+If either one of these is incomplete, the clients can produce less than optimal
+output at best or in the worst cases, unreadable garbage or nothing at all.
+Fortunately, most driver generate the printer driver that is needed.
+However, the client must be tickled to generate a valid Device Mode and set it on the
+server. The easist means of doing so is to simply set the page orientation on
+the server's printer using the native Windows NT/2k printer properties page from
+a Window clients. Make sure to apply changes between swapping the page orientation
+to cause the change to actually take place. Be aware that this can only be done
+by a "printer admin" (the reason should be obvious I hope).
+</para>
+
+<para>
+Samba also includes a service level parameter name <ulink url="smb.conf.5.html#DEFAULTDEVMODE">default
+devmode</ulink> for generating a default device mode for a printer. Some driver
+will function fine with this default set of properties. Others may crash the client's
+spooler service. Use this parameter with caution. It is always better to have the client
+generate a valid device mode for the printer and store it on the server for you.
+</para>
+
+</sect2>
<sect2>
<title>Support a large number of printers</title>
-
+
<para>One issue that has arisen during the development
phase of Samba 2.2 is the need to support driver downloads for
-100's of printers. Using the Windows NT APW is somewhat
-awkward to say the list. If more than one printer are using the
+100's of printers. Using the Windows NT APW is somewhat
+awkward to say the list. If more than one printer are using the
same driver, the <ulink url="rpcclient.1.html"><command>rpcclient's
-setdriver command</command></ulink> can be used to set the driver
+setdriver</command></ulink> command can be used to set the driver
associated with an installed driver. The following is example
of how this could be accomplished:</para>
-
-<para><programlisting>
+
+<para><programlisting>
<prompt>$ </prompt>rpcclient pogo -U root%secret -c "enumdrivers"
Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-
+
[Windows NT x86]
Printer Driver Info 1:
Driver Name: [HP LaserJet 4000 Series PS]
-
+
Printer Driver Info 1:
Driver Name: [HP LaserJet 2100 Series PS]
-
+
Printer Driver Info 1:
Driver Name: [HP LaserJet 4Si/4SiMX PS]
-
+
<prompt>$ </prompt>rpcclient pogo -U root%secret -c "enumprinters"
Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
flags:[0x800000]
name:[\\POGO\hp-print]
description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
comment:[]
-
+
<prompt>$ </prompt>rpcclient pogo -U root%secret \
<prompt>&gt; </prompt> -c "setdriver hp-print \"HP LaserJet 4000 Series PS\""
Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
@@ -344,10 +379,10 @@ Successfully set hp-print to driver HP LaserJet 4000 Series PS.
<sect2>
<title>Adding New Printers via the Windows NT APW</title>
-
+
<para>
By default, Samba offers all printer shares defined in <filename>smb.conf</filename>
-in the "Printers..." folder. Also existing in this folder is the Windows NT
+in the "Printers..." folder. Also existing in this folder is the Windows NT
Add Printer Wizard icon. The APW will be show only if
</para>
@@ -356,24 +391,24 @@ Add Printer Wizard icon. The APW will be show only if
execute an OpenPrinterEx(\\server) with administrative
privileges (i.e. root or <parameter>printer admin</parameter>).
</para></listitem>
-
- <listitem><para><ulink url="smb.conf.5.html#SHOWADDPRINTERWIZARD"><parameter>show
+
+ <listitem><para><ulink url="smb.conf.5.html#SHOWADDPRINTERWIZARD"><parameter>show
add printer wizard = yes</parameter></ulink> (the default).
</para></listitem>
</itemizedlist>
<para>
-In order to be able to use the APW to successfully add a printer to a Samba
-server, the <ulink url="smb.conf.5.html#ADDPRINTERCOMMAND"><parameter>add
+In order to be able to use the APW to successfully add a printer to a Samba
+server, the <ulink url="smb.conf.5.html#ADDPRINTERCOMMAND"><parameter>add
printer command</parameter></ulink> must have a defined value. The program
-hook must successfully add the printer to the system (i.e.
-<filename>/etc/printcap</filename> or appropriate files) and
+hook must successfully add the printer to the system (i.e.
+<filename>/etc/printcap</filename> or appropriate files) and
<filename>smb.conf</filename> if necessary.
</para>
<para>
-When using the APW from a client, if the named printer share does
-not exist, <command>smbd</command> will execute the <parameter>add printer
+When using the APW from a client, if the named printer share does
+not exist, <command>smbd</command> will execute the <parameter>add printer
command</parameter> and reparse to the <filename>smb.conf</filename>
to attempt to locate the new printer share. If the share is still not defined,
an error of "Access Denied" is returned to the client. Note that the
@@ -429,6 +464,13 @@ that generates a listing of ports on a system.
http://imprints.sourceforge.net/</ulink> as well as the documentation
included with the imprints source distribution. This section will
only provide a brief introduction to the features of Imprints.</para>
+
+ <para>As of June 16, 2002 (quite a bit earlier actually), the Imprints
+ project is in need of a new maintainer. The most important skill
+ is decent perl coding and an interest in MS-RPC based printing using Samba.
+ If you wich to volunteer, please coordinate your efforts on the samba-technical
+ mailing list.
+ </para>
<sect2>
@@ -614,76 +656,21 @@ installations
</warning>
+<sect2>
+<title>Parameters in <filename>smb.conf(5)</filename> for Backwards Compatibility</title>
+
<para>
The have been two new parameters add in Samba 2.2.2 to for
better support of Samba 2.0.x backwards capability (<parameter>disable
spoolss</parameter>) and for using local printers drivers on Windows
NT/2000 clients (<parameter>use client driver</parameter>). Both of
these options are described in the smb.coinf(5) man page and are
-disabled by default.
+disabled by default. Use them with caution.
</para>
+</sect2>
</sect1>
-<!--
-
- This comment from rpc_server/srv_spoolss_nt.c:_spoolss_open_printer_ex()
- needs to be added into a section probably. This is to remind me it needs
- to be done. -jerry
-
- /*
- * If the openprinterex rpc call contains a devmode,
- * it's a per-user one. This per-user devmode is derivated
- * from the global devmode. Openprinterex() contains a per-user
- * devmode for when you do EMF printing and spooling.
- * In the EMF case, the NT workstation is only doing half the job
- * of rendering the page. The other half is done by running the printer
- * driver on the server.
- * The EMF file doesn't contain the page description (paper size, orientation, ...).
- * The EMF file only contains what is to be printed on the page.
- * So in order for the server to know how to print, the NT client sends
- * a devicemode attached to the openprinterex call.
- * But this devicemode is short lived, it's only valid for the current print job.
- *
- * If Samba would have supported EMF spooling, this devicemode would
- * have been attached to the handle, to sent it to the driver to correctly
- * rasterize the EMF file.
- *
- * As Samba only supports RAW spooling, we only receive a ready-to-print file,
- * we just act as a pass-thru between windows and the printer.
- *
- * In order to know that Samba supports only RAW spooling, NT has to call
- * getprinter() at level 2 (attribute field) or NT has to call startdoc()
- * and until NT sends a RAW job, we refuse it.
- *
- * But to call getprinter() or startdoc(), you first need a valid handle,
- * and to get an handle you have to call openprintex(). Hence why you have
- * a devicemode in the openprinterex() call.
- *
- *
- * Differences between NT4 and NT 2000.
- * NT4:
- *
- * On NT4, you only have a global devicemode. This global devicemode can be changed
- * by the administrator (or by a user with enough privs). Every time a user
- * wants to print, the devicemode is reset to the default. In Word, every time
- * you print, the printer's characteristics are always reset to the global devicemode.
- *
- * NT 2000:
- *
- * In W2K, there is the notion of per-user devicemode. The first time you use
- * a printer, a per-user devicemode is build from the global devicemode.
- * If you change your per-user devicemode, it is saved in the registry, under the
- * H_KEY_CURRENT_KEY sub_tree. So that every time you print, you have your default
- * printer preferences available.
- *
- * To change the per-user devicemode: it's the "Printing Preferences ..." button
- * on the General Tab of the printer properties windows.
- *
- * To change the global devicemode: it's the "Printing Defaults..." button
- * on the Advanced Tab of the printer properties window.
--->
-
</chapter>
diff --git a/docs/docbook/projdoc/samba-doc.sgml b/docs/docbook/projdoc/samba-doc.sgml
index 28baa7f6094..671ff453176 100644
--- a/docs/docbook/projdoc/samba-doc.sgml
+++ b/docs/docbook/projdoc/samba-doc.sgml
@@ -3,6 +3,7 @@
<!ENTITY ENCRYPTION SYSTEM "ENCRYPTION.sgml">
<!ENTITY MS-Dfs-Setup SYSTEM "msdfs_setup.sgml">
<!ENTITY PRINTER-DRIVER2 SYSTEM "printer_driver2.sgml">
+<!ENTITY CUPS SYSTEM "cups.sgml">
<!ENTITY DOMAIN-MEMBER SYSTEM "DOMAIN_MEMBER.sgml">
<!ENTITY WINBIND SYSTEM "winbind.sgml">
<!ENTITY NT-Security SYSTEM "NT_Security.sgml">
@@ -63,6 +64,7 @@ Cheers, jerry
&MS-Dfs-Setup;
&NT-Security;
&PRINTER-DRIVER2;
+&CUPS;
&DOMAIN-MEMBER;
&Samba-PDC-HOWTO;
&Samba-BDC-HOWTO;
diff --git a/docs/docbook/projdoc/winbind.sgml b/docs/docbook/projdoc/winbind.sgml
index 6fd7d09d3e5..52f608fc276 100644
--- a/docs/docbook/projdoc/winbind.sgml
+++ b/docs/docbook/projdoc/winbind.sgml
@@ -139,7 +139,7 @@
workstations into a NT based organization.</para>
<para>Another interesting way in which we expect Winbind to
- be used is as a central part of UNIX based appliances. Appliances
+ be used is as a central part of UNIX based appliances. Appliances
that provide file and print services to Microsoft based networks
will be able to use Winbind to provide seamless integration of
the appliance into the domain.</para>
@@ -315,21 +315,13 @@
<para>
Many thanks to John Trostel <ulink
url="mailto:jtrostel@snapserver.com">jtrostel@snapserver.com</ulink>
-for providing the HOWTO for this section.
-</para>
-
-<para>
-This HOWTO describes how to get winbind services up and running
+for providing the original Linux version of this HOWTO which
+describes how to get winbind services up and running
to control access and authenticate users on your Linux box using
-the winbind services which come with SAMBA 2.2.2.
+the winbind services which are included with the SAMBA 2.2.2 and later
+releases.
</para>
-<para>
-There is also some Solaris specific information in
-<filename>docs/textdocs/Solaris-Winbind-HOWTO.txt</filename>.
-Future revisions of this document will incorporate that
-information.
-</para>
@@ -338,16 +330,16 @@ information.
<para>
This HOWTO describes the procedures used to get winbind up and
-running on my RedHat 7.1 system. Winbind is capable of providing access
-and authentication control for Windows Domain users through an NT
-or Win2K PDC for 'regular' services, such as telnet a nd ftp, as
-well for SAMBA services.
+running on a RedHat 7.1 system. Winbind is capable of providing access
+and authentication control for Windows Domain users through an NT
+or Win2K PDC for 'regular' services, such as telnet and ftp, as
+well providing dynamic uid/gid allocation for Samba.
</para>
<para>
-This HOWTO has been written from a 'RedHat-centric' perspective, so if
-you are using another distribution, you may have to modify the instructions
-somewhat to fit the way your distribution works.
+This HOWTO has been written from a 'RedHat-centric' perspective, so if
+you are using another distribution (or operating system), you may have
+to modify the instructions somewhat to fit the way your distribution works.
</para>
@@ -356,10 +348,10 @@ somewhat to fit the way your distribution works.
<para>
<emphasis>Why should I to this?</emphasis>
</para>
-
- <para>This allows the SAMBA administrator to rely on the
- authentication mechanisms on the NT/Win2K PDC for the authentication
- of domain members. NT/Win2K users no longer need to have separate
+
+ <para>This allows the SAMBA administrator to rely on the
+ authentication mechanisms on the NT/Win2K PDC for the authentication
+ of domain members. NT/Win2K users no longer need to have separate
accounts on the SAMBA server.
</para>
</listitem>
@@ -368,14 +360,12 @@ somewhat to fit the way your distribution works.
<para>
<emphasis>Who should be reading this document?</emphasis>
</para>
-
+
<para>
- This HOWTO is designed for system administrators. If you are
- implementing SAMBA on a file server and wish to (fairly easily)
+ This HOWTO is designed for system administrators. If you are
+ implementing SAMBA on a file server and wish to (fairly easily)
integrate existing NT/Win2K users from your PDC onto the
- SAMBA server, this HOWTO is for you. That said, I am no NT or PAM
- expert, so you may find a better or easier way to accomplish
- these tasks.
+ SAMBA server, this HOWTO is for you.
</para>
</listitem>
</itemizedlist>
@@ -386,38 +376,39 @@ somewhat to fit the way your distribution works.
<title>Requirements</title>
<para>
-If you have a samba configuration file that you are currently
-using... <emphasis>BACK IT UP!</emphasis> If your system already uses PAM,
-<emphasis>back up the <filename>/etc/pam.d</filename> directory
-contents!</emphasis> If you haven't already made a boot disk,
+If you have a samba configuration file that you are currently
+using... <emphasis>BACK IT UP!</emphasis> If your system already uses PAM,
+<emphasis>back up the <filename>/etc/pam.d</filename> (or <filename>/etc/pam.conf</filename>)
+directory contents!</emphasis> If you haven't already made a boot disk,
<emphasis>MAKE ONE NOW!</emphasis>
</para>
<para>
-Messing with the pam configuration files can make it nearly impossible
-to log in to yourmachine. That's why you want to be able to boot back
-into your machine in single user mode and restore your
-<filename>/etc/pam.d</filename> back to the original state they were in if
-you get frustrated with the way things are going. ;-)
+Messing with the pam configuration files can make it nearly impossible
+to log in to your machine. That's why you want to be able to boot back
+into your machine in single user mode and restore your
+<filename>/etc/pam.d</filename> (or <filename>pam.conmf</filename>) back to
+the original state they were in if
+you get frustrated with the way things are going.
</para>
<para>
-The latest version of SAMBA (version 2.2.2 as of this writing), now
-includes a functioning winbindd daemon. Please refer to the
-<ulink url="http://samba.org/">main SAMBA web page</ulink> or,
-better yet, your closest SAMBA mirror site for instructions on
-downloading the source code.
+The first SAMBA release to inclue a stable winbindd daemon was 2.2.2. Please refer to the
+<ulink url="http://samba.org/">main SAMBA web page</ulink> or,
+better yet, your closest SAMBA mirror site for instructions on
+downloading the source code. it is generally advised to obtain the lates
+Samba release as bugs are constantly being fixed.
</para>
<para>
-To allow Domain users the ability to access SAMBA shares and
-files, as well as potentially other services provided by your
+To allow Domain users the ability to access SAMBA shares and
+files, as well as potentially other services provided by your
SAMBA machine, PAM (pluggable authentication modules) must
-be setup properly on your machine. In order to compile the
-winbind modules, you should have at least the pam libraries resident
-on your system. For recent RedHat systems (7.1, for instance), that
-means <filename>pam-0.74-22</filename>. For best results, it is helpful to also
-install the development packages in <filename>pam-devel-0.74-22</filename>.
+be setup properly on your machine. In order to compile the
+winbind modules, you must have at the PAM libraries and header files resident
+on your system. For recent RedHat systems (7.x, for instance), that
+means installing both <filename>pam</filename> and <filename>pam-devel</filename> RPM.
+The former is installed by default on all Linux systems of which the author is aware.
</para>
</sect2>
@@ -427,33 +418,33 @@ install the development packages in <filename>pam-devel-0.74-22</filename>.
<title>Testing Things Out</title>
<para>
-Before starting, it is probably best to kill off all the SAMBA
-related daemons running on your server. Kill off all <command>smbd</command>,
-<command>nmbd</command>, and <command>winbindd</command> processes that may
-be running. To use PAM, you will want to make sure that you have the
-standard PAM package (for RedHat) which supplies the <filename>/etc/pam.d</filename>
-directory structure, including the pam modules are used by pam-aware
-services, several pam libraries, and the <filename>/usr/doc</filename>
-and <filename>/usr/man</filename> entries for pam. Winbind built better
-in SAMBA if the pam-devel package was also installed. This package includes
-the header files needed to compile pam-aware applications. For instance,
-my RedHat system has both <filename>pam-0.74-22</filename> and
-<filename>pam-devel-0.74-22</filename> RPMs installed.
+Before starting, kill off all the SAMBA related daemons running on your server. Kill off
+all <command>smbd</command>, <command>nmbd</command>, and <command>winbindd</command> processes that may
+be running (<command>winbindd</command> will only be running if you have ao previous Winbind
+installation...but why would you be reading tis if that were the case?). To use PAM, you will
+want to make sure that you have the standard PAM package (for RedHat) which supplies the <filename>/etc/pam.d</filename>
+directory structure, including the pam modules are used by pam-aware
+services, several pam libraries, and the <filename>/usr/doc</filename>
+and <filename>/usr/man</filename> entries for pam. Samba will require
+the pam-devel package if you plan to build the <filename>pam_winbind.so</filename> library or
+include the <command>--with-pam</command> option to the configure script.
+This package includes the header files needed to compile pam-aware applications.
+</para>
+
+<para>
+[I have no idea which Solaris packages are quired for PAM libraries and
+development files. If you know, please mail me the information and I will include
+it in the next revision of this HOWTO. --jerry@samba.org]
</para>
<sect3>
-<title>Configure and compile SAMBA</title>
+<title>Configure and Compile SAMBA</title>
<para>
-The configuration and compilation of SAMBA is pretty straightforward.
-The first three steps may not be necessary depending upon
-whether or not you have previously built the Samba binaries.
+The configuration and compilation of SAMBA is straightforward.
</para>
<para><programlisting>
-<prompt>root#</prompt> <command>autoconf</command>
-<prompt>root#</prompt> <command>make clean</command>
-<prompt>root#</prompt> <command>rm config.cache</command>
<prompt>root#</prompt> <command>./configure --with-winbind</command>
<prompt>root#</prompt> <command>make</command>
<prompt>root#</prompt> <command>make install</command>
@@ -463,26 +454,27 @@ whether or not you have previously built the Samba binaries.
<para>
This will, by default, install SAMBA in <filename>/usr/local/samba</filename>.
See the main SAMBA documentation if you want to install SAMBA somewhere else.
-It will also build the winbindd executable and libraries.
+It will also build the winbindd executable and NSS library.
</para>
</sect3>
<sect3>
-<title>Configure <filename>nsswitch.conf</filename> and the
+<title>Configure <filename>nsswitch.conf</filename> and the
winbind libraries</title>
<para>
-The libraries needed to run the <command>winbindd</command> daemon
-through nsswitch need to be copied to their proper locations, so
+The libraries needed to run the <command>winbindd</command> daemon
+through nsswitch need to be copied to their proper locations.
</para>
<para>
-<prompt>root#</prompt> <command>cp ../samba/source/nsswitch/libnss_winbind.so /lib</command>
+<prompt>root#</prompt> <command>cp nsswitch/libnss_winbind.so /lib</command>
+<prompt>root#</prompt> <command>chmod 755 /lib/libnss_winbind.so</command>
</para>
<para>
-I also found it necessary to make the following symbolic link:
+It necessary to make the following symbolic link:
</para>
<para>
@@ -490,45 +482,35 @@ I also found it necessary to make the following symbolic link:
</para>
<para>
-Now, as root you need to edit <filename>/etc/nsswitch.conf</filename> to
-allow user and group entries to be visible from the <command>winbindd</command>
-daemon. My <filename>/etc/nsswitch.conf</filename> file look like
-this after editing:
+The <filename>.2</filename> extension is due to the version of glibc used on your Linux host.
+for most modern systems, the file extension is correct. However, some other operating systems,
+Solaris 7/8 being the most common, the destination filename should be replaced with
+<filename>/lib/nss_winbind.so.1</filename>
+</para>
+
+<para>
+Now, as root edit <filename>/etc/nsswitch.conf</filename> to
+allow user and group entries to be visible from the <command>winbindd</command>
+daemon. After editing, the file look appear:
</para>
<para><programlisting>
passwd: files winbind
- shadow: files
+ shadow: files
group: files winbind
</programlisting></para>
-<para>
-The libraries needed by the winbind daemon will be automatically
-entered into the <command>ldconfig</command> cache the next time
-your system reboots, but it
-is faster (and you don't need to reboot) if you do it manually:
-</para>
-
-<para>
-<prompt>root#</prompt> <command>/sbin/ldconfig -v | grep winbind</command>
-</para>
-
-<para>
-This makes <filename>libnss_winbind</filename> available to winbindd
-and echos back a check to you.
-</para>
-
</sect3>
<sect3>
-<title>Configure smb.conf</title>
+<title>Configure <filename>smb.conf</filename></title>
<para>
-Several parameters are needed in the smb.conf file to control
-the behavior of <command>winbindd</command>. Configure
-<filename>smb.conf</filename> These are described in more detail in
-the <ulink url="winbindd.8.html">winbindd(8)</ulink> man page. My
+Several parameters are needed in the smb.conf file to control
+the behavior of <command>winbindd</command>. Configure
+<filename>smb.conf</filename> These are described in more detail in
+the <ulink url="winbindd.8.html">winbindd(8)</ulink> man page. My
<filename>smb.conf</filename> file was modified to
include the following entries in the [global] section:
</para>
@@ -543,9 +525,11 @@ include the following entries in the [global] section:
# use gids from 10000 to 20000 for domain groups
<ulink url="winbindd.8.html#WINBINDGID">winbind gid</ulink> = 10000-20000
# allow enumeration of winbind users and groups
+ # might need to disable these next two for performance
+ # reasons on the winbindd host
<ulink url="winbindd.8.html#WINBINDENUMUSERS">winbind enum users</ulink> = yes
<ulink url="winbindd.8.html#WINBINDENUMGROUP">winbind enum groups</ulink> = yes
- # give winbind users a real shell (only needed if they have telnet access)
+ # give winbind users a real shell (only needed if they have telnet/sshd/etc... access)
<ulink url="winbindd.8.html#TEMPLATEHOMEDIR">template homedir</ulink> = /home/winnt/%D/%U
<ulink url="winbindd.8.html#TEMPLATESHELL">template shell</ulink> = /bin/bash
</programlisting></para>
@@ -557,12 +541,12 @@ include the following entries in the [global] section:
<title>Join the SAMBA server to the PDC domain</title>
<para>
-Enter the following command to make the SAMBA server join the
-PDC domain, where <replaceable>DOMAIN</replaceable> is the name of
-your Windows domain and <replaceable>Administrator</replaceable> is
+Enter the following command to make the SAMBA server join the
+PDC domain, where <replaceable>DOMAIN</replaceable> is the name of
+your Windows domain and <replaceable>Administrator</replaceable> is
a domain user who has administrative privileges in the domain.
</para>
-
+
<para>
<prompt>root#</prompt> <command>/usr/local/samba/bin/smbpasswd -j DOMAIN -r PDC -U Administrator</command>
@@ -570,8 +554,8 @@ a domain user who has administrative privileges in the domain.
<para>
-The proper response to the command should be: "Joined the domain
-<replaceable>DOMAIN</replaceable>" where <replaceable>DOMAIN</replaceable>
+The proper response to the command should be: "Joined the domain
+<replaceable>DOMAIN</replaceable>" where <replaceable>DOMAIN</replaceable>
is your DOMAIN name.
</para>
@@ -582,19 +566,20 @@ is your DOMAIN name.
<title>Start up the winbindd daemon and test it!</title>
<para>
-Eventually, you will want to modify your smb startup script to
-automatically invoke the winbindd daemon when the other parts of
+Eventually, you will want to modify your smb startup script to
+automatically invoke the winbindd daemon when the other parts of
SAMBA start, but it is possible to test out just the winbind
-portion first. To start up winbind services, enter the following
+portion first. To start up winbind services, enter the following
command as root:
</para>
-
+
<para>
-<prompt>root#</prompt> <command>/usr/local/samba/bin/winbindd</command>
+<prompt>root#</prompt> <command>export PATH=$PATH:/usr/local/samba/bin</command>
+<prompt>root#</prompt> <command>winbindd</command>
</para>
<para>
-I'm always paranoid and like to make sure the daemon
+I'm always paranoid and like to make sure the daemon
is really running...
</para>
@@ -609,16 +594,21 @@ This command should produce output like this, if the daemon is running
</para>
<para>
-Now... for the real test, try to get some information about the
+Note that a sample RedHat init script for starting winbindd is included in
+the SAMBA sourse distribution as <filename>packaging/RedHat/winbind.init</filename>.
+</para>
+
+<para>
+Now... for the real test, try to get some information about the
users on your PDC
</para>
<para>
-<prompt>root#</prompt> <command>/usr/local/samba/bin/wbinfo -u</command>
+<prompt>root#</prompt> <command>wbinfo -u</command>
</para>
-<para>
-This should echo back a list of users on your Windows users on
+<para>
+This should echo back a list of users on your Windows users on
your PDC. For example, I get the following response:
</para>
@@ -637,7 +627,7 @@ separator</parameter> is '+'.
</para>
<para>
-You can do the same sort of thing to get group information from
+You can do the same sort of thing to get group information from
the PDC:
</para>
@@ -655,7 +645,7 @@ CEO+Group Policy Creator Owners
</programlisting></para>
<para>
-The function 'getent' can now be used to get unified
+The function 'getent' can now be used to get unified
lists of both local and PDC users and groups.
Try the following command:
</para>
@@ -663,11 +653,12 @@ Try the following command:
<para>
<prompt>root#</prompt> <command>getent passwd</command>
</para>
-
+
<para>
-You should get a list that looks like your <filename>/etc/passwd</filename>
-list followed by the domain users with their new uids, gids, home
-directories and default shells.
+You should get a list that looks like your <filename>/etc/passwd</filename>
+list followed by the domain users with their new uids, gids, home
+directories and default shells. If you do not, verify that the permissions on the
+libnss_winbind.so library are <filename>rwxr-xr-x</filename>.
</para>
<para>
@@ -681,94 +672,20 @@ The same thing can be done for groups with the command
</sect3>
-<sect3>
-<title>Fix the <filename>/etc/rc.d/init.d/smb</filename> startup files</title>
-
-<para>
-The <command>winbindd</command> daemon needs to start up after the
-<command>smbd</command> and <command>nmbd</command> daemons are running.
-To accomplish this task, you need to modify the <filename>/etc/init.d/smb</filename>
-script to add commands to invoke this daemon in the proper sequence. My
-<filename>/etc/init.d/smb</filename> file starts up <command>smbd</command>,
-<command>nmbd</command>, and <command>winbindd</command> from the
-<filename>/usr/local/samba/bin</filename> directory directly. The 'start'
-function in the script looks like this:
-</para>
-
-<para><programlisting>
-start() {
- KIND="SMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/smbd $SMBDOPTIONS
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/nmbd $NMBDOPTIONS
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/winbindd
- RETVAL3=$?
- echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] && touch /var/lock/subsys/smb || \
- RETVAL=1
- return $RETVAL
-}
-</programlisting></para>
-
-<para>
-The 'stop' function has a corresponding entry to shut down the
-services and look s like this:
-</para>
-
-<para><programlisting>
-stop() {
- KIND="SMB"
- echo -n $"Shutting down $KIND services: "
- killproc smbd
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Shutting down $KIND services: "
- killproc nmbd
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Shutting down $KIND services: "
- killproc winbindd
- RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] && rm -f /var/lock/subsys/smb
- echo ""
- return $RETVAL
-}
-</programlisting></para>
-
-<para>
-If you restart the <command>smbd</command>, <command>nmbd</command>,
-and <command>winbindd</command> daemons at this point, you
-should be able to connect to the samba server as a domain member just as
-if you were a local user.
-</para>
-
-</sect3>
-
-
<sect3>
<title>Configure Winbind and PAM</title>
<para>
-If you have made it this far, you know that winbindd and samba are working
-together. If you want to use winbind to provide authentication for other
+At this point we are assured that <command>winbindd</command> and <command>smbd</command>
+are working together. If you want to use winbind to provide authentication for other
services, keep reading. The pam configuration files need to be altered in
-this step. (Did you remember to make backups of your original
-<filename>/etc/pam.d</filename> files? If not, do it now.)
+this step. (Did you remember to make backups of your original
+<filename>/etc/pam.d</filename> (or <filename>/etc/pam.conf</filename>) file[s]? If not, do it now.)
</para>
<para>
-You will need a pam module to use winbindd with these other services. This
+You will need a PAM module to use <command>winbindd</command> with these other services. This
module will be compiled in the <filename>../source/nsswitch</filename> directory
by invoking the command
</para>
@@ -780,34 +697,24 @@ by invoking the command
<para>
from the <filename>../source</filename> directory. The
<filename>pam_winbind.so</filename> file should be copied to the location of
-your other pam security modules. On my RedHat system, this was the
+your other pam security modules. On Linux and Solaris systems, this is the
<filename>/lib/security</filename> directory.
</para>
<para>
-<prompt>root#</prompt> <command>cp ../samba/source/nsswitch/pam_winbind.so /lib/security</command>
+<prompt>root#</prompt> <command>cp nsswitch/pam_winbind.so /lib/security</command>
+<prompt>root#</prompt> <command>chmod 755 /lib/security/pam_winbind.so</command>
</para>
<para>
-The <filename>/etc/pam.d/samba</filename> file does not need to be changed. I
-just left this fileas it was:
-</para>
-
-
-<para><programlisting>
-auth required /lib/security/pam_stack.so service=system-auth
-account required /lib/security/pam_stack.so service=system-auth
-</programlisting></para>
-
-<para>
-The other services that I modified to allow the use of winbind
-as an authentication service were the normal login on the console (or a terminal
-session), telnet logins, and ftp service. In order to enable these
-services, you may first need to change the entries in
-<filename>/etc/xinetd.d</filename> (or <filename>/etc/inetd.conf</filename>).
-RedHat 7.1 uses the new xinetd.d structure, in this case you need
-to change the lines in <filename>/etc/xinetd.d/telnet</filename>
-and <filename>/etc/xinetd.d/wu-ftp</filename> from
+Other services, such as the normal login on the console (or a terminal
+session), telnet logins, and ftp service, can be modified to allow the use of winbind
+as an authentication service. In order to enable these
+services, you may first need to change the entries in
+<filename>/etc/xinetd.d</filename> (or <filename>/etc/inetd.conf</filename>).
+RedHat 7.1 uses the new xinetd.d structure, in this case you need
+to change the lines in <filename>/etc/xinetd.d/telnet</filename>
+and <filename>/etc/xinetd.d/wu-ftp</filename> from
</para>
<para><programlisting>
@@ -822,19 +729,19 @@ to
enable = yes
</programlisting></para>
-<para>
-For ftp services to work properly, you will also need to either
-have individual directories for the domain users already present on
+<para>
+For ftp services to work properly, you will also need to either
+have individual directories for the domain users already present on
the server, or change the home directory template to a general
-directory for all domain users. These can be easily set using
-the <filename>smb.conf</filename> global entry
+directory for all domain users. These can be easily set using
+the <filename>smb.conf</filename> global entry
<command>template homedir</command>.
</para>
<para>
-The <filename>/etc/pam.d/ftp</filename> file can be changed
+The <filename>/etc/pam.d/ftp</filename> file can be changed
to allow winbind ftp access in a manner similar to the
-samba file. My <filename>/etc/pam.d/ftp</filename> file was
+samba file. My <filename>/etc/pam.d/ftp</filename> file was
changed to look like this:
</para>
@@ -849,7 +756,7 @@ session required /lib/security/pam_stack.so service=system-auth
</programlisting></para>
<para>
-The <filename>/etc/pam.d/login</filename> file can be changed nearly the
+The <filename>/etc/pam.d/login</filename> file can be changed nearly the
same way. It now looks like this:
</para>
@@ -867,15 +774,31 @@ session optional /lib/security/pam_console.so
</programlisting></para>
<para>
-In this case, I added the <command>auth sufficient /lib/security/pam_winbind.so</command>
-lines as before, but also added the <command>required pam_securetty.so</command>
-above it, to disallow root logins over the network. I also added a
+In this case, I added the <command>auth sufficient /lib/security/pam_winbind.so</command>
+lines as before, but also added the <command>required pam_securetty.so</command>
+above it, to disallow root logins over the network. I also added a
<command>sufficient /lib/security/pam_unix.so use_first_pass</command>
-line after the <command>winbind.so</command> line to get rid of annoying
+line after the <command>winbind.so</command> line to get rid of annoying
double prompts for passwords.
</para>
+<para>
+Note that a Solaris <filename>/etc/pam.conf</filename> confiruation file looks
+very similar to this except thaty the service name is included as the first entry
+per line. An example for the login service is given here.
+</para>
+
+<para><programlisting>
+## excerpt from /etc/pam.conf on a Solaris 8 system
+login auth required /lib/security/pam_winbind.so
+login auth required /lib/security/$ISA/pam_unix.so.1 try_first_pass
+login auth required /lib/security/$ISA/pam_dial_auth.so.1 try_first_pass
+</programlisting></para>
+
+
+
+
</sect3>
</sect2>
@@ -884,29 +807,21 @@ double prompts for passwords.
<sect1>
<title>Limitations</title>
-
- <para>Winbind has a number of limitations in its current
- released version that we hope to overcome in future
+
+ <para>Winbind has a number of limitations in its current
+ released version that we hope to overcome in future
releases:</para>
<itemizedlist>
- <listitem><para>Winbind is currently only available for
- the Linux operating system, although ports to other operating
- systems are certainly possible. For such ports to be feasible,
- we require the C library of the target operating system to
- support the Name Service Switch and Pluggable Authentication
- Modules systems. This is becoming more common as NSS and
- PAM gain support among UNIX vendors.</para></listitem>
-
- <listitem><para>The mappings of Windows NT RIDs to UNIX ids
- is not made algorithmically and depends on the order in which
- unmapped users or groups are seen by winbind. It may be difficult
- to recover the mappings of rid to UNIX id mapping if the file
+ <listitem><para>The mappings of Windows NT RIDs to UNIX ids
+ is not made algorithmically and depends on the order in which
+ unmapped users or groups are seen by winbind. It may be difficult
+ to recover the mappings of rid to UNIX id mapping if the file
containing this information is corrupted or destroyed.</para>
</listitem>
-
- <listitem><para>Currently the winbind PAM module does not take
- into account possible workstation and logon time restrictions
+
+ <listitem><para>Currently the winbind PAM module does not take
+ into account possible workstation and logon time restrictions
that may be been set for Windows NT users.</para></listitem>
</itemizedlist>
</sect1>
diff --git a/docs/htmldocs/Samba-HOWTO-Collection.html b/docs/htmldocs/Samba-HOWTO-Collection.html
index d6c92a65cab..2e293287534 100644
--- a/docs/htmldocs/Samba-HOWTO-Collection.html
+++ b/docs/htmldocs/Samba-HOWTO-Collection.html
@@ -178,12 +178,12 @@ HREF="#AEN199"
></DT
><DT
>1.10.6. <A
-HREF="#AEN209"
+HREF="#AEN208"
>Mapping Usernames</A
></DT
><DT
>1.10.7. <A
-HREF="#AEN212"
+HREF="#AEN211"
>Other Character Sets</A
></DT
></DL
@@ -199,19 +199,19 @@ HREF="#INTEGRATE-MS-NETWORKS"
><DL
><DT
>2.1. <A
-HREF="#AEN226"
+HREF="#AEN225"
>Agenda</A
></DT
><DT
>2.2. <A
-HREF="#AEN248"
+HREF="#AEN247"
>Name Resolution in a pure Unix/Linux world</A
></DT
><DD
><DL
><DT
>2.2.1. <A
-HREF="#AEN264"
+HREF="#AEN263"
><TT
CLASS="FILENAME"
>/etc/hosts</TT
@@ -219,7 +219,7 @@ CLASS="FILENAME"
></DT
><DT
>2.2.2. <A
-HREF="#AEN280"
+HREF="#AEN279"
><TT
CLASS="FILENAME"
>/etc/resolv.conf</TT
@@ -227,7 +227,7 @@ CLASS="FILENAME"
></DT
><DT
>2.2.3. <A
-HREF="#AEN291"
+HREF="#AEN290"
><TT
CLASS="FILENAME"
>/etc/host.conf</TT
@@ -235,7 +235,7 @@ CLASS="FILENAME"
></DT
><DT
>2.2.4. <A
-HREF="#AEN299"
+HREF="#AEN298"
><TT
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
@@ -245,47 +245,47 @@ CLASS="FILENAME"
></DD
><DT
>2.3. <A
-HREF="#AEN311"
+HREF="#AEN310"
>Name resolution as used within MS Windows networking</A
></DT
><DD
><DL
><DT
>2.3.1. <A
-HREF="#AEN323"
+HREF="#AEN322"
>The NetBIOS Name Cache</A
></DT
><DT
>2.3.2. <A
-HREF="#AEN328"
+HREF="#AEN327"
>The LMHOSTS file</A
></DT
><DT
>2.3.3. <A
-HREF="#AEN336"
+HREF="#AEN335"
>HOSTS file</A
></DT
><DT
>2.3.4. <A
-HREF="#AEN341"
+HREF="#AEN340"
>DNS Lookup</A
></DT
><DT
>2.3.5. <A
-HREF="#AEN344"
+HREF="#AEN343"
>WINS Lookup</A
></DT
></DL
></DD
><DT
>2.4. <A
-HREF="#AEN356"
+HREF="#AEN355"
>How browsing functions and how to deploy stable and
dependable browsing using Samba</A
></DT
><DT
>2.5. <A
-HREF="#AEN366"
+HREF="#AEN365"
>MS Windows security options and how to configure
Samba for seemless integration</A
></DT
@@ -293,29 +293,29 @@ Samba for seemless integration</A
><DL
><DT
>2.5.1. <A
-HREF="#AEN394"
+HREF="#AEN393"
>Use MS Windows NT as an authentication server</A
></DT
><DT
>2.5.2. <A
-HREF="#AEN402"
+HREF="#AEN401"
>Make Samba a member of an MS Windows NT security domain</A
></DT
><DT
>2.5.3. <A
-HREF="#AEN419"
+HREF="#AEN418"
>Configure Samba as an authentication server</A
></DT
><DD
><DL
><DT
>2.5.3.1. <A
-HREF="#AEN426"
+HREF="#AEN425"
>Users</A
></DT
><DT
>2.5.3.2. <A
-HREF="#AEN431"
+HREF="#AEN430"
>MS Windows NT Machine Accounts</A
></DT
></DL
@@ -324,7 +324,7 @@ HREF="#AEN431"
></DD
><DT
>2.6. <A
-HREF="#AEN436"
+HREF="#AEN435"
>Conclusions</A
></DT
></DL
@@ -339,17 +339,17 @@ managed authentication</A
><DL
><DT
>3.1. <A
-HREF="#AEN457"
+HREF="#AEN456"
>Samba and PAM</A
></DT
><DT
>3.2. <A
-HREF="#AEN501"
+HREF="#AEN500"
>Distributed Authentication</A
></DT
><DT
>3.3. <A
-HREF="#AEN508"
+HREF="#AEN507"
>PAM Configuration in smb.conf</A
></DT
></DL
@@ -363,14 +363,14 @@ HREF="#MSDFS"
><DL
><DT
>4.1. <A
-HREF="#AEN528"
+HREF="#AEN527"
>Instructions</A
></DT
><DD
><DL
><DT
>4.1.1. <A
-HREF="#AEN563"
+HREF="#AEN562"
>Notes</A
></DT
></DL
@@ -386,53 +386,53 @@ HREF="#UNIX-PERMISSIONS"
><DL
><DT
>5.1. <A
-HREF="#AEN583"
+HREF="#AEN582"
>Viewing and changing UNIX permissions using the NT
security dialogs</A
></DT
><DT
>5.2. <A
-HREF="#AEN592"
+HREF="#AEN591"
>How to view file security on a Samba share</A
></DT
><DT
>5.3. <A
-HREF="#AEN603"
+HREF="#AEN602"
>Viewing file ownership</A
></DT
><DT
>5.4. <A
-HREF="#AEN623"
+HREF="#AEN622"
>Viewing file or directory permissions</A
></DT
><DD
><DL
><DT
>5.4.1. <A
-HREF="#AEN638"
+HREF="#AEN637"
>File Permissions</A
></DT
><DT
>5.4.2. <A
-HREF="#AEN652"
+HREF="#AEN651"
>Directory Permissions</A
></DT
></DL
></DD
><DT
>5.5. <A
-HREF="#AEN659"
+HREF="#AEN658"
>Modifying file or directory permissions</A
></DT
><DT
>5.6. <A
-HREF="#AEN681"
+HREF="#AEN680"
>Interaction with the standard Samba create mask
parameters</A
></DT
><DT
>5.7. <A
-HREF="#AEN745"
+HREF="#AEN744"
>Interaction with the standard Samba file attribute
mapping</A
></DT
@@ -447,220 +447,298 @@ HREF="#PRINTING"
><DL
><DT
>6.1. <A
-HREF="#AEN766"
+HREF="#AEN765"
>Introduction</A
></DT
><DT
>6.2. <A
-HREF="#AEN788"
+HREF="#AEN787"
>Configuration</A
></DT
><DD
><DL
><DT
>6.2.1. <A
-HREF="#AEN799"
+HREF="#AEN798"
>Creating [print$]</A
></DT
><DT
>6.2.2. <A
-HREF="#AEN834"
+HREF="#AEN833"
>Setting Drivers for Existing Printers</A
></DT
><DT
>6.2.3. <A
HREF="#AEN851"
->Support a large number of printers</A
+>DeviceModes and New Printers</A
></DT
><DT
>6.2.4. <A
HREF="#AEN862"
->Adding New Printers via the Windows NT APW</A
+>Support a large number of printers</A
></DT
><DT
>6.2.5. <A
-HREF="#AEN887"
+HREF="#AEN873"
+>Adding New Printers via the Windows NT APW</A
+></DT
+><DT
+>6.2.6. <A
+HREF="#AEN898"
>Samba and Printer Ports</A
></DT
></DL
></DD
><DT
>6.3. <A
-HREF="#AEN895"
+HREF="#AEN906"
>The Imprints Toolset</A
></DT
><DD
><DL
><DT
>6.3.1. <A
-HREF="#AEN899"
+HREF="#AEN911"
>What is Imprints?</A
></DT
><DT
>6.3.2. <A
-HREF="#AEN909"
+HREF="#AEN921"
>Creating Printer Driver Packages</A
></DT
><DT
>6.3.3. <A
-HREF="#AEN912"
+HREF="#AEN924"
>The Imprints server</A
></DT
><DT
>6.3.4. <A
-HREF="#AEN916"
+HREF="#AEN928"
>The Installation Client</A
></DT
></DL
></DD
><DT
>6.4. <A
-HREF="#AEN938"
+HREF="#AEN950"
><A
NAME="MIGRATION"
></A
>Migration to from Samba 2.0.x to 2.2.x</A
></DT
+><DD
+><DL
+><DT
+>6.4.1. <A
+HREF="#AEN983"
+>Parameters in <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+> for Backwards Compatibility</A
+></DT
+></DL
+></DD
></DL
></DD
><DT
>7. <A
+HREF="#CUPS"
+>Printing with CUPS in Samba 2.2.x</A
+></DT
+><DD
+><DL
+><DT
+>7.1. <A
+HREF="#AEN999"
+>Printing with CUPS in Samba 2.2.x</A
+></DT
+><DT
+>7.2. <A
+HREF="#AEN1003"
+>Configuring <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> for CUPS</A
+></DT
+><DT
+>7.3. <A
+HREF="#AEN1022"
+>Using CUPS as a mere spooling print server -- "raw"
+printing with vendor drivers download</A
+></DT
+><DT
+>7.4. <A
+HREF="#AEN1025"
+>CUPS as a network PostScript RIP -- CUPS drivers working on server, Adobe
+PostScript driver with CUPS-PPDs downloaded to clients</A
+></DT
+><DT
+>7.5. <A
+HREF="#AEN1046"
+>Windows Terminal Servers (WTS) as CUPS clients</A
+></DT
+><DT
+>7.6. <A
+HREF="#AEN1050"
+>Setting up CUPS for driver download</A
+></DT
+><DT
+>7.7. <A
+HREF="#AEN1062"
+>Sources of CUPS drivers / PPDs</A
+></DT
+><DD
+><DL
+><DT
+>7.7.1. <A
+HREF="#AEN1089"
+><B
+CLASS="COMMAND"
+>cupsaddsmb</B
+></A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>8. <A
HREF="#DOMAIN-SECURITY"
>security = domain in Samba 2.x</A
></DT
><DD
><DL
><DT
->7.1. <A
-HREF="#AEN992"
+>8.1. <A
+HREF="#AEN1134"
>Joining an NT Domain with Samba 2.2</A
></DT
><DT
->7.2. <A
-HREF="#AEN1056"
+>8.2. <A
+HREF="#AEN1198"
>Samba and Windows 2000 Domains</A
></DT
><DT
->7.3. <A
-HREF="#AEN1061"
+>8.3. <A
+HREF="#AEN1203"
>Why is this better than security = server?</A
></DT
></DL
></DD
><DT
->8. <A
+>9. <A
HREF="#SAMBA-PDC"
>How to Configure Samba 2.2 as a Primary Domain Controller</A
></DT
><DD
><DL
><DT
->8.1. <A
-HREF="#AEN1094"
+>9.1. <A
+HREF="#AEN1236"
>Prerequisite Reading</A
></DT
><DT
->8.2. <A
-HREF="#AEN1100"
+>9.2. <A
+HREF="#AEN1242"
>Background</A
></DT
><DT
->8.3. <A
-HREF="#AEN1139"
+>9.3. <A
+HREF="#AEN1281"
>Configuring the Samba Domain Controller</A
></DT
><DT
->8.4. <A
-HREF="#AEN1182"
+>9.4. <A
+HREF="#AEN1324"
>Creating Machine Trust Accounts and Joining Clients to the
Domain</A
></DT
><DD
><DL
><DT
->8.4.1. <A
-HREF="#AEN1201"
+>9.4.1. <A
+HREF="#AEN1343"
>Manual Creation of Machine Trust Accounts</A
></DT
><DT
->8.4.2. <A
-HREF="#AEN1236"
+>9.4.2. <A
+HREF="#AEN1378"
>"On-the-Fly" Creation of Machine Trust Accounts</A
></DT
><DT
->8.4.3. <A
-HREF="#AEN1245"
+>9.4.3. <A
+HREF="#AEN1387"
>Joining the Client to the Domain</A
></DT
></DL
></DD
><DT
->8.5. <A
-HREF="#AEN1260"
+>9.5. <A
+HREF="#AEN1402"
>Common Problems and Errors</A
></DT
><DT
->8.6. <A
-HREF="#AEN1308"
+>9.6. <A
+HREF="#AEN1450"
>System Policies and Profiles</A
></DT
><DT
->8.7. <A
-HREF="#AEN1352"
+>9.7. <A
+HREF="#AEN1494"
>What other help can I get?</A
></DT
><DT
->8.8. <A
-HREF="#AEN1466"
+>9.8. <A
+HREF="#AEN1608"
>Domain Control for Windows 9x/ME</A
></DT
><DD
><DL
><DT
->8.8.1. <A
-HREF="#AEN1492"
+>9.8.1. <A
+HREF="#AEN1634"
>Configuration Instructions: Network Logons</A
></DT
><DT
->8.8.2. <A
-HREF="#AEN1511"
+>9.8.2. <A
+HREF="#AEN1653"
>Configuration Instructions: Setting up Roaming User Profiles</A
></DT
><DD
><DL
><DT
->8.8.2.1. <A
-HREF="#AEN1519"
+>9.8.2.1. <A
+HREF="#AEN1661"
>Windows NT Configuration</A
></DT
><DT
->8.8.2.2. <A
-HREF="#AEN1527"
+>9.8.2.2. <A
+HREF="#AEN1669"
>Windows 9X Configuration</A
></DT
><DT
->8.8.2.3. <A
-HREF="#AEN1535"
+>9.8.2.3. <A
+HREF="#AEN1677"
>Win9X and WinNT Configuration</A
></DT
><DT
->8.8.2.4. <A
-HREF="#AEN1542"
+>9.8.2.4. <A
+HREF="#AEN1684"
>Windows 9X Profile Setup</A
></DT
><DT
->8.8.2.5. <A
-HREF="#AEN1578"
+>9.8.2.5. <A
+HREF="#AEN1720"
>Windows NT Workstation 4.0</A
></DT
><DT
->8.8.2.6. <A
-HREF="#AEN1591"
+>9.8.2.6. <A
+HREF="#AEN1733"
>Windows NT Server</A
></DT
><DT
->8.8.2.7. <A
-HREF="#AEN1594"
+>9.8.2.7. <A
+HREF="#AEN1736"
>Sharing Profiles between W95 and NT Workstation 4.0</A
></DT
></DL
@@ -668,63 +746,63 @@ HREF="#AEN1594"
></DL
></DD
><DT
->8.9. <A
-HREF="#AEN1604"
+>9.9. <A
+HREF="#AEN1746"
>DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
></DT
></DL
></DD
><DT
->9. <A
+>10. <A
HREF="#SAMBA-BDC"
>How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
></DT
><DD
><DL
><DT
->9.1. <A
-HREF="#AEN1640"
+>10.1. <A
+HREF="#AEN1782"
>Prerequisite Reading</A
></DT
><DT
->9.2. <A
-HREF="#AEN1644"
+>10.2. <A
+HREF="#AEN1786"
>Background</A
></DT
><DT
->9.3. <A
-HREF="#AEN1652"
+>10.3. <A
+HREF="#AEN1794"
>What qualifies a Domain Controller on the network?</A
></DT
><DD
><DL
><DT
->9.3.1. <A
-HREF="#AEN1655"
+>10.3.1. <A
+HREF="#AEN1797"
>How does a Workstation find its domain controller?</A
></DT
><DT
->9.3.2. <A
-HREF="#AEN1658"
+>10.3.2. <A
+HREF="#AEN1800"
>When is the PDC needed?</A
></DT
></DL
></DD
><DT
->9.4. <A
-HREF="#AEN1661"
+>10.4. <A
+HREF="#AEN1803"
>Can Samba be a Backup Domain Controller?</A
></DT
><DT
->9.5. <A
-HREF="#AEN1665"
+>10.5. <A
+HREF="#AEN1807"
>How do I set up a Samba BDC?</A
></DT
><DD
><DL
><DT
->9.5.1. <A
-HREF="#AEN1681"
+>10.5.1. <A
+HREF="#AEN1836"
>How do I replicate the smbpasswd file?</A
></DT
></DL
@@ -732,207 +810,210 @@ HREF="#AEN1681"
></DL
></DD
><DT
->10. <A
+>11. <A
HREF="#SAMBA-LDAP-HOWTO"
>Storing Samba's User/Machine Account information in an LDAP Directory</A
></DT
><DD
><DL
><DT
->10.1. <A
-HREF="#AEN1702"
+>11.1. <A
+HREF="#AEN1867"
>Purpose</A
></DT
><DT
->10.2. <A
-HREF="#AEN1722"
+>11.2. <A
+HREF="#AEN1888"
>Introduction</A
></DT
><DT
->10.3. <A
-HREF="#AEN1751"
+>11.3. <A
+HREF="#AEN1919"
>Supported LDAP Servers</A
></DT
><DT
->10.4. <A
-HREF="#AEN1756"
+>11.4. <A
+HREF="#AEN1924"
>Schema and Relationship to the RFC 2307 posixAccount</A
></DT
><DT
->10.5. <A
-HREF="#AEN1768"
+>11.5. <A
+HREF="#AEN1945"
>Configuring Samba with LDAP</A
></DT
><DD
><DL
><DT
->10.5.1. <A
-HREF="#AEN1770"
+>11.5.1. <A
+HREF="#AEN1947"
>OpenLDAP configuration</A
></DT
><DT
->10.5.2. <A
-HREF="#AEN1787"
+>11.5.2. <A
+HREF="#AEN1964"
>Configuring Samba</A
></DT
+><DT
+>11.5.3. <A
+HREF="#AEN1992"
+>Importing <TT
+CLASS="FILENAME"
+>smbpasswd</TT
+> entries</A
+></DT
></DL
></DD
><DT
->10.6. <A
-HREF="#AEN1815"
+>11.6. <A
+HREF="#AEN2008"
>Accounts and Groups management</A
></DT
><DT
->10.7. <A
-HREF="#AEN1820"
+>11.7. <A
+HREF="#AEN2013"
>Security and sambaAccount</A
></DT
><DT
->10.8. <A
-HREF="#AEN1840"
+>11.8. <A
+HREF="#AEN2033"
>LDAP specials attributes for sambaAccounts</A
></DT
><DT
->10.9. <A
-HREF="#AEN1910"
+>11.9. <A
+HREF="#AEN2103"
>Example LDIF Entries for a sambaAccount</A
></DT
><DT
->10.10. <A
-HREF="#AEN1918"
+>11.10. <A
+HREF="#AEN2111"
>Comments</A
></DT
></DL
></DD
><DT
->11. <A
+>12. <A
HREF="#WINBIND"
>Unified Logons between Windows NT and UNIX using Winbind</A
></DT
><DD
><DL
><DT
->11.1. <A
-HREF="#AEN1947"
+>12.1. <A
+HREF="#AEN2140"
>Abstract</A
></DT
><DT
->11.2. <A
-HREF="#AEN1951"
+>12.2. <A
+HREF="#AEN2144"
>Introduction</A
></DT
><DT
->11.3. <A
-HREF="#AEN1964"
+>12.3. <A
+HREF="#AEN2157"
>What Winbind Provides</A
></DT
><DD
><DL
><DT
->11.3.1. <A
-HREF="#AEN1971"
+>12.3.1. <A
+HREF="#AEN2164"
>Target Uses</A
></DT
></DL
></DD
><DT
->11.4. <A
-HREF="#AEN1975"
+>12.4. <A
+HREF="#AEN2168"
>How Winbind Works</A
></DT
><DD
><DL
><DT
->11.4.1. <A
-HREF="#AEN1980"
+>12.4.1. <A
+HREF="#AEN2173"
>Microsoft Remote Procedure Calls</A
></DT
><DT
->11.4.2. <A
-HREF="#AEN1984"
+>12.4.2. <A
+HREF="#AEN2177"
>Name Service Switch</A
></DT
><DT
->11.4.3. <A
-HREF="#AEN2000"
+>12.4.3. <A
+HREF="#AEN2193"
>Pluggable Authentication Modules</A
></DT
><DT
->11.4.4. <A
-HREF="#AEN2008"
+>12.4.4. <A
+HREF="#AEN2201"
>User and Group ID Allocation</A
></DT
><DT
->11.4.5. <A
-HREF="#AEN2012"
+>12.4.5. <A
+HREF="#AEN2205"
>Result Caching</A
></DT
></DL
></DD
><DT
->11.5. <A
-HREF="#AEN2015"
+>12.5. <A
+HREF="#AEN2208"
>Installation and Configuration</A
></DT
><DD
><DL
><DT
->11.5.1. <A
-HREF="#AEN2022"
+>12.5.1. <A
+HREF="#AEN2212"
>Introduction</A
></DT
><DT
->11.5.2. <A
-HREF="#AEN2035"
+>12.5.2. <A
+HREF="#AEN2225"
>Requirements</A
></DT
><DT
->11.5.3. <A
-HREF="#AEN2049"
+>12.5.3. <A
+HREF="#AEN2241"
>Testing Things Out</A
></DT
><DD
><DL
><DT
->11.5.3.1. <A
-HREF="#AEN2060"
->Configure and compile SAMBA</A
+>12.5.3.1. <A
+HREF="#AEN2254"
+>Configure and Compile SAMBA</A
></DT
><DT
->11.5.3.2. <A
-HREF="#AEN2079"
+>12.5.3.2. <A
+HREF="#AEN2267"
>Configure <TT
CLASS="FILENAME"
>nsswitch.conf</TT
-> and the
+> and the
winbind libraries</A
></DT
><DT
->11.5.3.3. <A
-HREF="#AEN2104"
->Configure smb.conf</A
+>12.5.3.3. <A
+HREF="#AEN2289"
+>Configure <TT
+CLASS="FILENAME"
+>smb.conf</TT
+></A
></DT
><DT
->11.5.3.4. <A
-HREF="#AEN2120"
+>12.5.3.4. <A
+HREF="#AEN2306"
>Join the SAMBA server to the PDC domain</A
></DT
><DT
->11.5.3.5. <A
-HREF="#AEN2131"
+>12.5.3.5. <A
+HREF="#AEN2317"
>Start up the winbindd daemon and test it!</A
></DT
><DT
->11.5.3.6. <A
-HREF="#AEN2167"
->Fix the <TT
-CLASS="FILENAME"
->/etc/rc.d/init.d/smb</TT
-> startup files</A
-></DT
-><DT
->11.5.3.7. <A
-HREF="#AEN2189"
+>12.5.3.6. <A
+HREF="#AEN2358"
>Configure Winbind and PAM</A
></DT
></DL
@@ -940,52 +1021,52 @@ HREF="#AEN2189"
></DL
></DD
><DT
->11.6. <A
-HREF="#AEN2236"
+>12.6. <A
+HREF="#AEN2411"
>Limitations</A
></DT
><DT
->11.7. <A
-HREF="#AEN2246"
+>12.7. <A
+HREF="#AEN2419"
>Conclusion</A
></DT
></DL
></DD
><DT
->12. <A
+>13. <A
HREF="#OS2"
>OS2 Client HOWTO</A
></DT
><DD
><DL
><DT
->12.1. <A
-HREF="#AEN2260"
+>13.1. <A
+HREF="#AEN2433"
>FAQs</A
></DT
><DD
><DL
><DT
->12.1.1. <A
-HREF="#AEN2262"
+>13.1.1. <A
+HREF="#AEN2435"
>How can I configure OS/2 Warp Connect or
OS/2 Warp 4 as a client for Samba?</A
></DT
><DT
->12.1.2. <A
-HREF="#AEN2277"
+>13.1.2. <A
+HREF="#AEN2450"
>How can I configure OS/2 Warp 3 (not Connect),
OS/2 1.2, 1.3 or 2.x for Samba?</A
></DT
><DT
->12.1.3. <A
-HREF="#AEN2286"
+>13.1.3. <A
+HREF="#AEN2459"
>Are there any other issues when OS/2 (any version)
is used as a client?</A
></DT
><DT
->12.1.4. <A
-HREF="#AEN2290"
+>13.1.4. <A
+HREF="#AEN2463"
>How do I get printer driver download working
for OS/2 clients?</A
></DT
@@ -994,32 +1075,32 @@ HREF="#AEN2290"
></DL
></DD
><DT
->13. <A
+>14. <A
HREF="#CVS-ACCESS"
>HOWTO Access Samba source code via CVS</A
></DT
><DD
><DL
><DT
->13.1. <A
-HREF="#AEN2306"
+>14.1. <A
+HREF="#AEN2479"
>Introduction</A
></DT
><DT
->13.2. <A
-HREF="#AEN2311"
+>14.2. <A
+HREF="#AEN2484"
>CVS Access to samba.org</A
></DT
><DD
><DL
><DT
->13.2.1. <A
-HREF="#AEN2314"
+>14.2.1. <A
+HREF="#AEN2487"
>Access via CVSweb</A
></DT
><DT
->13.2.2. <A
-HREF="#AEN2319"
+>14.2.2. <A
+HREF="#AEN2492"
>Access via cvs</A
></DT
></DL
@@ -1028,7 +1109,7 @@ HREF="#AEN2319"
></DD
><DT
><A
-HREF="#AEN2347"
+HREF="#AEN2520"
>Index</A
></DT
></DL
@@ -1522,7 +1603,7 @@ CLASS="REPLACEABLE"
></TT
></P
><P
->Your should get back a list of shares available on
+>You should get back a list of shares available on
your server. If you don't then something is incorrectly setup.
Note that this method can also be used to see what shares
are available on other LanManager clients (such as WfWg).</P
@@ -1700,8 +1781,8 @@ NAME="AEN183"
>By default Samba uses a blank scope ID. This means
all your windows boxes must also have a blank scope ID.
If you really want to use a non-blank scope ID then you will
- need to use the -i &#60;scope&#62; option to nmbd, smbd, and
- smbclient. All your PCs will need to have the same setting for
+ need to use the 'netbios scope' smb.conf option.
+ All your PCs will need to have the same setting for
this to work. I do not recommend scope IDs.</P
></DIV
><DIV
@@ -1822,19 +1903,13 @@ NAME="AEN199"
its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE
or DENY_ALL. There are also special compatibility modes called
DENY_FCB and DENY_DOS.</P
-><P
->You can disable share modes using "share modes = no".
- This may be useful on a heavily loaded server as the share
- modes code is very slow. See also the FAST_SHARE_MODES
- option in the Makefile for a way to do full share modes
- very fast using shared memory (if your OS supports it).</P
></DIV
><DIV
CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN209"
+NAME="AEN208"
>1.10.6. Mapping Usernames</A
></H2
><P
@@ -1847,7 +1922,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN212"
+NAME="AEN211"
>1.10.7. Other Character Sets</A
></H2
><P
@@ -1871,7 +1946,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN226"
+NAME="AEN225"
>2.1. Agenda</A
></H1
><P
@@ -1938,7 +2013,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN248"
+NAME="AEN247"
>2.2. Name Resolution in a pure Unix/Linux world</A
></H1
><P
@@ -1980,7 +2055,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN264"
+NAME="AEN263"
>2.2.1. <TT
CLASS="FILENAME"
>/etc/hosts</TT
@@ -2043,7 +2118,7 @@ CLASS="FILENAME"
> is one such file.</P
><P
>When the IP address of the destination interface has been
-determined a protocol called ARP/RARP isused to identify
+determined a protocol called ARP/RARP is used to identify
the MAC address of the target interface. ARP stands for Address
Resolution Protocol, and is a broadcast oriented method that
uses UDP (User Datagram Protocol) to send a request to all
@@ -2070,7 +2145,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN280"
+NAME="AEN279"
>2.2.2. <TT
CLASS="FILENAME"
>/etc/resolv.conf</TT
@@ -2108,7 +2183,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN291"
+NAME="AEN290"
>2.2.3. <TT
CLASS="FILENAME"
>/etc/host.conf</TT
@@ -2146,7 +2221,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN299"
+NAME="AEN298"
>2.2.4. <TT
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
@@ -2224,7 +2299,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN311"
+NAME="AEN310"
>2.3. Name resolution as used within MS Windows networking</A
></H1
><P
@@ -2293,7 +2368,7 @@ architecture of the MS Windows network. The term "workgroup" indicates
that the primary nature of the network environment is that of a
peer-to-peer design. In a WORKGROUP all machines are responsible for
their own security, and generally such security is limited to use of
-just a password (known as SHARE MORE security). In most situations
+just a password (known as SHARE MODE security). In most situations
with peer-to-peer networking the users who control their own machines
will simply opt to have no security at all. It is possible to have
USER MODE security in a WORKGROUP environment, thus requiring use
@@ -2318,13 +2393,13 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN323"
+NAME="AEN322"
>2.3.1. The NetBIOS Name Cache</A
></H2
><P
>All MS Windows machines employ an in memory buffer in which is
-stored the NetBIOS names and their IP addresses for all external
-machines that that the local machine has communicated with over the
+stored the NetBIOS names and IP addresses for all external
+machines that that machine has communicated with over the
past 10-15 minutes. It is more efficient to obtain an IP address
for a machine from the local cache than it is to go through all the
configured name resolution mechanisms.</P
@@ -2332,7 +2407,7 @@ configured name resolution mechanisms.</P
>If a machine whose name is in the local name cache has been shut
down before the name had been expired and flushed from the cache, then
an attempt to exchange a message with that machine will be subject
-to time-out delays. ie: It's name is in the cache, so a name resolution
+to time-out delays. i.e.: Its name is in the cache, so a name resolution
lookup will succeed, but the machine can not respond. This can be
frustrating for users - but it is a characteristic of the protocol.</P
><P
@@ -2345,7 +2420,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN328"
+NAME="AEN327"
>2.3.2. The LMHOSTS file</A
></H2
><P
@@ -2457,7 +2532,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN336"
+NAME="AEN335"
>2.3.3. HOSTS file</A
></H2
><P
@@ -2479,7 +2554,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN341"
+NAME="AEN340"
>2.3.4. DNS Lookup</A
></H2
><P
@@ -2499,7 +2574,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN344"
+NAME="AEN343"
>2.3.5. WINS Lookup</A
></H2
><P
@@ -2560,13 +2635,13 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN356"
+NAME="AEN355"
>2.4. How browsing functions and how to deploy stable and
dependable browsing using Samba</A
></H1
><P
>As stated above, MS Windows machines register their NetBIOS names
-(ie: the machine name for each service type in operation) on start
+(i.e.: the machine name for each service type in operation) on start
up. Also, as stated above, the exact method by which this name registration
takes place is determined by whether or not the MS Windows client/server
has been given a WINS server address, whether or not LMHOSTS lookup
@@ -2591,7 +2666,7 @@ Instead, the domain master browser serves the role of contacting each local
master browser (found by asking WINS or from LMHOSTS) and exchanging browse
list contents. This way every master browser will eventually obtain a complete
list of all machines that are on the network. Every 11-15 minutes an election
-is held to determine which machine will be the master browser. By nature of
+is held to determine which machine will be the master browser. By the nature of
the election criteria used, the machine with the highest uptime, or the
most senior protocol version, or other criteria, will win the election
as domain master browser.</P
@@ -2627,7 +2702,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN366"
+NAME="AEN365"
>2.5. MS Windows security options and how to configure
Samba for seemless integration</A
></H1
@@ -2676,8 +2751,8 @@ these versions no longer support plain text passwords by default.</P
><P
>MS Windows clients have a habit of dropping network mappings that
have been idle for 10 minutes or longer. When the user attempts to
-use the mapped drive connection that has been dropped the SMB protocol
-has a mechanism by which the connection can be re-established using
+use the mapped drive connection that has been dropped, the client
+re-establishes the connection using
a cached copy of the password.</P
><P
>When Microsoft changed the default password mode, they dropped support for
@@ -2769,7 +2844,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN394"
+NAME="AEN393"
>2.5.1. Use MS Windows NT as an authentication server</A
></H2
><P
@@ -2814,7 +2889,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN402"
+NAME="AEN401"
>2.5.2. Make Samba a member of an MS Windows NT security domain</A
></H2
><P
@@ -2886,12 +2961,12 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN419"
+NAME="AEN418"
>2.5.3. Configure Samba as an authentication server</A
></H2
><P
>This mode of authentication demands that there be on the
-Unix/Linux system both a Unix style account as well as and
+Unix/Linux system both a Unix style account as well as an
smbpasswd entry for the user. The Unix system account can be
locked if required as only the encrypted password will be
used for SMB client authentication.</P
@@ -2932,7 +3007,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN426"
+NAME="AEN425"
>2.5.3.1. Users</A
></H3
><P
@@ -2964,7 +3039,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN431"
+NAME="AEN430"
>2.5.3.2. MS Windows NT Machine Accounts</A
></H3
><P
@@ -2994,7 +3069,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN436"
+NAME="AEN435"
>2.6. Conclusions</A
></H1
><P
@@ -3039,7 +3114,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN457"
+NAME="AEN456"
>3.1. Samba and PAM</A
></H1
><P
@@ -3298,7 +3373,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN501"
+NAME="AEN500"
>3.2. Distributed Authentication</A
></H1
><P
@@ -3331,7 +3406,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN508"
+NAME="AEN507"
>3.3. PAM Configuration in smb.conf</A
></H1
><P
@@ -3379,7 +3454,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN528"
+NAME="AEN527"
>4.1. Instructions</A
></H1
><P
@@ -3536,7 +3611,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN563"
+NAME="AEN562"
>4.1.1. Notes</A
></H2
><P
@@ -3577,7 +3652,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN583"
+NAME="AEN582"
>5.1. Viewing and changing UNIX permissions using the NT
security dialogs</A
></H1
@@ -3616,7 +3691,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN592"
+NAME="AEN591"
>5.2. How to view file security on a Samba share</A
></H1
><P
@@ -3662,7 +3737,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN603"
+NAME="AEN602"
>5.3. Viewing file ownership</A
></H1
><P
@@ -3748,7 +3823,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN623"
+NAME="AEN622"
>5.4. Viewing file or directory permissions</A
></H1
><P
@@ -3810,7 +3885,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN638"
+NAME="AEN637"
>5.4.1. File Permissions</A
></H2
><P
@@ -3872,7 +3947,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN652"
+NAME="AEN651"
>5.4.2. Directory Permissions</A
></H2
><P
@@ -3904,7 +3979,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN659"
+NAME="AEN658"
>5.5. Modifying file or directory permissions</A
></H1
><P
@@ -4002,7 +4077,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN681"
+NAME="AEN680"
>5.6. Interaction with the standard Samba create mask
parameters</A
></H1
@@ -4275,7 +4350,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN745"
+NAME="AEN744"
>5.7. Interaction with the standard Samba file attribute
mapping</A
></H1
@@ -4330,7 +4405,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN766"
+NAME="AEN765"
>6.1. Introduction</A
></H1
><P
@@ -4414,7 +4489,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN788"
+NAME="AEN787"
>6.2. Configuration</A
></H1
><DIV
@@ -4466,7 +4541,7 @@ CLASS="PARAMETER"
>printer driver
file</I
></TT
-> parameter, are being depreciated and should not
+> parameter, are being deprecated and should not
be used in new installations. For more information on this change,
you should refer to the <A
HREF="#MIGRATION"
@@ -4482,7 +4557,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN799"
+NAME="AEN798"
>6.2.1. Creating [print$]</A
></H2
><P
@@ -4685,7 +4760,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN834"
+NAME="AEN833"
>6.2.2. Setting Drivers for Existing Printers</A
></H2
><P
@@ -4708,33 +4783,35 @@ properties will be displayed. Do you want to install the
driver now?</EM
></P
><P
->Click "No" in the error dialog and you will be presented with
-the printer properties window. The way assign a driver to a
+>Click <EM
+>No</EM
+> in the error dialog and you will be presented with
+the printer properties window. The way assign a driver to a
printer is to either</P
><P
></P
><UL
><LI
><P
->Use the "New Driver..." button to install
+>Use the "New Driver..." button to install
a new printer driver, or</P
></LI
><LI
><P
->Select a driver from the popup list of
+>Select a driver from the popup list of
installed drivers. Initially this list will be empty.</P
></LI
></UL
><P
->If you wish to install printer drivers for client
-operating systems other than "Windows NT x86", you will need
+>If you wish to install printer drivers for client
+operating systems other than "Windows NT x86", you will need
to use the "Sharing" tab of the printer properties dialog.</P
><P
->Assuming you have connected with a root account, you
-will also be able modify other printer properties such as
+>Assuming you have connected with a root account, you
+will also be able modify other printer properties such as
ACLs and device settings using this dialog box.</P
><P
->A few closing comments for this section, it is possible
+>A few closing comments for this section, it is possible
on a Windows NT print server to have printers
listed in the Printers folder which are not shared. Samba does
not make this distinction. By definition, the only printers of
@@ -4745,7 +4822,7 @@ CLASS="FILENAME"
>.</P
><P
>Another interesting side note is that Windows NT clients do
-not use the SMB printer share, but rather can print directly
+not use the SMB printer share, but rather can print directly
to any printer on another Windows NT host using MS-RPC. This
of course assumes that the printing client has the necessary
privileges on the remote host serving the printer. The default
@@ -4758,22 +4835,66 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN851"
->6.2.3. Support a large number of printers</A
+>6.2.3. DeviceModes and New Printers</A
+></H2
+><P
+>In order for a printer to be truly usbla eby a Windows NT/2k/XP client,
+it must posses:</P
+><P
+></P
+><UL
+><LI
+><P
+>a valid Device Mode generated by the driver for the printer, and</P
+></LI
+><LI
+><P
+>a complete set of PrinterDriverData generated by the driver.</P
+></LI
+></UL
+><P
+>If either one of these is incomplete, the clients can produce less than optimal
+output at best or in the worst cases, unreadable garbage or nothing at all.
+Fortunately, most driver generate the printer driver that is needed.
+However, the client must be tickled to generate a valid Device Mode and set it on the
+server. The easist means of doing so is to simply set the page orientation on
+the server's printer using the native Windows NT/2k printer properties page from
+a Window clients. Make sure to apply changes between swapping the page orientation
+to cause the change to actually take place. Be aware that this can only be done
+by a "printer admin" (the reason should be obvious I hope).</P
+><P
+>Samba also includes a service level parameter name <A
+HREF="smb.conf.5.html#DEFAULTDEVMODE"
+TARGET="_top"
+>default
+devmode</A
+> for generating a default device mode for a printer. Some driver
+will function fine with this default set of properties. Others may crash the client's
+spooler service. Use this parameter with caution. It is always better to have the client
+generate a valid device mode for the printer and store it on the server for you.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H2
+CLASS="SECT2"
+><A
+NAME="AEN862"
+>6.2.4. Support a large number of printers</A
></H2
><P
>One issue that has arisen during the development
phase of Samba 2.2 is the need to support driver downloads for
-100's of printers. Using the Windows NT APW is somewhat
-awkward to say the list. If more than one printer are using the
+100's of printers. Using the Windows NT APW is somewhat
+awkward to say the list. If more than one printer are using the
same driver, the <A
HREF="rpcclient.1.html"
TARGET="_top"
><B
CLASS="COMMAND"
>rpcclient's
-setdriver command</B
+setdriver</B
></A
-> can be used to set the driver
+> command can be used to set the driver
associated with an installed driver. The following is example
of how this could be accomplished:</P
><P
@@ -4785,23 +4906,22 @@ WIDTH="100%"
><TD
><PRE
CLASS="PROGRAMLISTING"
->
-<TT
+><TT
CLASS="PROMPT"
>$ </TT
>rpcclient pogo -U root%secret -c "enumdrivers"
Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-
+
[Windows NT x86]
Printer Driver Info 1:
Driver Name: [HP LaserJet 4000 Series PS]
-
+
Printer Driver Info 1:
Driver Name: [HP LaserJet 2100 Series PS]
-
+
Printer Driver Info 1:
Driver Name: [HP LaserJet 4Si/4SiMX PS]
-
+
<TT
CLASS="PROMPT"
>$ </TT
@@ -4811,7 +4931,7 @@ Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
name:[\\POGO\hp-print]
description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
comment:[]
-
+
<TT
CLASS="PROMPT"
>$ </TT
@@ -4832,15 +4952,15 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN862"
->6.2.4. Adding New Printers via the Windows NT APW</A
+NAME="AEN873"
+>6.2.5. Adding New Printers via the Windows NT APW</A
></H2
><P
>By default, Samba offers all printer shares defined in <TT
CLASS="FILENAME"
>smb.conf</TT
>
-in the "Printers..." folder. Also existing in this folder is the Windows NT
+in the "Printers..." folder. Also existing in this folder is the Windows NT
Add Printer Wizard icon. The APW will be show only if</P
><P
></P
@@ -4865,7 +4985,7 @@ TARGET="_top"
><TT
CLASS="PARAMETER"
><I
->show
+>show
add printer wizard = yes</I
></TT
></A
@@ -4874,36 +4994,36 @@ CLASS="PARAMETER"
></LI
></UL
><P
->In order to be able to use the APW to successfully add a printer to a Samba
+>In order to be able to use the APW to successfully add a printer to a Samba
server, the <A
HREF="smb.conf.5.html#ADDPRINTERCOMMAND"
TARGET="_top"
><TT
CLASS="PARAMETER"
><I
->add
+>add
printer command</I
></TT
></A
> must have a defined value. The program
-hook must successfully add the printer to the system (i.e.
+hook must successfully add the printer to the system (i.e.
<TT
CLASS="FILENAME"
>/etc/printcap</TT
-> or appropriate files) and
+> or appropriate files) and
<TT
CLASS="FILENAME"
>smb.conf</TT
> if necessary.</P
><P
->When using the APW from a client, if the named printer share does
+>When using the APW from a client, if the named printer share does
not exist, <B
CLASS="COMMAND"
>smbd</B
> will execute the <TT
CLASS="PARAMETER"
><I
->add printer
+>add printer
command</I
></TT
> and reparse to the <TT
@@ -4938,8 +5058,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN887"
->6.2.5. Samba and Printer Ports</A
+NAME="AEN898"
+>6.2.6. Samba and Printer Ports</A
></H2
><P
>Windows NT/2000 print servers associate a port with each printer. These normally
@@ -4975,7 +5095,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN895"
+NAME="AEN906"
>6.3. The Imprints Toolset</A
></H1
><P
@@ -4988,12 +5108,19 @@ TARGET="_top"
> as well as the documentation
included with the imprints source distribution. This section will
only provide a brief introduction to the features of Imprints.</P
+><P
+>As of June 16, 2002 (quite a bit earlier actually), the Imprints
+ project is in need of a new maintainer. The most important skill
+ is decent perl coding and an interest in MS-RPC based printing using Samba.
+ If you wich to volunteer, please coordinate your efforts on the samba-technical
+ mailing list.
+ </P
><DIV
CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN899"
+NAME="AEN911"
>6.3.1. What is Imprints?</A
></H2
><P
@@ -5025,7 +5152,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN909"
+NAME="AEN921"
>6.3.2. Creating Printer Driver Packages</A
></H2
><P
@@ -5041,7 +5168,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN912"
+NAME="AEN924"
>6.3.3. The Imprints server</A
></H2
><P
@@ -5061,7 +5188,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN916"
+NAME="AEN928"
>6.3.4. The Installation Client</A
></H2
><P
@@ -5164,7 +5291,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN938"
+NAME="AEN950"
>6.4. <A
NAME="MIGRATION"
></A
@@ -5297,6 +5424,17 @@ CLASS="PARAMETER"
></TR
></TABLE
></DIV
+><DIV
+CLASS="SECT2"
+><HR><H2
+CLASS="SECT2"
+><A
+NAME="AEN983"
+>6.4.1. Parameters in <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+> for Backwards Compatibility</A
+></H2
><P
>The have been two new parameters add in Samba 2.2.2 to for
better support of Samba 2.0.x backwards capability (<TT
@@ -5313,7 +5451,641 @@ CLASS="PARAMETER"
></TT
>). Both of
these options are described in the smb.coinf(5) man page and are
-disabled by default.</P
+disabled by default. Use them with caution.</P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="CHAPTER"
+><HR><H1
+><A
+NAME="CUPS"
+>Chapter 7. Printing with CUPS in Samba 2.2.x</A
+></H1
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN999"
+>7.1. Printing with CUPS in Samba 2.2.x</A
+></H1
+><P
+><A
+HREF="http://www.cups.org/"
+TARGET="_top"
+>CUPS</A
+> is a newcomer in
+the UNIX printing scene, which has convinced many people upon first trial
+already. However, it has quite a few new features, which make it different
+from other, more traditional printing systems.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1003"
+>7.2. Configuring <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> for CUPS</A
+></H1
+><P
+>Printing with CUPS in the most basic <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>
+setup in Samba 2.2.x only needs two settings: <B
+CLASS="COMMAND"
+>printing = cups</B
+> and
+<B
+CLASS="COMMAND"
+>printcap = cups</B
+>. While CUPS itself doesn't need a printcap
+anymore, the <TT
+CLASS="FILENAME"
+>cupsd.conf</TT
+> configuration file knows two directives
+(example: <B
+CLASS="COMMAND"
+>Printcap /etc/printcap</B
+> and <B
+CLASS="COMMAND"
+>PrintcapFormat
+BSD</B
+>), which control if such a file should be created for the
+convenience of third party applications. Make sure it is set! For details see
+<B
+CLASS="COMMAND"
+>man cupsd.conf</B
+> and other CUPS-related documentation.</P
+><P
+>If SAMBA is compiled against libcups, then <B
+CLASS="COMMAND"
+>printcap =
+cups</B
+> uses the CUPS API to list printers, submit jobs, etc. Otherwise it
+maps to the System V commands with an additional <TT
+CLASS="PARAMETER"
+><I
+>-oraw</I
+></TT
+>
+option for printing. On a Linux system, you can use the <B
+CLASS="COMMAND"
+>ldd</B
+> command to
+find out details (ldd may not be present on other OS platforms, or its
+function may be embodied by a different command):</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>transmeta:/home/kurt # ldd `which smbd`
+ libssl.so.0.9.6 =&#62; /usr/lib/libssl.so.0.9.6 (0x4002d000)
+ libcrypto.so.0.9.6 =&#62; /usr/lib/libcrypto.so.0.9.6 (0x4005a000)
+ libcups.so.2 =&#62; /usr/lib/libcups.so.2 (0x40123000)
+ libdl.so.2 =&#62; /lib/libdl.so.2 (0x401e8000)
+ libnsl.so.1 =&#62; /lib/libnsl.so.1 (0x401ec000)
+ libpam.so.0 =&#62; /lib/libpam.so.0 (0x40202000)
+ libc.so.6 =&#62; /lib/libc.so.6 (0x4020b000)
+ /lib/ld-linux.so.2 =&#62; /lib/ld-linux.so.2 (0x40000000)</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>The line "libcups.so.2 =&#62; /usr/lib/libcups.so.2
+(0x40123000)" shows there is CUPS support compiled into this version of
+Samba. If this is the case, and <B
+CLASS="COMMAND"
+>printing = cups</B
+> is set, then any
+otherwise manually set print command in smb.conf is ignored.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1022"
+>7.3. Using CUPS as a mere spooling print server -- "raw"
+printing with vendor drivers download</A
+></H1
+><P
+>You can setup Samba and your Windows clients to use the
+CUPS print subsystem just as you would with any of the more traditional print
+subsystems: that means the use of vendor provided, native Windows printer
+drivers for each target printer. If you setup the [print$] share to
+download these drivers to the clients, their GDI system (Graphical Device
+Interface) will output the Wndows EMF (Enhanced MetaFile) and
+convert it -- with the help of the printer driver -- locally into the format
+the printer is expecting. Samba and the CUPS print subsystem will have to
+treat these files as raw print files -- they are already in the
+shape to be digestable for the printer. This is the same traditional setup
+for Unix print servers handling Windows client jobs. It does not take much
+CPU power to handle this kind of task efficiently.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1025"
+>7.4. CUPS as a network PostScript RIP -- CUPS drivers working on server, Adobe
+PostScript driver with CUPS-PPDs downloaded to clients</A
+></H1
+><P
+>CUPS is perfectly able to use PPD files (PostScript
+Printer Descriptions). PPDs can control all print device options. They
+are usually provided by the manufacturer -- if you own a PostSript printer,
+that is. PPD files are always a component of PostScript printer drivers on MS
+Windows or Apple Mac OS systems. They are ASCII files containing
+user-selectable print options, mapped to appropriate PostScript, PCL or PJL
+commands for the target printer. Printer driver GUI dialogs translate these
+options "on-the-fly" into buttons and drop-down lists for the user to
+select.</P
+><P
+>CUPS can load, without any conversions, the PPD file from
+any Windows (NT is recommended) PostScript driver and handle the options.
+There is a web browser interface to the print options (select
+http://localhost:631/printers/ and click on one "Configure Printer" button
+to see it), a commandline interface (see <B
+CLASS="COMMAND"
+>man lpoptions</B
+> or
+try if you have <B
+CLASS="COMMAND"
+>lphelp</B
+> on your system) plus some different GUI frontends on Linux
+UNIX, which can present PPD options to the users. PPD options are normally
+meant to become evaluated by the PostScript RIP on the real PostScript
+printer.</P
+><P
+>CUPS doesn't stop at "real" PostScript printers in its
+usage of PPDs. The CUPS developers have extended the PPD concept, to also
+describe available device and driver options for non-PostScript printers
+through CUPS-PPDs.</P
+><P
+>This is logical, as CUPS includes a fully featured
+PostScript interpreter (RIP). This RIP is based on Ghostscript. It can
+process all received PostScript (and additionally many other file formats)
+from clients. All CUPS-PPDs geared to non-PostScript printers contain an
+additional line, starting with the keyword <TT
+CLASS="PARAMETER"
+><I
+>*cupsFilter</I
+></TT
+>.
+This line
+tells the CUPS print system which printer-specific filter to use for the
+interpretation of the accompanying PostScript. Thus CUPS lets all its
+printers appear as PostScript devices to its clients, because it can act as a
+PostScript RIP for those printers, processing the received PostScript code
+into a proper raster print format.</P
+><P
+>CUPS-PPDs can also be used on Windows-Clients, on top of a
+PostScript driver (recommended is the Adobe one).</P
+><P
+>This feature enables CUPS to do a few tricks no other
+spooler can do:</P
+><P
+></P
+><UL
+><LI
+><P
+>act as a networked PostScript RIP (Raster Image Processor), handling
+ printfiles from all client platforms in a uniform way;</P
+></LI
+><LI
+><P
+>act as a central accounting and billing server, as all files are passed
+ through the <B
+CLASS="COMMAND"
+>pstops</B
+> Filter and are therefor logged in
+ the CUPS <TT
+CLASS="FILENAME"
+>page_log</TT
+>. - <EM
+>NOTE: </EM
+>this
+ can not happen with "raw" print jobs, which always remain unfiltered
+ per definition;</P
+></LI
+><LI
+><P
+>enable clients to consolidate on a single PostScript driver, even for
+ many different target printers.</P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1046"
+>7.5. Windows Terminal Servers (WTS) as CUPS clients</A
+></H1
+><P
+>This setup may be of special interest to people
+experiencing major problems in WTS environments. WTS need often a multitude
+of non-PostScript drivers installed to run their clients' variety of
+different printer models. This often imposes the price of much increased
+instability. In many cases, in an attempt to overcome this problem, site
+administrators have resorted to restrict the allowed drivers installed on
+their WTS to one generic PCL- and one PostScript driver. This however
+restricts the clients in the amount of printer options available for them --
+often they can't get out more then simplex prints from one standard paper
+tray, while their devices could do much better, if driven by a different
+driver!</P
+><P
+>Using an Adobe PostScript driver, enabled with a CUPS-PPD,
+seems to be a very elegant way to overcome all these shortcomings. The
+PostScript driver is not known to cause major stability problems on WTS (even
+if used with many different PPDs). The clients will be able to (again) chose
+paper trays, duplex printing and other settings. However, there is a certain
+price for this too: a CUPS server acting as a PostScript RIP for its clients
+requires more CPU and RAM than just to act as a "raw spooling" device. Plus,
+this setup is not yet widely tested, although the first feedbacks look very
+promising...</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1050"
+>7.6. Setting up CUPS for driver download</A
+></H1
+><P
+>The <B
+CLASS="COMMAND"
+>cupsadsmb</B
+> utility (shipped with all current
+CUPS versions) makes the sharing of any (or all) installed CUPS printers very
+easy. Prior to using it, you need the following settings in smb.conf:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>[global]
+ load printers = yes
+ printing = cups
+ printcap name = cups
+
+[printers]
+ comment = All Printers
+ path = /var/spool/samba
+ browseable = no
+ public = yes
+ guest ok = yes
+ writable = no
+ printable = yes
+ printer admin = root
+
+[print$]
+ comment = Printer Drivers
+ path = /etc/samba/drivers
+ browseable = yes
+ guest ok = no
+ read only = yes
+ write list = root</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>For licensing reasons the necessary files of the Adobe
+Postscript driver can not be distributed with either Samba or CUPS. You need
+to download them yourself from the Adobe website. Once extracted, create a
+<TT
+CLASS="FILENAME"
+>drivers</TT
+> directory in the CUPS data directory (usually
+<TT
+CLASS="FILENAME"
+>/usr/share/cups/</TT
+>). Copy the Adobe files using
+UPPERCASE filenames, to this directory as follows:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> ADFONTS.MFM
+ ADOBEPS4.DRV
+ ADOBEPS4.HLP
+ ADOBEPS5.DLL
+ ADOBEPSU.DLL
+ ADOBEPSU.HLP
+ DEFPRTR2.PPD
+ ICONLIB.DLL</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>Users of the ESP Print Pro software are able to install
+their "Samba Drivers" package for this purpose with no problem.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN1062"
+>7.7. Sources of CUPS drivers / PPDs</A
+></H1
+><P
+>On the internet you can find now many thousand CUPS-PPD
+files (with their companion filters), in many national languages,
+supporting more than 1.000 non-PostScript models.</P
+><P
+></P
+><UL
+><LI
+><P
+><A
+HREF="http://wwwl.easysw.com/printpro/"
+TARGET="_top"
+>ESP PrintPro
+ (http://wwwl.easysw.com/printpro/)</A
+>
+ (commercial, non-Free) is packaged with more than 3.000 PPDs, ready for
+ successful usage "out of the box" on Linux, IBM-AIX, HP-UX, Sun-Solaris,
+ SGI-IRIX, Compaq Tru64, Digital Unix and some more commercial Unices (it
+ is written by the CUPS developers themselves and its sales help finance
+ the further development of CUPS, as they feed their creators)</P
+></LI
+><LI
+><P
+>the <A
+HREF="http://gimp-print.sourceforge.net/"
+TARGET="_top"
+>Gimp-Print-Project
+ (http://gimp-print.sourceforge.net/)</A
+>
+ (GPL, Free Software) provides around 120 PPDs (supporting nearly 300
+ printers, many driven to photo quality output), to be used alongside the
+ Gimp-Print CUPS filters;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www.turboprint.com/"
+TARGET="_top"
+>TurboPrint
+ (http://www.turboprint.com/)</A
+>
+ (Shareware, non-Freee) supports roughly the same amount of printers in
+ excellent quality;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/"
+TARGET="_top"
+>OMNI
+ (http://www-124.ibm.com/developerworks/oss/linux/projects/omni/)</A
+>
+ (LPGL, Free) is a package made by IBM, now containing support for more
+ than 400 printers, stemming from the inheritance of IBM OS/2 KnowHow
+ ported over to Linux (CUPS support is in a Beta-stage at present);</P
+></LI
+><LI
+><P
+><A
+HREF="http://hpinkjet.sourceforge.net/"
+TARGET="_top"
+>HPIJS
+ (http://hpinkjet.sourceforge.net/)</A
+>
+ (BSD-style licnes, Free) supports around 120 of HP's own printers and is
+ also providing excellent print quality now;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www.linuxprinting.org/"
+TARGET="_top"
+>Foomatic/cupsomatic (http://www.linuxprinting.org/)</A
+>
+ (LPGL, Free) from Linuxprinting.org are providing PPDs for practically every
+ Ghostscript filter known to the world, now usable with CUPS.</P
+></LI
+></UL
+><P
+><EM
+>NOTE: </EM
+>the cupsomatic trick from Linuxprinting.org is
+working different from the other drivers. While the other drivers take the
+generic CUPS raster (produced by CUPS' own pstoraster PostScript RIP) as
+their input, cupsomatic "kidnaps" the PostScript inside CUPS, before
+RIP-ping, deviates it to an external Ghostscript installation (which now
+becomes the RIP) and gives it back to a CUPS backend once Ghostscript is
+finished. -- CUPS versions from 1.1.15 and later will provide their pstoraster
+PostScript RIP function again inside a system-wide Ghostscript
+installation rather than in "their own" pstoraster filter. (This
+CUPS-enabling Ghostscript version may be installed either as a
+patch to GNU or AFPL Ghostscript, or as a complete ESP Ghostscript package).
+However, this will not change the cupsomatic approach of guiding the printjob
+along a different path through the filtering system than the standard CUPS
+way...</P
+><P
+>Once you installed a printer inside CUPS with one of the
+recommended methods (the lpadmin command, the web browser interface or one of
+the available GUI wizards), you can use <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> to share the
+printer via Samba. <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> prepares the driver files for
+comfortable client download and installation upon their first contact with
+this printer share.</P
+><DIV
+CLASS="SECT2"
+><HR><H2
+CLASS="SECT2"
+><A
+NAME="AEN1089"
+>7.7.1. <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+></A
+></H2
+><P
+>The <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> command copies the needed files
+for convenient Windows client installations from the previously prepared CUPS
+data directory to your [print$] share. Additionally, the PPD
+associated with this printer is copied from <TT
+CLASS="FILENAME"
+>/etc/cups/ppd/</TT
+> to
+[print$].</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><TT
+CLASS="PROMPT"
+>root# </TT
+> <B
+CLASS="COMMAND"
+>cupsaddsmb -U root infotec_IS2027</B
+>
+Password for root required to access localhost via SAMBA: <TT
+CLASS="USERINPUT"
+><B
+>[type in password 'secret']</B
+></TT
+></PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>To share all printers and drivers, use the <TT
+CLASS="PARAMETER"
+><I
+>-a</I
+></TT
+>
+parameter instead of a printer name.</P
+><P
+>Probably you want to see what's going on. Use the
+<TT
+CLASS="PARAMETER"
+><I
+>-v</I
+></TT
+> parameter to get a more verbose output:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><TT
+CLASS="PROMPT"
+>root# </TT
+> cupsaddsmb -v -U root infotec_IS2027
+ Password for root required to access localhost via SAMBA:
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir W32X86;put /var/spool/cups/tmp/3cd1cc66376c0 W32X86/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADOBEPS5.DLL W32X86/ADOBEPS5.DLL;put /usr/share/cups/drivers/ADOBEPSU.DLL W32X86/ADOBEPSU.DLL;put /usr/share/cups/drivers/ADOBEPSU.HLP W32X86/ADOBEPSU.HLP'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \W32X86
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \W32X86/infotec_IS2027.PPD (17394.6 kb/s) (average 17395.2 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS5.DLL as \W32X86/ADOBEPS5.DLL (10877.4 kb/s) (average 11343.0 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.DLL as \W32X86/ADOBEPSU.DLL (5095.2 kb/s) (average 9260.4 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.HLP as \W32X86/ADOBEPSU.HLP (8828.7 kb/s) (average 9247.1 kb/s)
+
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir WIN40;put /var/spool/cups/tmp/3cd1cc66376c0 WIN40/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADFONTS.MFM WIN40/ADFONTS.MFM;put /usr/share/cups/drivers/ADOBEPS4.DRV WIN40/ADOBEPS4.DRV;put /usr/share/cups/drivers/ADOBEPS4.HLP WIN40/ADOBEPS4.HLP;put /usr/share/cups/drivers/DEFPRTR2.PPD WIN40/DEFPRTR2.PPD;put /usr/share/cups/drivers/ICONLIB.DLL WIN40/ICONLIB.DLL;put /usr/share/cups/drivers/PSMON.DLL WIN40/PSMON.DLL;'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \WIN40
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \WIN40/infotec_IS2027.PPD (26091.5 kb/s) (average 26092.8 kb/s)
+ putting file /usr/share/cups/drivers/ADFONTS.MFM as \WIN40/ADFONTS.MFM (11241.6 kb/s) (average 11812.9 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.DRV as \WIN40/ADOBEPS4.DRV (16640.6 kb/s) (average 14679.3 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.HLP as \WIN40/ADOBEPS4.HLP (11285.6 kb/s) (average 14281.5 kb/s)
+ putting file /usr/share/cups/drivers/DEFPRTR2.PPD as \WIN40/DEFPRTR2.PPD (823.5 kb/s) (average 12944.0 kb/s)
+ putting file /usr/share/cups/drivers/ICONLIB.DLL as \WIN40/ICONLIB.DLL (19226.2 kb/s) (average 13169.7 kb/s)
+ putting file /usr/share/cups/drivers/PSMON.DLL as \WIN40/PSMON.DLL (18666.1 kb/s) (average 13266.7 kb/s)
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"'
+ cmd = adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"'
+ cmd = adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'setdriver infotec_IS2027 infotec_IS2027'
+ cmd = setdriver infotec_IS2027 infotec_IS2027
+ Succesfully set infotec_IS2027 to driver infotec_IS2027.
+
+ <TT
+CLASS="PROMPT"
+>root# </TT
+></PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>If you look closely, you'll discover your root password
+was transfered unencrypted over the wire, so beware! Also, if you look
+further her, you'll discover error messages like
+<TT
+CLASS="CONSTANT"
+>NT_STATUS_OBJECT_NAME_COLLISION</TT
+> in between. They occur, because
+the directories <TT
+CLASS="FILENAME"
+>WIN40</TT
+> and <TT
+CLASS="FILENAME"
+>W32X86</TT
+> already
+existed in the [print$] driver download share (from a previous driver
+installation). They are harmless here.</P
+><P
+>Now your printer is prepared for the clients to use. From
+a client, browse to the CUPS/Samba server, open the "Printers"
+share, right-click on this printer and select "Install..." or
+"Connect..." (depending on the Windows version you use). Now their
+should be a new printer in your client's local "Printers" folder,
+named (in my case) "infotec_IS2027 on kdebitshop"</P
+><P
+><EM
+>NOTE: </EM
+>
+<B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> will only reliably work i
+with CUPS version 1.1.15 or higher
+and Samba from 2.2.4. If it doesn't work, or if the automatic printer
+driver download to the clients doesn't succeed, you can still manually
+install the CUPS printer PPD on top of the Adobe PostScript driver on
+clients and then point the client's printer queue to the Samba printer
+share for connection, should you desire to use the CUPS networked
+PostScript RIP functions.</P
+></DIV
></DIV
></DIV
><DIV
@@ -5321,15 +6093,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="DOMAIN-SECURITY"
->Chapter 7. security = domain in Samba 2.x</A
+>Chapter 8. security = domain in Samba 2.x</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN992"
->7.1. Joining an NT Domain with Samba 2.2</A
+NAME="AEN1134"
+>8.1. Joining an NT Domain with Samba 2.2</A
></H1
><P
>Assume you have a Samba 2.x server with a NetBIOS name of
@@ -5559,8 +6331,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1056"
->7.2. Samba and Windows 2000 Domains</A
+NAME="AEN1198"
+>8.2. Samba and Windows 2000 Domains</A
></H1
><P
>Many people have asked regarding the state of Samba's ability to participate in
@@ -5584,8 +6356,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1061"
->7.3. Why is this better than security = server?</A
+NAME="AEN1203"
+>8.3. Why is this better than security = server?</A
></H1
><P
>Currently, domain security in Samba doesn't free you from
@@ -5671,15 +6443,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="SAMBA-PDC"
->Chapter 8. How to Configure Samba 2.2 as a Primary Domain Controller</A
+>Chapter 9. How to Configure Samba 2.2 as a Primary Domain Controller</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1094"
->8.1. Prerequisite Reading</A
+NAME="AEN1236"
+>9.1. Prerequisite Reading</A
></H1
><P
>Before you continue reading in this chapter, please make sure
@@ -5706,8 +6478,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1100"
->8.2. Background</A
+NAME="AEN1242"
+>9.2. Background</A
></H1
><DIV
CLASS="NOTE"
@@ -5838,8 +6610,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1139"
->8.3. Configuring the Samba Domain Controller</A
+NAME="AEN1281"
+>9.3. Configuring the Samba Domain Controller</A
></H1
><P
>The first step in creating a working Samba PDC is to
@@ -6059,8 +6831,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1182"
->8.4. Creating Machine Trust Accounts and Joining Clients to the
+NAME="AEN1324"
+>9.4. Creating Machine Trust Accounts and Joining Clients to the
Domain</A
></H1
><P
@@ -6133,8 +6905,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1201"
->8.4.1. Manual Creation of Machine Trust Accounts</A
+NAME="AEN1343"
+>9.4.1. Manual Creation of Machine Trust Accounts</A
></H2
><P
>The first step in manually creating a machine trust account is to
@@ -6300,8 +7072,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1236"
->8.4.2. "On-the-Fly" Creation of Machine Trust Accounts</A
+NAME="AEN1378"
+>9.4.2. "On-the-Fly" Creation of Machine Trust Accounts</A
></H2
><P
>The second (and recommended) way of creating machine trust accounts is
@@ -6346,8 +7118,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1245"
->8.4.3. Joining the Client to the Domain</A
+NAME="AEN1387"
+>9.4.3. Joining the Client to the Domain</A
></H2
><P
>The procedure for joining a client to the domain varies with the
@@ -6406,8 +7178,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1260"
->8.5. Common Problems and Errors</A
+NAME="AEN1402"
+>9.5. Common Problems and Errors</A
></H1
><P
></P
@@ -6605,8 +7377,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1308"
->8.6. System Policies and Profiles</A
+NAME="AEN1450"
+>9.6. System Policies and Profiles</A
></H1
><P
>Much of the information necessary to implement System Policies and
@@ -6762,8 +7534,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1352"
->8.7. What other help can I get?</A
+NAME="AEN1494"
+>9.7. What other help can I get?</A
></H1
><P
>There are many sources of information available in the form
@@ -7158,8 +7930,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1466"
->8.8. Domain Control for Windows 9x/ME</A
+NAME="AEN1608"
+>9.8. Domain Control for Windows 9x/ME</A
></H1
><DIV
CLASS="NOTE"
@@ -7272,8 +8044,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1492"
->8.8.1. Configuration Instructions: Network Logons</A
+NAME="AEN1634"
+>9.8.1. Configuration Instructions: Network Logons</A
></H2
><P
>The main difference between a PDC and a Windows 9x logon
@@ -7366,8 +8138,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1511"
->8.8.2. Configuration Instructions: Setting up Roaming User Profiles</A
+NAME="AEN1653"
+>9.8.2. Configuration Instructions: Setting up Roaming User Profiles</A
></H2
><DIV
CLASS="WARNING"
@@ -7413,8 +8185,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1519"
->8.8.2.1. Windows NT Configuration</A
+NAME="AEN1661"
+>9.8.2.1. Windows NT Configuration</A
></H3
><P
>To support WinNT clients, in the [global] section of smb.conf set the
@@ -7457,8 +8229,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1527"
->8.8.2.2. Windows 9X Configuration</A
+NAME="AEN1669"
+>9.8.2.2. Windows 9X Configuration</A
></H3
><P
>To support Win9X clients, you must use the "logon home" parameter. Samba has
@@ -7497,8 +8269,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1535"
->8.8.2.3. Win9X and WinNT Configuration</A
+NAME="AEN1677"
+>9.8.2.3. Win9X and WinNT Configuration</A
></H3
><P
>You can support profiles for both Win9X and WinNT clients by setting both the
@@ -7535,8 +8307,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1542"
->8.8.2.4. Windows 9X Profile Setup</A
+NAME="AEN1684"
+>9.8.2.4. Windows 9X Profile Setup</A
></H3
><P
>When a user first logs in on Windows 9X, the file user.DAT is created,
@@ -7691,8 +8463,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1578"
->8.8.2.5. Windows NT Workstation 4.0</A
+NAME="AEN1720"
+>9.8.2.5. Windows NT Workstation 4.0</A
></H3
><P
>When a user first logs in to a Windows NT Workstation, the profile
@@ -7773,8 +8545,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1591"
->8.8.2.6. Windows NT Server</A
+NAME="AEN1733"
+>9.8.2.6. Windows NT Server</A
></H3
><P
>There is nothing to stop you specifying any path that you like for the
@@ -7787,8 +8559,8 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN1594"
->8.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</A
+NAME="AEN1736"
+>9.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</A
></H3
><DIV
CLASS="WARNING"
@@ -7852,8 +8624,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1604"
->8.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
+NAME="AEN1746"
+>9.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
></H1
><DIV
CLASS="WARNING"
@@ -7974,15 +8746,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="SAMBA-BDC"
->Chapter 9. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
+>Chapter 10. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1640"
->9.1. Prerequisite Reading</A
+NAME="AEN1782"
+>10.1. Prerequisite Reading</A
></H1
><P
>Before you continue reading in this chapter, please make sure
@@ -7998,8 +8770,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1644"
->9.2. Background</A
+NAME="AEN1786"
+>10.2. Background</A
></H1
><P
>What is a Domain Controller? It is a machine that is able to answer
@@ -8035,9 +8807,13 @@ WIDTH="100%"
><TD
><PRE
CLASS="PROGRAMLISTING"
->workgroup = SAMBA
-domain master = yes
-domain logons = yes</PRE
+>[global]
+ workgroup = SAMBA
+ domain master = yes
+ domain logons = yes
+ encrypt passwords = yes
+ security = user
+ ....</PRE
></TD
></TR
></TABLE
@@ -8052,8 +8828,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1652"
->9.3. What qualifies a Domain Controller on the network?</A
+NAME="AEN1794"
+>10.3. What qualifies a Domain Controller on the network?</A
></H1
><P
>Every machine that is a Domain Controller for the domain SAMBA has to
@@ -8069,8 +8845,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1655"
->9.3.1. How does a Workstation find its domain controller?</A
+NAME="AEN1797"
+>10.3.1. How does a Workstation find its domain controller?</A
></H2
><P
>A NT workstation in the domain SAMBA that wants a local user to be
@@ -8088,8 +8864,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1658"
->9.3.2. When is the PDC needed?</A
+NAME="AEN1800"
+>10.3.2. When is the PDC needed?</A
></H2
><P
>Whenever a user wants to change his password, this has to be done on
@@ -8104,8 +8880,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1661"
->9.4. Can Samba be a Backup Domain Controller?</A
+NAME="AEN1803"
+>10.4. Can Samba be a Backup Domain Controller?</A
></H1
><P
>With version 2.2, no. The native NT SAM replication protocols have
@@ -8123,8 +8899,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1665"
->9.5. How do I set up a Samba BDC?</A
+NAME="AEN1807"
+>10.5. How do I set up a Samba BDC?</A
></H1
><P
>Several things have to be done:</P
@@ -8133,33 +8909,93 @@ NAME="AEN1665"
><UL
><LI
><P
->The file private/MACHINE.SID identifies the domain. When a samba
-server is first started, it is created on the fly and must never be
-changed again. This file has to be the same on the PDC and the BDC,
-so the MACHINE.SID has to be copied from the PDC to the BDC.</P
+> The file <TT
+CLASS="FILENAME"
+>private/MACHINE.SID</TT
+> identifies the domain. When a samba
+ server is first started, it is created on the fly and must never be
+ changed again. This file has to be the same on the PDC and the BDC,
+ so the MACHINE.SID has to be copied from the PDC to the BDC. Note that in the
+ latest Samba 2.2.x releases, the machine SID (and therefore domain SID) is stored
+ in the <TT
+CLASS="FILENAME"
+>private/secrets.tdb</TT
+> database. This file cannot just
+ be copied because Samba looks under the key <TT
+CLASS="CONSTANT"
+>SECRETS/SID/<TT
+CLASS="REPLACEABLE"
+><I
+>DOMAIN</I
+></TT
+></TT
+>.
+ where <TT
+CLASS="REPLACEABLE"
+><I
+>DOMAIN</I
+></TT
+> is the machine's netbios name. Since this name has
+ to be unique for each SAMBA server, this lookup will fail. </P
+><P
+> A new option has been added to the <B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+>
+ command to help ease this problem. When running <B
+CLASS="COMMAND"
+>smbpasswd -S</B
+> as the root user,
+ the domain SID will be retrieved from a domain controller matching the value of the
+ <TT
+CLASS="PARAMETER"
+><I
+>workgroup</I
+></TT
+> parameter in <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> and stored as the
+ new Samba server's machine SID. See the <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+></A
+>
+ man page for more details on this functionality.
+ </P
></LI
><LI
><P
->The Unix user database has to be synchronized from the PDC to the
-BDC. This means that both the /etc/passwd and /etc/group have to be
-replicated from the PDC to the BDC. This can be done manually
-whenever changes are made, or the PDC is set up as a NIS master
-server and the BDC as a NIS slave server. To set up the BDC as a
-mere NIS client would not be enough, as the BDC would not be able to
-access its user database in case of a PDC failure.</P
+> The Unix user database has to be synchronized from the PDC to the
+ BDC. This means that both the /etc/passwd and /etc/group have to be
+ replicated from the PDC to the BDC. This can be done manually
+ whenever changes are made, or the PDC is set up as a NIS master
+ server and the BDC as a NIS slave server. To set up the BDC as a
+ mere NIS client would not be enough, as the BDC would not be able to
+ access its user database in case of a PDC failure. LDAP is also a
+ potential vehicle for sharing this information.
+ </P
></LI
><LI
><P
->The Samba password database in the file private/smbpasswd has to be
-replicated from the PDC to the BDC. This is a bit tricky, see the
-next section.</P
+> The Samba password database in the file <TT
+CLASS="FILENAME"
+>private/smbpasswd</TT
+>
+ has to be replicated from the PDC to the BDC. This is a bit tricky, see the
+ next section.
+ </P
></LI
><LI
><P
->Any netlogon share has to be replicated from the PDC to the
-BDC. This can be done manually whenever login scripts are changed,
-or it can be done automatically together with the smbpasswd
-synchronization.</P
+> Any netlogon share has to be replicated from the PDC to the
+ BDC. This can be done manually whenever login scripts are changed,
+ or it can be done automatically together with the smbpasswd
+ synchronization.
+ </P
></LI
></UL
><P
@@ -8174,9 +9010,13 @@ WIDTH="100%"
><TD
><PRE
CLASS="PROGRAMLISTING"
->workgroup = samba
-domain master = no
-domain logons = yes</PRE
+>[global]
+ workgroup = SAMBA
+ domain master = yes
+ domain logons = yes
+ encrypt passwords = yes
+ security = user
+ ....</PRE
></TD
></TR
></TABLE
@@ -8193,21 +9033,57 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1681"
->9.5.1. How do I replicate the smbpasswd file?</A
+NAME="AEN1836"
+>10.5.1. How do I replicate the smbpasswd file?</A
></H2
><P
>Replication of the smbpasswd file is sensitive. It has to be done
-whenever changes to the SAM are made. Every user's password change is
-done in the smbpasswd file and has to be replicated to the BDC. So
+whenever changes to the SAM are made. Every user's password change
+(including machine trust account password changes) is done in the
+smbpasswd file and has to be replicated to the BDC. So
replicating the smbpasswd file very often is necessary.</P
><P
>As the smbpasswd file contains plain text password equivalents, it
must not be sent unencrypted over the wire. The best way to set up
smbpasswd replication from the PDC to the BDC is to use the utility
-rsync. rsync can use ssh as a transport. ssh itself can be set up to
-accept *only* rsync transfer without requiring the user to type a
-password.</P
+<B
+CLASS="COMMAND"
+>rsync(1)</B
+>. <B
+CLASS="COMMAND"
+>rsync</B
+> can use
+<B
+CLASS="COMMAND"
+>ssh(1)</B
+> as a transport. <B
+CLASS="COMMAND"
+>ssh</B
+> itself
+can be set up to accept <EM
+>only</EM
+> <B
+CLASS="COMMAND"
+>rsync</B
+> transfer without requiring the user to
+type a password. Refer to the man pages for these two tools for more details.</P
+><P
+>Another solution with high potential is to use Samba's <TT
+CLASS="PARAMETER"
+><I
+>--with-ldapsam</I
+></TT
+>
+for sharing and/or replicating the list of <TT
+CLASS="CONSTANT"
+>sambaAccount</TT
+> entries.
+This can all be done over SSL to ensure security. See the <A
+HREF="Samba-LDAP-HOWTO.html"
+TARGET="_top"
+>Samba-LDAP-HOWTO</A
+>
+for more details.</P
></DIV
></DIV
></DIV
@@ -8216,15 +9092,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="SAMBA-LDAP-HOWTO"
->Chapter 10. Storing Samba's User/Machine Account information in an LDAP Directory</A
+>Chapter 11. Storing Samba's User/Machine Account information in an LDAP Directory</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1702"
->10.1. Purpose</A
+NAME="AEN1867"
+>11.1. Purpose</A
></H1
><P
>This document describes how to use an LDAP directory for storing Samba user
@@ -8259,7 +9135,7 @@ TARGET="_top"
>O'Reilly Publishing</A
> is working on
a guide to LDAP for System Administrators which has a planned release date of
-early summer, 2002.</P
+late 2002.</P
><P
>Two additional Samba resources which may prove to be helpful are</P
><P
@@ -8281,7 +9157,11 @@ HREF="http://samba.idealx.org/"
TARGET="_top"
>IDEALX</A
> that are
- geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
+ geared to manage users and group in such a Samba-LDAP Domain Controller configuration. These scripts can
+ be found in the Samba 2.2.5 release in the <TT
+CLASS="FILENAME"
+>examples/LDAP/smbldap-tools/</TT
+> directory.
</P
></LI
></UL
@@ -8291,8 +9171,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1722"
->10.2. Introduction</A
+NAME="AEN1888"
+>11.2. Introduction</A
></H1
><P
>Traditionally, when configuring <A
@@ -8319,7 +9199,7 @@ in the thousands).</P
>The first is that all lookups must be performed sequentially. Given that
there are approximately two lookups per domain logon (one for a normal
session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for lareg sites. What is needed is an indexed approach
+is a performance bottleneck for large sites. What is needed is an indexed approach
such as is used in databases.</P
></LI
><LI
@@ -8345,7 +9225,10 @@ Identified (RID).</P
></UL
><P
>As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed. The API which defines access to user accounts
+used by <B
+CLASS="COMMAND"
+>smbd</B
+> was developed. The API which defines access to user accounts
is commonly referred to as the samdb interface (previously this was called the passdb
API, and is still so named in the CVS trees). In Samba 2.2.3, enabling support
for a samdb backend (e.g. <TT
@@ -8367,7 +9250,10 @@ CLASS="PARAMETER"
>--with-ldapsam</I
></TT
> autoconf
-option, smbd (and associated tools) will store and lookup user accounts in
+option, <B
+CLASS="COMMAND"
+>smbd</B
+> (and associated tools) will store and lookup user accounts in
an LDAP directory. In reality, this is very easy to understand. If you are
comfortable with using an smbpasswd file, simply replace "smbpasswd" with
"LDAP directory" in all the documentation.</P
@@ -8408,8 +9294,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1751"
->10.3. Supported LDAP Servers</A
+NAME="AEN1919"
+>11.3. Supported LDAP Servers</A
></H1
><P
>The LDAP samdb code in 2.2.3 has been developed and tested using the OpenLDAP
@@ -8433,8 +9319,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1756"
->10.4. Schema and Relationship to the RFC 2307 posixAccount</A
+NAME="AEN1924"
+>11.4. Schema and Relationship to the RFC 2307 posixAccount</A
></H1
><P
>Samba 2.2.3 includes the necessary schema file for OpenLDAP 2.0 in
@@ -8453,7 +9339,7 @@ WIDTH="100%"
><TD
><PRE
CLASS="PROGRAMLISTING"
->objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
+>objectclass ( 1.3.1.5.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILARY
DESC 'Samba Account'
MUST ( uid $ rid )
MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
@@ -8465,7 +9351,10 @@ CLASS="PROGRAMLISTING"
></TABLE
></P
><P
->The samba.schema file has been formatted for OpenLDAP 2.0. The OID's are
+>The <TT
+CLASS="FILENAME"
+>samba.schema</TT
+> file has been formatted for OpenLDAP 2.0 &#38; 2.1. The OID's are
owned by the Samba Team and as such is legal to be openly published.
If you translate the schema to be used with Netscape DS, please
submit the modified schema file as a patch to <A
@@ -8474,22 +9363,47 @@ TARGET="_top"
>jerry@samba.org</A
></P
><P
+>Since the original release, schema files for</P
+><P
+></P
+><UL
+><LI
+><P
+>IBM's SecureWay Server</P
+></LI
+><LI
+><P
+>Netscape Directory Server version 4.x and 5.x</P
+></LI
+></UL
+><P
+>have been submitted and included in the Samba source distribution. I cannot
+personally comment on the integration of these commercial directory servers since
+I have not had the oppotinuity to work with them.</P
+><P
>Just as the smbpasswd file is mean to store information which supplements a
user's <TT
CLASS="FILENAME"
>/etc/passwd</TT
> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information. A sambaAccount is a
+meant to supplement the UNIX user account information. A sambaAccount is now an
<TT
CLASS="CONSTANT"
->STRUCTURAL</TT
-> objectclass so it can be stored individually
-in the directory. However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307. This is by design.</P
+>AUXILARY</TT
+> objectclass so it can be stored alongside
+a posixAccount or person objectclass in the directory. Note that there are
+several fields (e.g. uid) which overlap with the posixAccount objectclass
+outlined in RFC2307. This is by design. The move from a STRUCTURAL objectclass
+to an AUXILIARY one was compliance with the LDAP data model which states that
+an entry can contain only one STRUCTURAL objectclass per entry. This is now
+enforced by the OpenLDAP 2.1 server.</P
><P
>In order to store all user account information (UNIX and Samba) in the directory,
it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination. However, smbd will still obtain the user's UNIX account
+combination. However, <B
+CLASS="COMMAND"
+>smbd</B
+> will still obtain the user's UNIX account
information via the standard C library calls (e.g. getpwnam(), et. al.).
This means that the Samba server must also have the LDAP NSS library installed
and functioning correctly. This division of information makes it possible to
@@ -8501,16 +9415,16 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1768"
->10.5. Configuring Samba with LDAP</A
+NAME="AEN1945"
+>11.5. Configuring Samba with LDAP</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1770"
->10.5.1. OpenLDAP configuration</A
+NAME="AEN1947"
+>11.5.1. OpenLDAP configuration</A
></H2
><P
>To include support for the sambaAccount object in an OpenLDAP directory
@@ -8588,9 +9502,9 @@ CLASS="PROGRAMLISTING"
## required by OpenLDAP 2.0
index objectclass eq
-## support pb_getsampwnam()
+## support pbb_getsampwnam()
index uid pres,eq
-## support pdb_getsambapwrid()
+## support pdb_getsampwrid()
index rid eq
## uncomment these if you are storing posixAccount and
@@ -8609,8 +9523,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1787"
->10.5.2. Configuring Samba</A
+NAME="AEN1964"
+>11.5.2. Configuring Samba</A
></H2
><P
>The following parameters are available in smb.conf only with <TT
@@ -8732,14 +9646,70 @@ CLASS="REPLACEABLE"
></TABLE
></P
></DIV
+><DIV
+CLASS="SECT2"
+><HR><H2
+CLASS="SECT2"
+><A
+NAME="AEN1992"
+>11.5.3. Importing <TT
+CLASS="FILENAME"
+>smbpasswd</TT
+> entries</A
+></H2
+><P
+>Import existing user entries from an <TT
+CLASS="FILENAME"
+>smbpasswd</TT
+> can be trivially done using
+a Perl script named <TT
+CLASS="FILENAME"
+>import_smbpasswd.pl</TT
+> included in the
+<TT
+CLASS="FILENAME"
+>examples/LDAP/</TT
+> directory of the Samba source distribution. There are
+two main requirements of this script:</P
+><P
+></P
+><UL
+><LI
+><P
+>All users to be imported to the directory must have a valid uid on the
+ local system. This can be a problem if using a machinej different from the Samba server
+ to import the file.</P
+></LI
+><LI
+><P
+>The local system must have a working installation of the Net::LDAP perl
+ module which can be obtained from with <A
+HREF="http://search.cpan.org/"
+TARGET="_top"
+>http://search.cpan.org/</A
+>
+ by searching for <TT
+CLASS="FILENAME"
+>perl-ldap</TT
+> or directly from <A
+HREF="http://perl-ldap.sf.net/"
+TARGET="_top"
+>http://perl-ldap.sf.net/</A
+>.
+ </P
+></LI
+></UL
+><P
+>Please refer to the documentation in the same directory as the script for more details.</P
+></DIV
></DIV
><DIV
CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1815"
->10.6. Accounts and Groups management</A
+NAME="AEN2008"
+>11.6. Accounts and Groups management</A
></H1
><P
>As users accounts are managed thru the sambaAccount objectclass, you should
@@ -8763,8 +9733,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1820"
->10.7. Security and sambaAccount</A
+NAME="AEN2013"
+>11.7. Security and sambaAccount</A
></H1
><P
>There are two important points to remember when discussing the security
@@ -8843,8 +9813,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1840"
->10.8. LDAP specials attributes for sambaAccounts</A
+NAME="AEN2033"
+>11.8. LDAP specials attributes for sambaAccounts</A
></H1
><P
>The sambaAccount objectclass is composed of the following attributes:</P
@@ -9054,8 +10024,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1910"
->10.9. Example LDIF Entries for a sambaAccount</A
+NAME="AEN2103"
+>11.9. Example LDIF Entries for a sambaAccount</A
></H1
><P
>The following is a working LDIF with the inclusion of the posixAccount objectclass:</P
@@ -9130,8 +10100,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1918"
->10.10. Comments</A
+NAME="AEN2111"
+>11.10. Comments</A
></H1
><P
>Please mail all comments regarding this HOWTO to <A
@@ -9139,7 +10109,7 @@ HREF="mailto:jerry@samba.org"
TARGET="_top"
>jerry@samba.org</A
>. This documents was
-last updated to reflect the Samba 2.2.3 release.&#13;</P
+last updated to reflect the Samba 2.2.5 release.&#13;</P
></DIV
></DIV
><DIV
@@ -9147,15 +10117,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="WINBIND"
->Chapter 11. Unified Logons between Windows NT and UNIX using Winbind</A
+>Chapter 12. Unified Logons between Windows NT and UNIX using Winbind</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1947"
->11.1. Abstract</A
+NAME="AEN2140"
+>12.1. Abstract</A
></H1
><P
>Integration of UNIX and Microsoft Windows NT through
@@ -9177,8 +10147,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1951"
->11.2. Introduction</A
+NAME="AEN2144"
+>12.2. Introduction</A
></H1
><P
>It is well known that UNIX and Microsoft Windows NT have
@@ -9231,8 +10201,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1964"
->11.3. What Winbind Provides</A
+NAME="AEN2157"
+>12.3. What Winbind Provides</A
></H1
><P
>Winbind unifies UNIX and Windows NT account management by
@@ -9273,8 +10243,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1971"
->11.3.1. Target Uses</A
+NAME="AEN2164"
+>12.3.1. Target Uses</A
></H2
><P
>Winbind is targeted at organizations that have an
@@ -9286,7 +10256,7 @@ NAME="AEN1971"
workstations into a NT based organization.</P
><P
>Another interesting way in which we expect Winbind to
- be used is as a central part of UNIX based appliances. Appliances
+ be used is as a central part of UNIX based appliances. Appliances
that provide file and print services to Microsoft based networks
will be able to use Winbind to provide seamless integration of
the appliance into the domain.</P
@@ -9297,8 +10267,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN1975"
->11.4. How Winbind Works</A
+NAME="AEN2168"
+>12.4. How Winbind Works</A
></H1
><P
>The winbind system is designed around a client/server
@@ -9317,8 +10287,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1980"
->11.4.1. Microsoft Remote Procedure Calls</A
+NAME="AEN2173"
+>12.4.1. Microsoft Remote Procedure Calls</A
></H2
><P
>Over the last two years, efforts have been underway
@@ -9343,8 +10313,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN1984"
->11.4.2. Name Service Switch</A
+NAME="AEN2177"
+>12.4.2. Name Service Switch</A
></H2
><P
>The Name Service Switch, or NSS, is a feature that is
@@ -9423,8 +10393,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2000"
->11.4.3. Pluggable Authentication Modules</A
+NAME="AEN2193"
+>12.4.3. Pluggable Authentication Modules</A
></H2
><P
>Pluggable Authentication Modules, also known as PAM,
@@ -9472,8 +10442,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2008"
->11.4.4. User and Group ID Allocation</A
+NAME="AEN2201"
+>12.4.4. User and Group ID Allocation</A
></H2
><P
>When a user or group is created under Windows NT
@@ -9498,8 +10468,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2012"
->11.4.5. Result Caching</A
+NAME="AEN2205"
+>12.4.5. Result Caching</A
></H2
><P
>An active system can generate a lot of user and group
@@ -9521,8 +10491,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN2015"
->11.5. Installation and Configuration</A
+NAME="AEN2208"
+>12.5. Installation and Configuration</A
></H1
><P
>Many thanks to John Trostel <A
@@ -9530,37 +10500,29 @@ HREF="mailto:jtrostel@snapserver.com"
TARGET="_top"
>jtrostel@snapserver.com</A
>
-for providing the HOWTO for this section.</P
-><P
->This HOWTO describes how to get winbind services up and running
+for providing the original Linux version of this HOWTO which
+describes how to get winbind services up and running
to control access and authenticate users on your Linux box using
-the winbind services which come with SAMBA 2.2.2.</P
-><P
->There is also some Solaris specific information in
-<TT
-CLASS="FILENAME"
->docs/textdocs/Solaris-Winbind-HOWTO.txt</TT
->.
-Future revisions of this document will incorporate that
-information.</P
+the winbind services which are included with the SAMBA 2.2.2 and later
+releases.</P
><DIV
CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2022"
->11.5.1. Introduction</A
+NAME="AEN2212"
+>12.5.1. Introduction</A
></H2
><P
>This HOWTO describes the procedures used to get winbind up and
-running on my RedHat 7.1 system. Winbind is capable of providing access
-and authentication control for Windows Domain users through an NT
-or Win2K PDC for 'regular' services, such as telnet a nd ftp, as
-well for SAMBA services.</P
+running on a RedHat 7.1 system. Winbind is capable of providing access
+and authentication control for Windows Domain users through an NT
+or Win2K PDC for 'regular' services, such as telnet and ftp, as
+well providing dynamic uid/gid allocation for Samba.</P
><P
->This HOWTO has been written from a 'RedHat-centric' perspective, so if
-you are using another distribution, you may have to modify the instructions
-somewhat to fit the way your distribution works.</P
+>This HOWTO has been written from a 'RedHat-centric' perspective, so if
+you are using another distribution (or operating system), you may have
+to modify the instructions somewhat to fit the way your distribution works.</P
><P
></P
><UL
@@ -9571,9 +10533,9 @@ somewhat to fit the way your distribution works.</P
>
</P
><P
->This allows the SAMBA administrator to rely on the
- authentication mechanisms on the NT/Win2K PDC for the authentication
- of domain members. NT/Win2K users no longer need to have separate
+>This allows the SAMBA administrator to rely on the
+ authentication mechanisms on the NT/Win2K PDC for the authentication
+ of domain members. NT/Win2K users no longer need to have separate
accounts on the SAMBA server.
</P
></LI
@@ -9584,12 +10546,10 @@ somewhat to fit the way your distribution works.</P
>
</P
><P
-> This HOWTO is designed for system administrators. If you are
- implementing SAMBA on a file server and wish to (fairly easily)
+> This HOWTO is designed for system administrators. If you are
+ implementing SAMBA on a file server and wish to (fairly easily)
integrate existing NT/Win2K users from your PDC onto the
- SAMBA server, this HOWTO is for you. That said, I am no NT or PAM
- expert, so you may find a better or easier way to accomplish
- these tasks.
+ SAMBA server, this HOWTO is for you.
</P
></LI
></UL
@@ -9599,116 +10559,127 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2035"
->11.5.2. Requirements</A
+NAME="AEN2225"
+>12.5.2. Requirements</A
></H2
><P
->If you have a samba configuration file that you are currently
+>If you have a samba configuration file that you are currently
using... <EM
>BACK IT UP!</EM
-> If your system already uses PAM,
+> If your system already uses PAM,
<EM
>back up the <TT
CLASS="FILENAME"
>/etc/pam.d</TT
-> directory
-contents!</EM
-> If you haven't already made a boot disk,
+> (or <TT
+CLASS="FILENAME"
+>/etc/pam.conf</TT
+>)
+directory contents!</EM
+> If you haven't already made a boot disk,
<EM
>MAKE ONE NOW!</EM
></P
><P
->Messing with the pam configuration files can make it nearly impossible
-to log in to yourmachine. That's why you want to be able to boot back
-into your machine in single user mode and restore your
+>Messing with the pam configuration files can make it nearly impossible
+to log in to your machine. That's why you want to be able to boot back
+into your machine in single user mode and restore your
<TT
CLASS="FILENAME"
>/etc/pam.d</TT
-> back to the original state they were in if
-you get frustrated with the way things are going. ;-)</P
+> (or <TT
+CLASS="FILENAME"
+>pam.conmf</TT
+>) back to
+the original state they were in if
+you get frustrated with the way things are going.</P
><P
->The latest version of SAMBA (version 2.2.2 as of this writing), now
-includes a functioning winbindd daemon. Please refer to the
+>The first SAMBA release to inclue a stable winbindd daemon was 2.2.2. Please refer to the
<A
HREF="http://samba.org/"
TARGET="_top"
>main SAMBA web page</A
-> or,
-better yet, your closest SAMBA mirror site for instructions on
-downloading the source code.</P
+> or,
+better yet, your closest SAMBA mirror site for instructions on
+downloading the source code. it is generally advised to obtain the lates
+Samba release as bugs are constantly being fixed.</P
><P
->To allow Domain users the ability to access SAMBA shares and
-files, as well as potentially other services provided by your
+>To allow Domain users the ability to access SAMBA shares and
+files, as well as potentially other services provided by your
SAMBA machine, PAM (pluggable authentication modules) must
-be setup properly on your machine. In order to compile the
-winbind modules, you should have at least the pam libraries resident
-on your system. For recent RedHat systems (7.1, for instance), that
-means <TT
+be setup properly on your machine. In order to compile the
+winbind modules, you must have at the PAM libraries and header files resident
+on your system. For recent RedHat systems (7.x, for instance), that
+means installing both <TT
CLASS="FILENAME"
->pam-0.74-22</TT
->. For best results, it is helpful to also
-install the development packages in <TT
+>pam</TT
+> and <TT
CLASS="FILENAME"
->pam-devel-0.74-22</TT
->.</P
+>pam-devel</TT
+> RPM.
+The former is installed by default on all Linux systems of which the author is aware.</P
></DIV
><DIV
CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2049"
->11.5.3. Testing Things Out</A
+NAME="AEN2241"
+>12.5.3. Testing Things Out</A
></H2
><P
->Before starting, it is probably best to kill off all the SAMBA
-related daemons running on your server. Kill off all <B
+>Before starting, kill off all the SAMBA related daemons running on your server. Kill off
+all <B
CLASS="COMMAND"
>smbd</B
->,
-<B
+>, <B
CLASS="COMMAND"
>nmbd</B
>, and <B
CLASS="COMMAND"
>winbindd</B
-> processes that may
-be running. To use PAM, you will want to make sure that you have the
-standard PAM package (for RedHat) which supplies the <TT
+> processes that may
+be running (<B
+CLASS="COMMAND"
+>winbindd</B
+> will only be running if you have ao previous Winbind
+installation...but why would you be reading tis if that were the case?). To use PAM, you will
+want to make sure that you have the standard PAM package (for RedHat) which supplies the <TT
CLASS="FILENAME"
>/etc/pam.d</TT
->
-directory structure, including the pam modules are used by pam-aware
+>
+directory structure, including the pam modules are used by pam-aware
services, several pam libraries, and the <TT
CLASS="FILENAME"
>/usr/doc</TT
->
+>
and <TT
CLASS="FILENAME"
>/usr/man</TT
-> entries for pam. Winbind built better
-in SAMBA if the pam-devel package was also installed. This package includes
-the header files needed to compile pam-aware applications. For instance,
-my RedHat system has both <TT
-CLASS="FILENAME"
->pam-0.74-22</TT
-> and
-<TT
+> entries for pam. Samba will require
+the pam-devel package if you plan to build the <TT
CLASS="FILENAME"
->pam-devel-0.74-22</TT
-> RPMs installed.</P
+>pam_winbind.so</TT
+> library or
+include the <B
+CLASS="COMMAND"
+>--with-pam</B
+> option to the configure script.
+This package includes the header files needed to compile pam-aware applications.</P
+><P
+>[I have no idea which Solaris packages are quired for PAM libraries and
+development files. If you know, please mail me the information and I will include
+it in the next revision of this HOWTO. --jerry@samba.org]</P
><DIV
CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2060"
->11.5.3.1. Configure and compile SAMBA</A
+NAME="AEN2254"
+>12.5.3.1. Configure and Compile SAMBA</A
></H3
><P
->The configuration and compilation of SAMBA is pretty straightforward.
-The first three steps may not be necessary depending upon
-whether or not you have previously built the Samba binaries.</P
+>The configuration and compilation of SAMBA is straightforward.</P
><P
><TABLE
BORDER="0"
@@ -9723,27 +10694,6 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->autoconf</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make clean</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->rm config.cache</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
>./configure --with-winbind</B
>
<TT
@@ -9770,36 +10720,43 @@ CLASS="FILENAME"
>/usr/local/samba</TT
>.
See the main SAMBA documentation if you want to install SAMBA somewhere else.
-It will also build the winbindd executable and libraries. </P
+It will also build the winbindd executable and NSS library.</P
></DIV
><DIV
CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2079"
->11.5.3.2. Configure <TT
+NAME="AEN2267"
+>12.5.3.2. Configure <TT
CLASS="FILENAME"
>nsswitch.conf</TT
-> and the
+> and the
winbind libraries</A
></H3
><P
>The libraries needed to run the <B
CLASS="COMMAND"
>winbindd</B
-> daemon
-through nsswitch need to be copied to their proper locations, so</P
+> daemon
+through nsswitch need to be copied to their proper locations.</P
><P
><TT
CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->cp ../samba/source/nsswitch/libnss_winbind.so /lib</B
+>cp nsswitch/libnss_winbind.so /lib</B
+>
+<TT
+CLASS="PROMPT"
+>root#</TT
+> <B
+CLASS="COMMAND"
+>chmod 755 /lib/libnss_winbind.so</B
></P
><P
->I also found it necessary to make the following symbolic link:</P
+>It necessary to make the following symbolic link:</P
><P
><TT
CLASS="PROMPT"
@@ -9809,19 +10766,26 @@ CLASS="COMMAND"
>ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2</B
></P
><P
->Now, as root you need to edit <TT
+>The <TT
+CLASS="FILENAME"
+>.2</TT
+> extension is due to the version of glibc used on your Linux host.
+for most modern systems, the file extension is correct. However, some other operating systems,
+Solaris 7/8 being the most common, the destination filename should be replaced with
+<TT
+CLASS="FILENAME"
+>/lib/nss_winbind.so.1</TT
+></P
+><P
+>Now, as root edit <TT
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
-> to
+> to
allow user and group entries to be visible from the <B
CLASS="COMMAND"
>winbindd</B
->
-daemon. My <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> file look like
-this after editing:</P
+>
+daemon. After editing, the file look appear:</P
><P
><TABLE
BORDER="0"
@@ -9832,59 +10796,39 @@ WIDTH="100%"
><PRE
CLASS="PROGRAMLISTING"
> passwd: files winbind
- shadow: files
+ shadow: files
group: files winbind</PRE
></TD
></TR
></TABLE
></P
-><P
->
-The libraries needed by the winbind daemon will be automatically
-entered into the <B
-CLASS="COMMAND"
->ldconfig</B
-> cache the next time
-your system reboots, but it
-is faster (and you don't need to reboot) if you do it manually:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/sbin/ldconfig -v | grep winbind</B
-></P
-><P
->This makes <TT
-CLASS="FILENAME"
->libnss_winbind</TT
-> available to winbindd
-and echos back a check to you.</P
></DIV
><DIV
CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2104"
->11.5.3.3. Configure smb.conf</A
+NAME="AEN2289"
+>12.5.3.3. Configure <TT
+CLASS="FILENAME"
+>smb.conf</TT
+></A
></H3
><P
->Several parameters are needed in the smb.conf file to control
+>Several parameters are needed in the smb.conf file to control
the behavior of <B
CLASS="COMMAND"
>winbindd</B
->. Configure
+>. Configure
<TT
CLASS="FILENAME"
>smb.conf</TT
-> These are described in more detail in
+> These are described in more detail in
the <A
HREF="winbindd.8.html"
TARGET="_top"
>winbindd(8)</A
-> man page. My
+> man page. My
<TT
CLASS="FILENAME"
>smb.conf</TT
@@ -9920,6 +10864,8 @@ TARGET="_top"
>winbind gid</A
> = 10000-20000
# allow enumeration of winbind users and groups
+ # might need to disable these next two for performance
+ # reasons on the winbindd host
<A
HREF="winbindd.8.html#WINBINDENUMUSERS"
TARGET="_top"
@@ -9930,7 +10876,7 @@ HREF="winbindd.8.html#WINBINDENUMGROUP"
TARGET="_top"
>winbind enum groups</A
> = yes
- # give winbind users a real shell (only needed if they have telnet access)
+ # give winbind users a real shell (only needed if they have telnet/sshd/etc... access)
<A
HREF="winbindd.8.html#TEMPLATEHOMEDIR"
TARGET="_top"
@@ -9951,23 +10897,23 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2120"
->11.5.3.4. Join the SAMBA server to the PDC domain</A
+NAME="AEN2306"
+>12.5.3.4. Join the SAMBA server to the PDC domain</A
></H3
><P
->Enter the following command to make the SAMBA server join the
+>Enter the following command to make the SAMBA server join the
PDC domain, where <TT
CLASS="REPLACEABLE"
><I
>DOMAIN</I
></TT
-> is the name of
+> is the name of
your Windows domain and <TT
CLASS="REPLACEABLE"
><I
>Administrator</I
></TT
-> is
+> is
a domain user who has administrative privileges in the domain.</P
><P
><TT
@@ -9978,7 +10924,7 @@ CLASS="COMMAND"
>/usr/local/samba/bin/smbpasswd -j DOMAIN -r PDC -U Administrator</B
></P
><P
->The proper response to the command should be: "Joined the domain
+>The proper response to the command should be: "Joined the domain
<TT
CLASS="REPLACEABLE"
><I
@@ -9989,7 +10935,7 @@ CLASS="REPLACEABLE"
><I
>DOMAIN</I
></TT
->
+>
is your DOMAIN name.</P
></DIV
><DIV
@@ -9997,14 +10943,14 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2131"
->11.5.3.5. Start up the winbindd daemon and test it!</A
+NAME="AEN2317"
+>12.5.3.5. Start up the winbindd daemon and test it!</A
></H3
><P
->Eventually, you will want to modify your smb startup script to
-automatically invoke the winbindd daemon when the other parts of
+>Eventually, you will want to modify your smb startup script to
+automatically invoke the winbindd daemon when the other parts of
SAMBA start, but it is possible to test out just the winbind
-portion first. To start up winbind services, enter the following
+portion first. To start up winbind services, enter the following
command as root:</P
><P
><TT
@@ -10012,10 +10958,17 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->/usr/local/samba/bin/winbindd</B
+>export PATH=$PATH:/usr/local/samba/bin</B
+>
+<TT
+CLASS="PROMPT"
+>root#</TT
+> <B
+CLASS="COMMAND"
+>winbindd</B
></P
><P
->I'm always paranoid and like to make sure the daemon
+>I'm always paranoid and like to make sure the daemon
is really running...</P
><P
><TT
@@ -10030,7 +10983,13 @@ CLASS="COMMAND"
><P
>3025 ? 00:00:00 winbindd</P
><P
->Now... for the real test, try to get some information about the
+>Note that a sample RedHat init script for starting winbindd is included in
+the SAMBA sourse distribution as <TT
+CLASS="FILENAME"
+>packaging/RedHat/winbind.init</TT
+>.</P
+><P
+>Now... for the real test, try to get some information about the
users on your PDC</P
><P
><TT
@@ -10038,11 +10997,10 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->/usr/local/samba/bin/wbinfo -u</B
+>wbinfo -u</B
></P
><P
->
-This should echo back a list of users on your Windows users on
+>This should echo back a list of users on your Windows users on
your PDC. For example, I get the following response:</P
><P
><TABLE
@@ -10072,7 +11030,7 @@ separator</I
></TT
> is '+'.</P
><P
->You can do the same sort of thing to get group information from
+>You can do the same sort of thing to get group information from
the PDC:</P
><P
><TABLE
@@ -10104,7 +11062,7 @@ CEO+Group Policy Creator Owners</PRE
></TABLE
></P
><P
->The function 'getent' can now be used to get unified
+>The function 'getent' can now be used to get unified
lists of both local and PDC users and groups.
Try the following command:</P
><P
@@ -10119,9 +11077,13 @@ CLASS="COMMAND"
>You should get a list that looks like your <TT
CLASS="FILENAME"
>/etc/passwd</TT
->
-list followed by the domain users with their new uids, gids, home
-directories and default shells.</P
+>
+list followed by the domain users with their new uids, gids, home
+directories and default shells. If you do not, verify that the permissions on the
+libnss_winbind.so library are <TT
+CLASS="FILENAME"
+>rwxr-xr-x</TT
+>.</P
><P
>The same thing can be done for groups with the command</P
><P
@@ -10138,150 +11100,32 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN2167"
->11.5.3.6. Fix the <TT
-CLASS="FILENAME"
->/etc/rc.d/init.d/smb</TT
-> startup files</A
+NAME="AEN2358"
+>12.5.3.6. Configure Winbind and PAM</A
></H3
><P
->The <B
+>At this point we are assured that <B
CLASS="COMMAND"
>winbindd</B
-> daemon needs to start up after the
-<B
-CLASS="COMMAND"
->smbd</B
> and <B
CLASS="COMMAND"
->nmbd</B
-> daemons are running.
-To accomplish this task, you need to modify the <TT
-CLASS="FILENAME"
->/etc/init.d/smb</TT
+>smbd</B
>
-script to add commands to invoke this daemon in the proper sequence. My
+are working together. If you want to use winbind to provide authentication for other
+services, keep reading. The pam configuration files need to be altered in
+this step. (Did you remember to make backups of your original
<TT
CLASS="FILENAME"
->/etc/init.d/smb</TT
-> file starts up <B
-CLASS="COMMAND"
->smbd</B
->,
-<B
-CLASS="COMMAND"
->nmbd</B
->, and <B
-CLASS="COMMAND"
->winbindd</B
-> from the
-<TT
+>/etc/pam.d</TT
+> (or <TT
CLASS="FILENAME"
->/usr/local/samba/bin</TT
-> directory directly. The 'start'
-function in the script looks like this:</P
-><P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->start() {
- KIND="SMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/smbd $SMBDOPTIONS
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/nmbd $NMBDOPTIONS
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/winbindd
- RETVAL3=$?
- echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; touch /var/lock/subsys/smb || \
- RETVAL=1
- return $RETVAL
-}</PRE
-></TD
-></TR
-></TABLE
-></P
-><P
->The 'stop' function has a corresponding entry to shut down the
-services and look s like this:</P
-><P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->stop() {
- KIND="SMB"
- echo -n $"Shutting down $KIND services: "
- killproc smbd
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Shutting down $KIND services: "
- killproc nmbd
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Shutting down $KIND services: "
- killproc winbindd
- RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; rm -f /var/lock/subsys/smb
- echo ""
- return $RETVAL
-}</PRE
-></TD
-></TR
-></TABLE
-></P
+>/etc/pam.conf</TT
+>) file[s]? If not, do it now.)</P
><P
->If you restart the <B
-CLASS="COMMAND"
->smbd</B
->, <B
-CLASS="COMMAND"
->nmbd</B
->,
-and <B
+>You will need a PAM module to use <B
CLASS="COMMAND"
>winbindd</B
-> daemons at this point, you
-should be able to connect to the samba server as a domain member just as
-if you were a local user.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H3
-CLASS="SECT3"
-><A
-NAME="AEN2189"
->11.5.3.7. Configure Winbind and PAM</A
-></H3
-><P
->If you have made it this far, you know that winbindd and samba are working
-together. If you want to use winbind to provide authentication for other
-services, keep reading. The pam configuration files need to be altered in
-this step. (Did you remember to make backups of your original
-<TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> files? If not, do it now.)</P
-><P
->You will need a pam module to use winbindd with these other services. This
+> with these other services. This
module will be compiled in the <TT
CLASS="FILENAME"
>../source/nsswitch</TT
@@ -10304,7 +11148,7 @@ CLASS="FILENAME"
CLASS="FILENAME"
>pam_winbind.so</TT
> file should be copied to the location of
-your other pam security modules. On my RedHat system, this was the
+your other pam security modules. On Linux and Solaris systems, this is the
<TT
CLASS="FILENAME"
>/lib/security</TT
@@ -10315,50 +11159,36 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->cp ../samba/source/nsswitch/pam_winbind.so /lib/security</B
-></P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/samba</TT
-> file does not need to be changed. I
-just left this fileas it was:</P
-><P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="100%"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_stack.so service=system-auth
-account required /lib/security/pam_stack.so service=system-auth</PRE
-></TD
-></TR
-></TABLE
+>cp nsswitch/pam_winbind.so /lib/security</B
+>
+<TT
+CLASS="PROMPT"
+>root#</TT
+> <B
+CLASS="COMMAND"
+>chmod 755 /lib/security/pam_winbind.so</B
></P
><P
->The other services that I modified to allow the use of winbind
-as an authentication service were the normal login on the console (or a terminal
-session), telnet logins, and ftp service. In order to enable these
-services, you may first need to change the entries in
+>Other services, such as the normal login on the console (or a terminal
+session), telnet logins, and ftp service, can be modified to allow the use of winbind
+as an authentication service. In order to enable these
+services, you may first need to change the entries in
<TT
CLASS="FILENAME"
>/etc/xinetd.d</TT
> (or <TT
CLASS="FILENAME"
>/etc/inetd.conf</TT
->).
-RedHat 7.1 uses the new xinetd.d structure, in this case you need
+>).
+RedHat 7.1 uses the new xinetd.d structure, in this case you need
to change the lines in <TT
CLASS="FILENAME"
>/etc/xinetd.d/telnet</TT
->
+>
and <TT
CLASS="FILENAME"
>/etc/xinetd.d/wu-ftp</TT
-> from </P
+> from</P
><P
><TABLE
BORDER="0"
@@ -10390,15 +11220,14 @@ CLASS="PROGRAMLISTING"
></TABLE
></P
><P
->
-For ftp services to work properly, you will also need to either
-have individual directories for the domain users already present on
+>For ftp services to work properly, you will also need to either
+have individual directories for the domain users already present on
the server, or change the home directory template to a general
-directory for all domain users. These can be easily set using
+directory for all domain users. These can be easily set using
the <TT
CLASS="FILENAME"
>smb.conf</TT
-> global entry
+> global entry
<B
CLASS="COMMAND"
>template homedir</B
@@ -10407,12 +11236,12 @@ CLASS="COMMAND"
>The <TT
CLASS="FILENAME"
>/etc/pam.d/ftp</TT
-> file can be changed
+> file can be changed
to allow winbind ftp access in a manner similar to the
samba file. My <TT
CLASS="FILENAME"
>/etc/pam.d/ftp</TT
-> file was
+> file was
changed to look like this:</P
><P
><TABLE
@@ -10438,7 +11267,7 @@ session required /lib/security/pam_stack.so service=system-auth</PRE
>The <TT
CLASS="FILENAME"
>/etc/pam.d/login</TT
-> file can be changed nearly the
+> file can be changed nearly the
same way. It now looks like this:</P
><P
><TABLE
@@ -10467,12 +11296,12 @@ session optional /lib/security/pam_console.so</PRE
>In this case, I added the <B
CLASS="COMMAND"
>auth sufficient /lib/security/pam_winbind.so</B
->
+>
lines as before, but also added the <B
CLASS="COMMAND"
>required pam_securetty.so</B
->
-above it, to disallow root logins over the network. I also added a
+>
+above it, to disallow root logins over the network. I also added a
<B
CLASS="COMMAND"
>sufficient /lib/security/pam_unix.so use_first_pass</B
@@ -10480,8 +11309,32 @@ CLASS="COMMAND"
line after the <B
CLASS="COMMAND"
>winbind.so</B
-> line to get rid of annoying
+> line to get rid of annoying
double prompts for passwords.</P
+><P
+>Note that a Solaris <TT
+CLASS="FILENAME"
+>/etc/pam.conf</TT
+> confiruation file looks
+very similar to this except thaty the service name is included as the first entry
+per line. An example for the login service is given here.</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>## excerpt from /etc/pam.conf on a Solaris 8 system
+login auth required /lib/security/pam_winbind.so
+login auth required /lib/security/$ISA/pam_unix.so.1 try_first_pass
+login auth required /lib/security/$ISA/pam_dial_auth.so.1 try_first_pass</PRE
+></TD
+></TR
+></TABLE
+></P
></DIV
></DIV
></DIV
@@ -10490,38 +11343,28 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN2236"
->11.6. Limitations</A
+NAME="AEN2411"
+>12.6. Limitations</A
></H1
><P
->Winbind has a number of limitations in its current
- released version that we hope to overcome in future
+>Winbind has a number of limitations in its current
+ released version that we hope to overcome in future
releases:</P
><P
></P
><UL
><LI
><P
->Winbind is currently only available for
- the Linux operating system, although ports to other operating
- systems are certainly possible. For such ports to be feasible,
- we require the C library of the target operating system to
- support the Name Service Switch and Pluggable Authentication
- Modules systems. This is becoming more common as NSS and
- PAM gain support among UNIX vendors.</P
-></LI
-><LI
-><P
->The mappings of Windows NT RIDs to UNIX ids
- is not made algorithmically and depends on the order in which
- unmapped users or groups are seen by winbind. It may be difficult
- to recover the mappings of rid to UNIX id mapping if the file
+>The mappings of Windows NT RIDs to UNIX ids
+ is not made algorithmically and depends on the order in which
+ unmapped users or groups are seen by winbind. It may be difficult
+ to recover the mappings of rid to UNIX id mapping if the file
containing this information is corrupted or destroyed.</P
></LI
><LI
><P
->Currently the winbind PAM module does not take
- into account possible workstation and logon time restrictions
+>Currently the winbind PAM module does not take
+ into account possible workstation and logon time restrictions
that may be been set for Windows NT users.</P
></LI
></UL
@@ -10531,8 +11374,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN2246"
->11.7. Conclusion</A
+NAME="AEN2419"
+>12.7. Conclusion</A
></H1
><P
>The winbind system, through the use of the Name Service
@@ -10548,23 +11391,23 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="OS2"
->Chapter 12. OS2 Client HOWTO</A
+>Chapter 13. OS2 Client HOWTO</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2260"
->12.1. FAQs</A
+NAME="AEN2433"
+>13.1. FAQs</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2262"
->12.1.1. How can I configure OS/2 Warp Connect or
+NAME="AEN2435"
+>13.1.1. How can I configure OS/2 Warp Connect or
OS/2 Warp 4 as a client for Samba?</A
></H2
><P
@@ -10622,8 +11465,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2277"
->12.1.2. How can I configure OS/2 Warp 3 (not Connect),
+NAME="AEN2450"
+>13.1.2. How can I configure OS/2 Warp 3 (not Connect),
OS/2 1.2, 1.3 or 2.x for Samba?</A
></H2
><P
@@ -10675,8 +11518,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2286"
->12.1.3. Are there any other issues when OS/2 (any version)
+NAME="AEN2459"
+>13.1.3. Are there any other issues when OS/2 (any version)
is used as a client?</A
></H2
><P
@@ -10697,8 +11540,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2290"
->12.1.4. How do I get printer driver download working
+NAME="AEN2463"
+>13.1.4. How do I get printer driver download working
for OS/2 clients?</A
></H2
><P
@@ -10746,15 +11589,15 @@ CLASS="CHAPTER"
><HR><H1
><A
NAME="CVS-ACCESS"
->Chapter 13. HOWTO Access Samba source code via CVS</A
+>Chapter 14. HOWTO Access Samba source code via CVS</A
></H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2306"
->13.1. Introduction</A
+NAME="AEN2479"
+>14.1. Introduction</A
></H1
><P
>Samba is developed in an open environment. Developers use CVS
@@ -10775,8 +11618,8 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN2311"
->13.2. CVS Access to samba.org</A
+NAME="AEN2484"
+>14.2. CVS Access to samba.org</A
></H1
><P
>The machine samba.org runs a publicly accessible CVS
@@ -10788,8 +11631,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2314"
->13.2.1. Access via CVSweb</A
+NAME="AEN2487"
+>14.2.1. Access via CVSweb</A
></H2
><P
>You can access the source code via your
@@ -10809,8 +11652,8 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN2319"
->13.2.2. Access via cvs</A
+NAME="AEN2492"
+>14.2.2. Access via cvs</A
></H2
><P
>You can also access the source code via a
@@ -10915,14 +11758,14 @@ CLASS="COMMAND"
></DIV
><HR><H1
><A
-NAME="AEN2347"
+NAME="AEN2520"
>Index</A
></H1
><DL
><DT
>Primary Domain Controller,
<A
-HREF="x1100.htm"
+HREF="x1242.htm"
>Background</A
>
</DT
diff --git a/docs/htmldocs/UNIX_INSTALL.html b/docs/htmldocs/UNIX_INSTALL.html
index 35b1d9b01bc..707fd87245b 100644
--- a/docs/htmldocs/UNIX_INSTALL.html
+++ b/docs/htmldocs/UNIX_INSTALL.html
@@ -478,7 +478,7 @@ CLASS="REPLACEABLE"
></TT
></P
><P
->Your should get back a list of shares available on
+>You should get back a list of shares available on
your server. If you don't then something is incorrectly setup.
Note that this method can also be used to see what shares
are available on other LanManager clients (such as WfWg).</P
diff --git a/docs/htmldocs/cups.html b/docs/htmldocs/cups.html
new file mode 100644
index 00000000000..4c07986acaa
--- /dev/null
+++ b/docs/htmldocs/cups.html
@@ -0,0 +1,588 @@
+<HTML
+><HEAD
+><TITLE
+>Printing with CUPS in Samba 2.2.x</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.57"></HEAD
+><BODY
+CLASS="ARTICLE"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="ARTICLE"
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="TITLE"
+><A
+NAME="CUPS"
+>Printing with CUPS in Samba 2.2.x</A
+></H1
+><HR></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN3"
+>Printing with CUPS in Samba 2.2.x</A
+></H1
+><P
+><A
+HREF="http://www.cups.org/"
+TARGET="_top"
+>CUPS</A
+> is a newcomer in
+the UNIX printing scene, which has convinced many people upon first trial
+already. However, it has quite a few new features, which make it different
+from other, more traditional printing systems.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN7"
+>Configuring <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> for CUPS</A
+></H1
+><P
+>Printing with CUPS in the most basic <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>
+setup in Samba 2.2.x only needs two settings: <B
+CLASS="COMMAND"
+>printing = cups</B
+> and
+<B
+CLASS="COMMAND"
+>printcap = cups</B
+>. While CUPS itself doesn't need a printcap
+anymore, the <TT
+CLASS="FILENAME"
+>cupsd.conf</TT
+> configuration file knows two directives
+(example: <B
+CLASS="COMMAND"
+>Printcap /etc/printcap</B
+> and <B
+CLASS="COMMAND"
+>PrintcapFormat
+BSD</B
+>), which control if such a file should be created for the
+convenience of third party applications. Make sure it is set! For details see
+<B
+CLASS="COMMAND"
+>man cupsd.conf</B
+> and other CUPS-related documentation.</P
+><P
+>If SAMBA is compiled against libcups, then <B
+CLASS="COMMAND"
+>printcap =
+cups</B
+> uses the CUPS API to list printers, submit jobs, etc. Otherwise it
+maps to the System V commands with an additional <TT
+CLASS="PARAMETER"
+><I
+>-oraw</I
+></TT
+>
+option for printing. You can use the <B
+CLASS="COMMAND"
+>ldd</B
+> command to
+find out details:</P
+><P
+><PRE
+CLASS="PROGRAMLISTING"
+>transmeta:/home/kurt # ldd `which smbd`
+ libssl.so.0.9.6 =&#62; /usr/lib/libssl.so.0.9.6 (0x4002d000)
+ libcrypto.so.0.9.6 =&#62; /usr/lib/libcrypto.so.0.9.6 (0x4005a000)
+ libcups.so.2 =&#62; /usr/lib/libcups.so.2 (0x40123000)
+ libdl.so.2 =&#62; /lib/libdl.so.2 (0x401e8000)
+ libnsl.so.1 =&#62; /lib/libnsl.so.1 (0x401ec000)
+ libpam.so.0 =&#62; /lib/libpam.so.0 (0x40202000)
+ libc.so.6 =&#62; /lib/libc.so.6 (0x4020b000)
+ /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)</PRE
+></P
+><P
+>The line "libcups.so.2 =&gt; /usr/lib/libcups.so.2
+(0x40123000)" shows there is CUPS support compiled into this version of
+Samba. If this is the case, and <B
+CLASS="COMMAND"
+>printing = cups</B
+> is set, then any
+otherwise manually set print command in smb.conf is ignored.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN26"
+>Using CUPS as a mere spooling print server -- "raw"
+printing with vendor drivers download</A
+></H1
+><P
+>You can setup Samba and your Windows clients to use the
+CUPS print subsystem just as you would with any of the more traditional print
+subsystems: that means the use of vendor provided, native Windows printer
+drivers for each target printer. If you setup the [print$] share to
+download these drivers to the clients, their GDI system (Graphical Device
+Interface) will output the Wndows EMF (Enhanced MetaFile) and
+convert it -- with the help of the printer driver -- locally into the format
+the printer is expecting. Samba and the CUPS print subsystem will have to
+treat these files as raw print files -- they are already in the
+shape to be digestable for the printer. This is the same traditional setup
+for Unix print servers handling Windows client jobs. It does not take much
+CPU power to handle this kind of task efficiently.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN29"
+>CUPS as a network PostScript RIP -- CUPS drivers working on server, Adobe
+PostScript driver with CUPS-PPDs downloaded to clients</A
+></H1
+><P
+>CUPS is perfectly able to use PPD files (PostScript
+Printer Descriptions). PPDs can control all print device options. They
+are usually provided by the manufacturer -- if you own a PostSript printer,
+that is. PPD files are always a component of PostScript printer drivers on MS
+Windows or Apple Mac OS systems. They are ASCII files containing
+user-selectable print options, mapped to appropriate PostScript, PCL or PJL
+commands for the target printer. Printer driver GUI dialogs translate these
+options "on-the-fly" into buttons and drop-down lists for the user to
+select.</P
+><P
+>CUPS can load, without any conversions, the PPD file from
+any Windows (NT is recommended) PostScript driver and handle the options.
+There is a web browser interface to the print options (select
+http://localhost:631/printers/ and click on one "Configure Printer" button
+to see it), a commandline interface (see <B
+CLASS="COMMAND"
+>man lpoptions</B
+> or
+try if you have <B
+CLASS="COMMAND"
+>lphelp</B
+> on your system) plus some different GUI frontends on Linux
+UNIX, which can present PPD options to the users. PPD optons are normally
+meant to become evaluated by the PostScript RIP on the real PostScript
+printer.</P
+><P
+>CUPS doesn't stop at "real" PostScript printers in its
+usage of PPDs. The CUPS developers have extended the PPD concept, to also
+describe available device and driver options for non-PostScript printers
+through CUPS-PPDs.</P
+><P
+>This is logical, as CUPS includes a fully featured
+PostScript interpreter (RIP). This RIP is based on Ghostscript. It can
+process all received PostScript (and additionally many other file formats)
+from clients. All CUPS-PPDs geared to non-PostScript printers contain an
+additional line, starting with the keyword <TT
+CLASS="PARAMETER"
+><I
+>*cupsFilter</I
+></TT
+>
+this line
+tells the CUPS print system which printer-specific filter to use for the
+interpretation of the accompanying PostScript. Thus CUPS lets all its
+printers appear as PostScript devices to its clients, because it can act as a
+PostScript RIP for those printers, processing the received PostScript code
+into a proper raster print format.</P
+><P
+>CUPS-PPDs can also be used on Windows-Clients, on top of a
+PostScript driver (recommended is the Adobe one).</P
+><P
+>This feature enables CUPS to do a few tricks no other
+spooler can do:</P
+><P
+></P
+><UL
+><LI
+><P
+>act as a networked PostScript RIP (Raster Image Processor), handling
+ printfiles from all client platforms in a uniform way;</P
+></LI
+><LI
+><P
+>act as a central accounting and billing server, as all files are passed
+ through the <B
+CLASS="COMMAND"
+>pstops</B
+> Filter and are therefor logged in
+ the CUPS <TT
+CLASS="FILENAME"
+>page&lowbar;log </TT
+> <I
+CLASS="EMPHASIS"
+>NOTE: </I
+>this
+ can not happen with "raw" print jobs, which always remain unfiltered
+ per definition;</P
+></LI
+><LI
+><P
+>enable clients to consolidate on a single PostScript driver, even for
+ many different target printers.</P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN50"
+>Windows Terminal Servers (WTS) as CUPS clients</A
+></H1
+><P
+>This setup may be of special interest to people
+experiencing major problems in WTS environments. WTS need often a multitude
+of non-PostScript drivers installed to run their clients' multitude of
+different printer models. This often imposes the price of much increased
+instability. In many cases, in an attempt to overcome this problem, site
+administrators have resorted to restrict the allowed drivers installed on
+their WTS to one generic PCL- and one PostScript driver. This however
+restricts the clients in the amount of printer options available for them --
+often they can't get out more then simplex prints from one standard paper
+tray, while their devices could do much better, if driven by a different
+driver!</P
+><P
+>Using an Adobe PostScript driver, enabled with a CUPS-PPD,
+seems to be a very elegant way to overcome all these shortcomings. The
+PostScript driver is not known to cause major stability problems on WTS (even
+if used with many different PPDs). The clients will be able to (again) chose
+paper trays, duplex printing and other settings. However, there is a certain
+price for this too: a CUPS server acting as a PostScript RIP for its clients
+requires more CPU and RAM than just to act as a "raw spooling" device. Plus,
+this setup is not yet widely tested, although the first feedbacks look very
+promising...</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN54"
+>Setting up CUPS for driver download</A
+></H1
+><P
+>The <B
+CLASS="COMMAND"
+>cupsadsmb</B
+> utility (shipped with all current
+CUPS versions) makes the sharing of any (or all) installed CUPS printers very
+easy. Prior to using it, you need the following settings in smb.conf:</P
+><P
+><PRE
+CLASS="PROGRAMLISTING"
+>[global]
+ load printers = yes
+ printing = cups
+ printcap name = cups
+
+[printers]
+ comment = All Printers
+ path = /var/spool/samba
+ browseable = no
+ public = yes
+ guest ok = yes
+ writable = no
+ printable = yes
+ printer admin = root
+
+[print$]
+ comment = Printer Drivers
+ path = /etc/samba/drivers
+ browseable = yes
+ guest ok = no
+ read only = yes
+ write list = root</PRE
+></P
+><P
+>For licensing reasons the necessary files of the Adobe
+Postscript driver can not be distributed with either Samba or CUPS. You need
+to download them yourself from the Adobe website. Once extracted, create a
+<TT
+CLASS="FILENAME"
+>drivers</TT
+> directory in the CUPS data directory (usually
+<TT
+CLASS="FILENAME"
+>/usr/share/cups/</TT
+>). Copy the Adobe files using
+UPPERCASE filenames, to this directory as follows:</P
+><P
+><PRE
+CLASS="PROGRAMLISTING"
+> ADFONTS.MFM
+ ADOBEPS4.DRV
+ ADOBEPS4.HLP
+ ADOBEPS5.DLL
+ ADOBEPSU.DLL
+ ADOBEPSU.HLP
+ DEFPRTR2.PPD
+ ICONLIB.DLL</PRE
+></P
+><P
+>Users of the ESP Print Pro software are able to isntall
+their "Samba Drivers" package for this purpose with no problem.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H1
+CLASS="SECT1"
+><A
+NAME="AEN66"
+>Sources of CUPS drivers / PPDs</A
+></H1
+><P
+>On the internet you can find now many thousand CUPS-PPD
+files (with their companion filters), in many national languages,
+supporting more than 1.000 non-PostScript models.</P
+><P
+></P
+><UL
+><LI
+><P
+><A
+HREF="http://wwwl.easysw.com/printpro/"
+TARGET="_top"
+>ESP PrintPro
+ (http://wwwl.easysw.com/printpro/)</A
+>
+ (commercial, non-Free) is packaged with more than 3.000 PPDs, ready for
+ successful usage "out of the box" on Linux, IBM-AIX, HP-UX, Sun-Solaris,
+ SGI-IRIX, Compaq Tru64, Digital Unix and some more commercial Unices (it
+ is written by the CUPS developers themselves and its sales help finance
+ the further development of CUPS, as they feed their creators)</P
+></LI
+><LI
+><P
+>the <A
+HREF="http://gimp-print.sourceforge.net/"
+TARGET="_top"
+>Gimp-Print-Project
+ (http://gimp-print.sourceforge.net/)</A
+>
+ (GPL, Free Software) provides around 120 PPDs (supporting nearly 300
+ printers, many driven to photo quality output), to be used alongside the
+ Gimp-Print CUPS filters;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www.turboprint.com/"
+TARGET="_top"
+>TurboPrint
+ (http://www.turboprint.com/)</A
+>
+ (Shareware, non-Freee) supports roughly the same amount of printers in
+ excellent quality;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/"
+TARGET="_top"
+>OMNI
+ (http://www-124.ibm.com/developerworks/oss/linux/projects/omni/)</A
+>
+ (LPGL, Free) is a package made by IBM, now containing support for more
+ than 400 printers, stemming from the inheritance of IBM OS/2 KnowHow
+ ported over to Linux (CUPS support is in a Beta-stage at present);</P
+></LI
+><LI
+><P
+><A
+HREF="http://hpinkjet.sourceforge.net/"
+TARGET="_top"
+>HPIJS
+ (http://hpinkjet.sourceforge.net/)</A
+>
+ (BSD-style licnes, Free) supports around 120 of HP's own printers and is
+ also providing excellent print quality now;</P
+></LI
+><LI
+><P
+><A
+HREF="http://www.linuxprinting.org/"
+TARGET="_top"
+>Foomatic/cupsomatic (http://www.linuxprinting.org/)</A
+>
+ (LPGL, Free) from Linuxprinting.org are providing PPDs for practically every
+ Ghostscript filter known to the world, now usable with CUPS.</P
+></LI
+></UL
+><P
+><I
+CLASS="EMPHASIS"
+>NOTE: </I
+>the cupsomatic trick from Linuxprinting.org is
+working different from the other drivers. While the other drivers take the
+generic CUPS raster (produced by CUPS' own pstoraster PostScript RIP) as
+their input, cupsomatic "kidmaps" the PostScript inside CUPS, before
+RIP-ping, deviates it to an external Ghostscript installation (which now
+becomes the RIP) and gives it back to a CUPS backend once Ghostscript is
+finished.</P
+><P
+>Once you installed a printer inside CUPS with one of the
+recommended methods (the lpadmin command, the web browser interface or one of
+the available GUI wizards), you can use <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> to share the
+printer via Samba. <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> prepares the driver files for
+comfortable client download and installation upon their first contact with
+this printer share.</P
+><DIV
+CLASS="SECT2"
+><HR><H2
+CLASS="SECT2"
+><A
+NAME="AEN93"
+><B
+CLASS="COMMAND"
+>cupsaddsmb</B
+></A
+></H2
+><P
+>The <B
+CLASS="COMMAND"
+>cupsaddsmb</B
+> command copies the needed files
+for convenient Windows client installations from the previously prepared CUPS
+data directory to your [print$] share. Additionally, the PPD
+associated with this printer is copied from <TT
+CLASS="FILENAME"
+>/etc/cups/ppd/</TT
+> to
+[print$].</P
+><P
+><PRE
+CLASS="PROGRAMLISTING"
+><TT
+CLASS="PROMPT"
+>root# </TT
+> <B
+CLASS="COMMAND"
+>cupsaddsmb -U root infotec_IS2027</B
+>
+Password for root required to access localhost via SAMBA: <TT
+CLASS="USERINPUT"
+><B
+>[type in password 'secret']</B
+></TT
+></PRE
+></P
+><P
+>To share all printers and drivers, use the <TT
+CLASS="PARAMETER"
+><I
+>-a</I
+></TT
+>
+parameter instead of a printer name.</P
+><P
+>Probably you want to see what's going on. Use the
+<TT
+CLASS="PARAMETER"
+><I
+>-v</I
+></TT
+> parameter to get a more verbose output:</P
+><P
+><PRE
+CLASS="PROGRAMLISTING"
+><TT
+CLASS="PROMPT"
+>root# </TT
+> cupsaddsmb -v -U root infotec_IS2027
+ Password for root required to access localhost via SAMBA:
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir W32X86;put /var/spool/cups/tmp/3cd1cc66376c0 W32X86/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADOBEPS5.DLL W32X86/ADOBEPS5.DLL;put /usr/share/cups/drivers/ADOBEPSU.DLL W32X86/ADOBEPSU.DLL;put /usr/share/cups/drivers/ADOBEPSU.HLP W32X86/ADOBEPSU.HLP'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \W32X86
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \W32X86/infotec_IS2027.PPD (17394.6 kb/s) (average 17395.2 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS5.DLL as \W32X86/ADOBEPS5.DLL (10877.4 kb/s) (average 11343.0 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.DLL as \W32X86/ADOBEPSU.DLL (5095.2 kb/s) (average 9260.4 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPSU.HLP as \W32X86/ADOBEPSU.HLP (8828.7 kb/s) (average 9247.1 kb/s)
+
+ Running command: smbclient //localhost/print\$ -N -U'root%secret' -c 'mkdir WIN40;put /var/spool/cups/tmp/3cd1cc66376c0 WIN40/infotec_IS2027.PPD;put /usr/share/cups/drivers/ADFONTS.MFM WIN40/ADFONTS.MFM;put /usr/share/cups/drivers/ADOBEPS4.DRV WIN40/ADOBEPS4.DRV;put /usr/share/cups/drivers/ADOBEPS4.HLP WIN40/ADOBEPS4.HLP;put /usr/share/cups/drivers/DEFPRTR2.PPD WIN40/DEFPRTR2.PPD;put /usr/share/cups/drivers/ICONLIB.DLL WIN40/ICONLIB.DLL;put /usr/share/cups/drivers/PSMON.DLL WIN40/PSMON.DLL;'
+ added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
+ added interface ip=192.168.182.1 bcast=192.168.182.255 nmask=255.255.255.0
+ added interface ip=172.16.200.1 bcast=172.16.200.255 nmask=255.255.255.0
+ Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.3a.200204262025cvs]
+ NT_STATUS_OBJECT_NAME_COLLISION making remote directory \WIN40
+ putting file /var/spool/cups/tmp/3cd1cc66376c0 as \WIN40/infotec_IS2027.PPD (26091.5 kb/s) (average 26092.8 kb/s)
+ putting file /usr/share/cups/drivers/ADFONTS.MFM as \WIN40/ADFONTS.MFM (11241.6 kb/s) (average 11812.9 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.DRV as \WIN40/ADOBEPS4.DRV (16640.6 kb/s) (average 14679.3 kb/s)
+ putting file /usr/share/cups/drivers/ADOBEPS4.HLP as \WIN40/ADOBEPS4.HLP (11285.6 kb/s) (average 14281.5 kb/s)
+ putting file /usr/share/cups/drivers/DEFPRTR2.PPD as \WIN40/DEFPRTR2.PPD (823.5 kb/s) (average 12944.0 kb/s)
+ putting file /usr/share/cups/drivers/ICONLIB.DLL as \WIN40/ICONLIB.DLL (19226.2 kb/s) (average 13169.7 kb/s)
+ putting file /usr/share/cups/drivers/PSMON.DLL as \WIN40/PSMON.DLL (18666.1 kb/s) (average 13266.7 kb/s)
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"'
+ cmd = adddriver "Windows NT x86" "infotec_IS2027:ADOBEPS5.DLL:infotec_IS2027.PPD:ADOBEPSU.DLL:ADOBEPSU.HLP:NULL:RAW:NULL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"'
+ cmd = adddriver "Windows 4.0" "infotec_IS2027:ADOBEPS4.DRV:infotec_IS2027.PPD:NULL:ADOBEPS4.HLP:PSMON.DLL:RAW:ADFONTS.MFM,DEFPRTR2.PPD,ICONLIB.DLL"
+ Printer Driver infotec_IS2027 successfully installed.
+
+ Running command: rpcclient localhost -N -U'root%secret' -c 'setdriver infotec_IS2027 infotec_IS2027'
+ cmd = setdriver infotec_IS2027 infotec_IS2027
+ Succesfully set infotec_IS2027 to driver infotec_IS2027.
+
+ <TT
+CLASS="PROMPT"
+>root# </TT
+></PRE
+></P
+><P
+>If you look closely, you'll discover your root password
+was transfered unencrypted over the wire, so beware! Also, if you look
+further her, you'll discover error messages like
+<TT
+CLASS="CONSTANT"
+>NT_STATUS_OBJECT_NAME_COLLISION</TT
+> in between. They occur, because
+the directories <TT
+CLASS="FILENAME"
+>WIN40</TT
+> and <TT
+CLASS="FILENAME"
+>W32X86</TT
+> already
+existed in the [print$] driver download share (from a previous driver
+installation). They are harmless here.</P
+><P
+>Now your printer is prepared for the clients to use. From
+a client, browse to the CUPS/Samba server, open the "Printers"
+share, right-click on this printer and select "Install..." or
+"Connect..." (depending on the Windows version you use). Now their
+should be a new printer in your client's local "Printers" folder,
+named (in my case) "infotec_IS2027 on kdebitshop"</P
+></DIV
+></DIV
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/docs/htmldocs/nmblookup.1.html b/docs/htmldocs/nmblookup.1.html
index c87d7d35db9..22cc35526cc 100644
--- a/docs/htmldocs/nmblookup.1.html
+++ b/docs/htmldocs/nmblookup.1.html
@@ -37,12 +37,12 @@ NAME="AEN8"
><B
CLASS="COMMAND"
>nmblookup</B
-> [-M] [-R] [-S] [-r] [-A] [-h] [-B &#60;broadcast address&#62;] [-U &#60;unicast address&#62;] [-d &#60;debug level&#62;] [-s &#60;smb config file&#62;] [-i &#60;NetBIOS scope&#62;] [-T] {name}</P
+> [-f] [-M] [-R] [-S] [-r] [-A] [-h] [-B &#60;broadcast address&#62;] [-U &#60;unicast address&#62;] [-d &#60;debug level&#62;] [-s &#60;smb config file&#62;] [-i &#60;NetBIOS scope&#62;] [-T] {name}</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN24"
+NAME="AEN25"
></A
><H2
>DESCRIPTION</H2
@@ -65,7 +65,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN30"
+NAME="AEN31"
></A
><H2
>OPTIONS</H2
@@ -75,6 +75,15 @@ NAME="AEN30"
CLASS="VARIABLELIST"
><DL
><DT
+>-f</DT
+><DD
+><P
+>Causes nmblookup to print out the flags
+ in the NMB packet headers. These flags will print out as
+ strings like Authoritative, Recursion_Desired, Recursion_available, etc.
+ </P
+></DD
+><DT
>-M</DT
><DD
><P
@@ -293,7 +302,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN110"
+NAME="AEN115"
></A
><H2
>EXAMPLES</H2
@@ -330,7 +339,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN122"
+NAME="AEN127"
></A
><H2
>VERSION</H2
@@ -341,7 +350,7 @@ NAME="AEN122"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN125"
+NAME="AEN130"
></A
><H2
>SEE ALSO</H2
@@ -368,7 +377,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN132"
+NAME="AEN137"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/smb.conf.5.html b/docs/htmldocs/smb.conf.5.html
index 5663fa89446..2d7358330f4 100644
--- a/docs/htmldocs/smb.conf.5.html
+++ b/docs/htmldocs/smb.conf.5.html
@@ -590,6 +590,9 @@ CLASS="VARIABLELIST"
>the NetBIOS name of the server. This allows you
to change your config based on what the client calls you. Your
server can have a "dual personality".</P
+><P
+>Note that this paramater is not available when Samba listens
+ on port 445, as clients no longer send this information </P
></DD
><DT
>%M</DT
@@ -686,7 +689,7 @@ CLASS="REPLACEABLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN202"
+NAME="AEN203"
></A
><H2
>NAME MANGLING</H2
@@ -709,6 +712,23 @@ NAME="AEN202"
CLASS="VARIABLELIST"
><DL
><DT
+>mangling method</DT
+><DD
+><P
+> controls the algorithm used for the generating
+ the mangled names. Can take two different values, "hash" and
+ "hash2". "hash" is the default and is the algorithm that has been
+ used in Samba for many years. "hash2" is a newer and considered
+ a better algorithm (generates less collisions) in the names.
+ However, many Win32 applications store the
+ mangled names and so changing to the new algorithm must not be done
+ lightly as these applications may break unless reinstalled.
+ New installations of Samba may set the default to hash2.
+ Default <EM
+>hash</EM
+>.</P
+></DD
+><DT
>mangle case = yes/no</DT
><DD
><P
@@ -771,7 +791,7 @@ CLASS="VARIABLELIST"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN235"
+NAME="AEN241"
></A
><H2
>NOTE ABOUT USERNAME/PASSWORD VALIDATION</H2
@@ -849,7 +869,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN254"
+NAME="AEN260"
></A
><H2
>COMPLETE LIST OF GLOBAL PARAMETERS</H2
@@ -1726,6 +1746,18 @@ CLASS="PARAMETER"
><LI
><P
><A
+HREF="#MANGLINGMETHOD"
+><TT
+CLASS="PARAMETER"
+><I
+>mangling method</I
+></TT
+></A
+></P
+></LI
+><LI
+><P
+><A
HREF="#MAPTOGUEST"
><TT
CLASS="PARAMETER"
@@ -3036,7 +3068,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN982"
+NAME="AEN992"
></A
><H2
>COMPLETE LIST OF SERVICE PARAMETERS</H2
@@ -3469,6 +3501,18 @@ CLASS="PARAMETER"
><LI
><P
><A
+HREF="#FORCEUNKNOWNACLUSER"
+><TT
+CLASS="PARAMETER"
+><I
+>force unknown acl user</I
+></TT
+></A
+></P
+></LI
+><LI
+><P
+><A
HREF="#FORCEUSER"
><TT
CLASS="PARAMETER"
@@ -4515,7 +4559,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN1474"
+NAME="AEN1488"
></A
><H2
>EXPLANATION OF EACH PARAMETER</H2
@@ -5107,7 +5151,7 @@ NAME="ANNOUNCEVERSION"
><P
>This specifies the major and minor version numbers
that nmbd will use when announcing itself as a server. The default
- is 4.2. Do not change this parameter unless you have a specific
+ is 4.5. Do not change this parameter unless you have a specific
need to set a Samba server to be a downlevel server.</P
><P
>Default: <B
@@ -5480,7 +5524,7 @@ NAME="CASESENSITIVE"
><DD
><P
>See the discussion in the section <A
-HREF="#AEN202"
+HREF="#AEN203"
>NAME MANGLING</A
>.</P
><P
@@ -6609,7 +6653,7 @@ NAME="DEFAULTCASE"
><DD
><P
>See the section on <A
-HREF="#AEN202"
+HREF="#AEN203"
> NAME MANGLING</A
>. Also note the <A
HREF="#SHORTPRESERVECASE"
@@ -8563,6 +8607,49 @@ CLASS="COMMAND"
></DD
><DT
><A
+NAME="FORCEUNKNOWNACLUSER"
+></A
+>force unknown acl user (S)</DT
+><DD
+><P
+>If this parameter is set, a Windows NT ACL that contains
+ an unknown SID (security descriptor, or representation of a user or group id)
+ as the owner or group owner of the file will be silently mapped into the
+ current UNIX uid or gid of the currently connected user.</P
+><P
+>This is designed to allow Windows NT clients to copy files and
+ folders containing ACLs that were created locally on the client machine
+ and contain users local to that machine only (no domain users) to be
+ copied to a Samba server (usually with XCOPY /O) and have the unknown
+ userid and groupid of the file owner map to the current connected user.
+ This can only be fixed correctly when winbindd allows arbitrary mapping
+ from any Windows NT SID to a UNIX uid or gid.</P
+><P
+>Try using this parameter when XCOPY /O gives an ACCESS_DENIED error.
+ </P
+><P
+>See also <A
+HREF="#FORCEGROUP"
+><TT
+CLASS="PARAMETER"
+><I
+>force group
+ </I
+></TT
+></A
+></P
+><P
+>Default: <EM
+>False</EM
+></P
+><P
+>Example: <B
+CLASS="COMMAND"
+>force unknown acl user = yes</B
+></P
+></DD
+><DT
+><A
NAME="FORCEUSER"
></A
>force user (S)</DT
@@ -9881,7 +9968,12 @@ HREF="#LDAPSSL"
><P
>Default : <B
CLASS="COMMAND"
->ldap port = 636</B
+>ldap port = 636 ; if ldap ssl = on</B
+></P
+><P
+>Default : <B
+CLASS="COMMAND"
+>ldap port = 389 ; if ldap ssl = off</B
></P
></DD
><DT
@@ -11304,7 +11396,7 @@ NAME="MANGLECASE"
><DD
><P
>See the section on <A
-HREF="#AEN202"
+HREF="#AEN203"
> NAME MANGLING</A
></P
><P
@@ -11376,11 +11468,11 @@ NAME="MANGLEDNAMES"
or whether non-DOS names should simply be ignored.</P
><P
>See the section on <A
-HREF="#AEN202"
+HREF="#AEN203"
> NAME MANGLING</A
> for details on how to control the mangling process.</P
><P
->If mangling is used then the mangling algorithm is as follows:</P
+>If mangling algorithm "hash" is used then the mangling algorithm is as follows:</P
><P
></P
><UL
@@ -11438,6 +11530,60 @@ CLASS="PARAMETER"
in a directory share the same first five alphanumeric characters.
The probability of such a clash is 1/1300.</P
><P
+>If mangling algorithm "hash2" is used then the mangling algorithm is as follows:</P
+><P
+></P
+><UL
+><LI
+><P
+>The first alphanumeric character
+ before the rightmost dot of the filename is preserved, forced
+ to upper case, and appears as the first character of the mangled name.
+ </P
+></LI
+><LI
+><P
+>A base63 hash of 5 characters is generated and the
+ first 4 characters of that hash are appended to the first character.
+ </P
+></LI
+><LI
+><P
+>A tilde "~" is appended to the first part of the mangled
+ name, followed by the final character of the base36 hash of the name.
+ </P
+><P
+>Note that the character to use may be specified using
+ the <A
+HREF="#MANGLINGCHAR"
+><TT
+CLASS="PARAMETER"
+><I
+>mangling char</I
+></TT
+>
+ </A
+> option, if you don't like '~'.</P
+></LI
+><LI
+><P
+>The first three alphanumeric characters of the final
+ extension are preserved, forced to upper case and appear as the
+ extension of the mangled name. The final extension is defined as that
+ part of the original filename after the rightmost dot. If there are no
+ dots in the filename, the mangled name will have no extension (except
+ in the case of "hidden files" - see below).</P
+></LI
+><LI
+><P
+>Files whose UNIX name begins with a dot will be
+ presented as DOS hidden files. The mangled name will be created as
+ for other filenames, but with the leading dot removed and "___" as
+ its extension regardless of actual original extension (that's three
+ underscores).</P
+></LI
+></UL
+><P
>The name mangling (if enabled) allows a file to be
copied between UNIX directories from Windows/DOS while retaining
the long UNIX filename. UNIX files can be renamed to a new extension
@@ -11497,7 +11643,7 @@ NAME="MANGLINGCHAR"
the <EM
>magic</EM
> character in <A
-HREF="#AEN202"
+HREF="#AEN203"
>name mangling</A
>. The default is a '~'
but this may interfere with some software. Use this option to set
@@ -11515,6 +11661,33 @@ CLASS="COMMAND"
></DD
><DT
><A
+NAME="MANGLINGMETHOD"
+></A
+>mangling mathod(G)</DT
+><DD
+><P
+> controls the algorithm used for the generating
+ the mangled names. Can take two different values, "hash" and
+ "hash2". "hash" is the default and is the algorithm that has been
+ used in Samba for many years. "hash2" is a newer and considered
+ a better algorithm (generates less collisions) in the names.
+ However, many Win32 applications store the mangled names and so
+ changing to the new algorithm must not be done
+ lightly as these applications may break unless reinstalled.
+ New installations of Samba may set the default to hash2.</P
+><P
+>Default: <B
+CLASS="COMMAND"
+>mangling method = hash</B
+></P
+><P
+>Example: <B
+CLASS="COMMAND"
+>mangling method = hash2</B
+></P
+></DD
+><DT
+><A
NAME="MAPARCHIVE"
></A
>map archive (S)</DT
@@ -14227,7 +14400,7 @@ CLASS="COMMAND"
></P
><P
>See the section on <A
-HREF="#AEN202"
+HREF="#AEN203"
>NAME
MANGLING</A
> for a fuller discussion.</P
@@ -15869,7 +16042,7 @@ CLASS="PARAMETER"
be used in granting access.</P
><P
>See also the section <A
-HREF="#AEN235"
+HREF="#AEN241"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -15950,7 +16123,7 @@ CLASS="PARAMETER"
> parameter for details on doing this.</P
><P
>See also the section <A
-HREF="#AEN235"
+HREF="#AEN241"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -16026,7 +16199,7 @@ CLASS="PARAMETER"
> parameter for details on doing this.</P
><P
>See also the section <A
-HREF="#AEN235"
+HREF="#AEN241"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -16141,7 +16314,7 @@ CLASS="COMMAND"
Domain Controller. This issue will be addressed in a future release.</P
><P
>See also the section <A
-HREF="#AEN235"
+HREF="#AEN241"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -16405,7 +16578,7 @@ CLASS="COMMAND"
names are lowered. </P
><P
>See the section on <A
-HREF="#AEN202"
+HREF="#AEN203"
> NAME MANGLING</A
>.</P
><P
@@ -17497,9 +17670,11 @@ NAME="STRIPDOT"
>strip dot (G)</DT
><DD
><P
->This is a boolean that controls whether to
- strip trailing dots off UNIX filenames. This helps with some
- CDROMs that have filenames ending in a single dot.</P
+>This parameter is now unused in Samba (2.2.5 and above).
+ It used strip trailing dots off UNIX filenames but was not correctly implmented.
+ In Samba 2.2.5 and above UNIX filenames ending in a dot are invalid Windows long
+ filenames (as they are in Windows NT and above) and are mangled to 8.3 before
+ being returned to a client.</P
><P
>Default: <B
CLASS="COMMAND"
@@ -18114,7 +18289,7 @@ CLASS="PARAMETER"
search.</P
><P
>See the section <A
-HREF="#AEN235"
+HREF="#AEN241"
>NOTE ABOUT
USERNAME/PASSWORD VALIDATION</A
> for more information on how
@@ -19019,24 +19194,32 @@ CLASS="COMMAND"
></P
></DD
><DT
-><A
+>winbind use default domain, <A
NAME="WINBINDUSEDEFAULTDOMAIN"
></A
->winbind use default domain (G)</DT
+>winbind use default domain</DT
><DD
><P
->This option controls whether or not smbd
- should lookup 'username' as 'DOMAIN\username' when winbindd is
- running on a system. This is most useful when used in conjunction
- with pam_winbind.so to prevent a Windows user from having to enter
- commands like "ssh 'DOMAIN\username@hostname'". This option is disabled
- by default, thus requiring that the DOMAIN\username format be used.</P
+>This parameter specifies whether the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+> winbindd(8)</A
+>
+ daemon should operate on users without domain component in their username.
+ Users without a domain component are treated as is part of the winbindd server's
+ own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
+ function in a way much closer to the way they would in a native unix system.</P
><P
>Default: <B
CLASS="COMMAND"
->winbind use default domain = no</B
->
- </P
+>winbind use default domain = &#60;falseg&#62;
+ </B
+></P
+><P
+>Example: <B
+CLASS="COMMAND"
+>winbind use default domain = true</B
+></P
></DD
><DT
><A
@@ -19407,7 +19590,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6134"
+NAME="AEN6192"
></A
><H2
>WARNINGS</H2
@@ -19437,7 +19620,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6140"
+NAME="AEN6198"
></A
><H2
>VERSION</H2
@@ -19448,7 +19631,7 @@ NAME="AEN6140"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6143"
+NAME="AEN6201"
></A
><H2
>SEE ALSO</H2
@@ -19527,7 +19710,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6163"
+NAME="AEN6221"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/smbcontrol.1.html b/docs/htmldocs/smbcontrol.1.html
index 5dc9854a848..8e0f326125f 100644
--- a/docs/htmldocs/smbcontrol.1.html
+++ b/docs/htmldocs/smbcontrol.1.html
@@ -36,17 +36,17 @@ NAME="AEN8"
><B
CLASS="COMMAND"
>smbcontrol</B
-> [-i]</P
+> [-d &#60;debug level&#62;] [-s &#60;smb config file&#62;] {-i}</P
><P
><B
CLASS="COMMAND"
>smbcontrol</B
-> [destination] [message-type] [parameter]</P
+> [-d &#60;debug level&#62;] [-s &#60;smb config file&#62;] {destination} {message-type} [parameter]</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN17"
+NAME="AEN21"
></A
><H2
>DESCRIPTION</H2
@@ -81,7 +81,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN26"
+NAME="AEN30"
></A
><H2
>OPTIONS</H2
@@ -91,6 +91,24 @@ NAME="AEN26"
CLASS="VARIABLELIST"
><DL
><DT
+>-d &#60;debuglevel&#62;</DT
+><DD
+><P
+>debuglevel is an integer from 0 to 10.</P
+></DD
+><DT
+>-s &#60;smb.conf&#62;</DT
+><DD
+><P
+>This parameter specifies the pathname to
+ the Samba configuration file, <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+> smb.conf(5)</A
+>. This file controls all aspects of
+ the Samba setup on the machine.</P
+></DD
+><DT
>-i</DT
><DD
><P
@@ -268,7 +286,7 @@ CLASS="CONSTANT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN81"
+NAME="AEN94"
></A
><H2
>VERSION</H2
@@ -279,7 +297,7 @@ NAME="AEN81"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN84"
+NAME="AEN97"
></A
><H2
>SEE ALSO</H2
@@ -305,7 +323,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN91"
+NAME="AEN104"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/smbpasswd.5.html b/docs/htmldocs/smbpasswd.5.html
index 1f862b66114..229350542e6 100644
--- a/docs/htmldocs/smbpasswd.5.html
+++ b/docs/htmldocs/smbpasswd.5.html
@@ -72,7 +72,7 @@ CLASS="FILENAME"
>passwd(5)</TT
>
file. It is an ASCII file containing one line for each user. Each field
- ithin each line is separated from the next by a colon. Any entry
+ within each line is separated from the next by a colon. Any entry
beginning with '#' is ignored. The smbpasswd file contains the
following information for each user: </P
><P
diff --git a/docs/htmldocs/smbpasswd.8.html b/docs/htmldocs/smbpasswd.8.html
index 6bff986f751..90f9ca076c5 100644
--- a/docs/htmldocs/smbpasswd.8.html
+++ b/docs/htmldocs/smbpasswd.8.html
@@ -156,22 +156,6 @@ CLASS="COMMAND"
>. </P
></DD
><DT
->-s</DT
-><DD
-><P
->This option causes smbpasswd to be silent (i.e.
- not issue prompts) and to read its old and new passwords from
- standard input, rather than from <TT
-CLASS="FILENAME"
->/dev/tty</TT
->
- (like the <B
-CLASS="COMMAND"
->passwd(1)</B
-> program does). This option
- is to aid people writing scripts to drive smbpasswd</P
-></DD
-><DT
>-c smb.conf file</DT
><DD
><P
@@ -249,6 +233,59 @@ CLASS="PARAMETER"
specifying a Win95/98 machine as remote machine target. </P
></DD
><DT
+>-s</DT
+><DD
+><P
+>This option causes smbpasswd to be silent (i.e.
+ not issue prompts) and to read its old and new passwords from
+ standard input, rather than from <TT
+CLASS="FILENAME"
+>/dev/tty</TT
+>
+ (like the <B
+CLASS="COMMAND"
+>passwd(1)</B
+> program does). This option
+ is to aid people writing scripts to drive smbpasswd</P
+></DD
+><DT
+>-S</DT
+><DD
+><P
+>This option causes <B
+CLASS="COMMAND"
+>smbpasswd</B
+>
+ to query a domain controller of the domain specified
+ by the <A
+HREF="smb.conf.5.html#WORKGROUP"
+TARGET="_top"
+>workgroup</A
+>
+ parameter in <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> and store the
+ domain SID in the <TT
+CLASS="FILENAME"
+>secrets.tdb</TT
+> file
+ as its own machine SID. This is only useful when configuring
+ a Samba PDC and Samba BDC, or when migrating from a Windows PDC
+ to a Samba PDC. </P
+><P
+>The <TT
+CLASS="PARAMETER"
+><I
+>-r</I
+></TT
+> options can be used
+ as well to indicate a specific domain controller which should
+ be contacted. In this case, the domain SID obtained is the
+ one for the domain to which the remote machine belongs.
+ </P
+></DD
+><DT
>-U username[%pass]</DT
><DD
><P
@@ -422,7 +459,7 @@ CLASS="PARAMETER"
>ldap
admin dn</I
></TT
-> ever changes, the password will beed to be
+> ever changes, the password will need to be
manually updated as well.
</P
></DD
@@ -623,7 +660,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN195"
+NAME="AEN205"
></A
><H2
>NOTES</H2
@@ -666,7 +703,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN205"
+NAME="AEN215"
></A
><H2
>VERSION</H2
@@ -677,7 +714,7 @@ NAME="AEN205"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN208"
+NAME="AEN218"
></A
><H2
>SEE ALSO</H2
@@ -700,7 +737,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN214"
+NAME="AEN224"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/winbind.html b/docs/htmldocs/winbind.html
index fb83d37a155..8a41808700b 100644
--- a/docs/htmldocs/winbind.html
+++ b/docs/htmldocs/winbind.html
@@ -410,12 +410,20 @@ for providing the HOWTO for this section.</P
>This HOWTO describes how to get winbind services up and running
to control access and authenticate users on your Linux box using
the winbind services which come with SAMBA 2.2.2.</P
+><P
+>There is also some Solaris specific information in
+<TT
+CLASS="FILENAME"
+>docs/textdocs/Solaris-Winbind-HOWTO.txt</TT
+>.
+Future revisions of this document will incorporate that
+information.</P
><DIV
CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN76"
+NAME="AEN78"
>Introduction</A
></H2
><P
@@ -468,7 +476,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN89"
+NAME="AEN91"
>Requirements</A
></H2
><P
@@ -529,7 +537,7 @@ CLASS="SECT2"
><HR><H2
CLASS="SECT2"
><A
-NAME="AEN103"
+NAME="AEN105"
>Testing Things Out</A
></H2
><P
@@ -574,7 +582,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN114"
+NAME="AEN116"
>Configure and compile SAMBA</A
></H3
><P
@@ -640,7 +648,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN133"
+NAME="AEN135"
>Configure <TT
CLASS="FILENAME"
>nsswitch.conf</TT
@@ -721,7 +729,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN158"
+NAME="AEN160"
>Configure smb.conf</A
></H3
><P
@@ -796,7 +804,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN174"
+NAME="AEN176"
>Join the SAMBA server to the PDC domain</A
></H3
><P
@@ -842,7 +850,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN185"
+NAME="AEN187"
>Start up the winbindd daemon and test it!</A
></H3
><P
@@ -965,7 +973,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN221"
+NAME="AEN223"
>Fix the <TT
CLASS="FILENAME"
>/etc/rc.d/init.d/smb</TT
@@ -1077,7 +1085,7 @@ CLASS="SECT3"
><HR><H3
CLASS="SECT3"
><A
-NAME="AEN243"
+NAME="AEN245"
>Configure Winbind and PAM</A
></H3
><P
@@ -1254,7 +1262,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN290"
+NAME="AEN292"
>Limitations</A
></H1
><P
@@ -1295,7 +1303,7 @@ CLASS="SECT1"
><HR><H1
CLASS="SECT1"
><A
-NAME="AEN300"
+NAME="AEN302"
>Conclusion</A
></H1
><P
diff --git a/docs/manpages/nmblookup.1 b/docs/manpages/nmblookup.1
index ca3074882bd..307414844a6 100644
--- a/docs/manpages/nmblookup.1
+++ b/docs/manpages/nmblookup.1
@@ -3,12 +3,12 @@
.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "NMBLOOKUP" "1" "02 May 2002" "" ""
+.TH "NMBLOOKUP" "1" "16 May 2002" "" ""
.SH NAME
nmblookup \- NetBIOS over TCP/IP client used to lookup NetBIOS names
.SH SYNOPSIS
.sp
-\fBnmblookup\fR [ \fB-M\fR ] [ \fB-R\fR ] [ \fB-S\fR ] [ \fB-r\fR ] [ \fB-A\fR ] [ \fB-h\fR ] [ \fB-B <broadcast address>\fR ] [ \fB-U <unicast address>\fR ] [ \fB-d <debug level>\fR ] [ \fB-s <smb config file>\fR ] [ \fB-i <NetBIOS scope>\fR ] [ \fB-T\fR ] \fBname\fR
+\fBnmblookup\fR [ \fB-f\fR ] [ \fB-M\fR ] [ \fB-R\fR ] [ \fB-S\fR ] [ \fB-r\fR ] [ \fB-A\fR ] [ \fB-h\fR ] [ \fB-B <broadcast address>\fR ] [ \fB-U <unicast address>\fR ] [ \fB-d <debug level>\fR ] [ \fB-s <smb config file>\fR ] [ \fB-i <NetBIOS scope>\fR ] [ \fB-T\fR ] \fBname\fR
.SH "DESCRIPTION"
.PP
This tool is part of the Sambasuite.
@@ -20,6 +20,11 @@ particular IP broadcast area or to a particular machine. All queries
are done over UDP.
.SH "OPTIONS"
.TP
+\fB-f\fR
+Causes nmblookup to print out the flags
+in the NMB packet headers. These flags will print out as
+strings like Authoritative, Recursion_Desired, Recursion_available, etc.
+.TP
\fB-M\fR
Searches for a master browser by looking
up the NetBIOS name \fIname\fR with a
diff --git a/docs/manpages/smb.conf.5 b/docs/manpages/smb.conf.5
index acd6398c877..7aff5f60814 100644
--- a/docs/manpages/smb.conf.5
+++ b/docs/manpages/smb.conf.5
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMB.CONF" "5" "02 May 2002" "" ""
+.TH "SMB.CONF" "5" "17 June 2002" "" ""
.SH NAME
smb.conf \- The configuration file for the Samba suite
.SH "SYNOPSIS"
@@ -360,6 +360,9 @@ the NetBIOS name of the client machine
the NetBIOS name of the server. This allows you
to change your config based on what the client calls you. Your
server can have a "dual personality".
+
+Note that this paramater is not available when Samba listens
+on port 445, as clients no longer send this information
.TP
\fB%M\fR
the Internet name of the client machine.
@@ -421,6 +424,18 @@ All of these options can be set separately for each service
.PP
The options are:
.TP
+\fBmangling method\fR
+controls the algorithm used for the generating
+the mangled names. Can take two different values, "hash" and
+"hash2". "hash" is the default and is the algorithm that has been
+used in Samba for many years. "hash2" is a newer and considered
+a better algorithm (generates less collisions) in the names.
+However, many Win32 applications store the
+mangled names and so changing to the new algorithm must not be done
+lightly as these applications may break unless reinstalled.
+New installations of Samba may set the default to hash2.
+Default \fBhash\fR.
+.TP
\fBmangle case = yes/no\fR
controls if names that have characters that
aren't of the "default" case are mangled. For example,
@@ -720,6 +735,9 @@ each parameter for details. Note that some are synonyms.
\fImangled stack\fR
.TP 0.2i
\(bu
+\fImangling method\fR
+.TP 0.2i
+\(bu
\fImap to guest\fR
.TP 0.2i
\(bu
@@ -1156,6 +1174,9 @@ each parameter for details. Note that some are synonyms.
\fIforce security mode\fR
.TP 0.2i
\(bu
+\fIforce unknown acl user\fR
+.TP 0.2i
+\(bu
\fIforce user\fR
.TP 0.2i
\(bu
@@ -1627,7 +1648,7 @@ Example: \fBannounce as = Win95\fR
\fBannounce version (G)\fR
This specifies the major and minor version numbers
that nmbd will use when announcing itself as a server. The default
-is 4.2. Do not change this parameter unless you have a specific
+is 4.5. Do not change this parameter unless you have a specific
need to set a Samba server to be a downlevel server.
Default: \fBannounce version = 4.5\fR
@@ -2974,6 +2995,28 @@ Default: \fBforce security mode = 0\fR
Example: \fBforce security mode = 700\fR
.TP
+\fBforce unknown acl user (S)\fR
+If this parameter is set, a Windows NT ACL that contains
+an unknown SID (security descriptor, or representation of a user or group id)
+as the owner or group owner of the file will be silently mapped into the
+current UNIX uid or gid of the currently connected user.
+
+This is designed to allow Windows NT clients to copy files and
+folders containing ACLs that were created locally on the client machine
+and contain users local to that machine only (no domain users) to be
+copied to a Samba server (usually with XCOPY /O) and have the unknown
+userid and groupid of the file owner map to the current connected user.
+This can only be fixed correctly when winbindd allows arbitrary mapping
+from any Windows NT SID to a UNIX uid or gid.
+
+Try using this parameter when XCOPY /O gives an ACCESS_DENIED error.
+
+See also \fIforce group
+\fR
+Default: \fBFalse\fR
+
+Example: \fBforce unknown acl user = yes\fR
+.TP
\fBforce user (S)\fR
This specifies a UNIX user name that will be
assigned as the default user for all users connecting to this service.
@@ -3479,7 +3522,9 @@ The default is to use the stand LDAPS port 636.
See Also: ldap ssl
-Default : \fBldap port = 636\fR
+Default : \fBldap port = 636 ; if ldap ssl = on\fR
+
+Default : \fBldap port = 389 ; if ldap ssl = off\fR
.TP
\fBldap server (G)\fR
This parameter is only available if Samba has been
@@ -4069,7 +4114,7 @@ or whether non-DOS names should simply be ignored.
See the section on NAME MANGLING for details on how to control the mangling process.
-If mangling is used then the mangling algorithm is as follows:
+If mangling algorithm "hash" is used then the mangling algorithm is as follows:
.RS
.TP 0.2i
\(bu
@@ -4115,6 +4160,43 @@ in a directory share the same first five alphanumeric characters.
The probability of such a clash is 1/1300.
.PP
.PP
+If mangling algorithm "hash2" is used then the mangling algorithm is as follows:
+.PP
+.RS
+.TP 0.2i
+\(bu
+The first alphanumeric character
+before the rightmost dot of the filename is preserved, forced
+to upper case, and appears as the first character of the mangled name.
+.TP 0.2i
+\(bu
+A base63 hash of 5 characters is generated and the
+first 4 characters of that hash are appended to the first character.
+.TP 0.2i
+\(bu
+A tilde "~" is appended to the first part of the mangled
+name, followed by the final character of the base36 hash of the name.
+
+Note that the character to use may be specified using
+the \fImangling char\fR
+option, if you don't like '~'.
+.TP 0.2i
+\(bu
+The first three alphanumeric characters of the final
+extension are preserved, forced to upper case and appear as the
+extension of the mangled name. The final extension is defined as that
+part of the original filename after the rightmost dot. If there are no
+dots in the filename, the mangled name will have no extension (except
+in the case of "hidden files" - see below).
+.TP 0.2i
+\(bu
+Files whose UNIX name begins with a dot will be
+presented as DOS hidden files. The mangled name will be created as
+for other filenames, but with the leading dot removed and "___" as
+its extension regardless of actual original extension (that's three
+underscores).
+.RE
+.PP
The name mangling (if enabled) allows a file to be
copied between UNIX directories from Windows/DOS while retaining
the long UNIX filename. UNIX files can be renamed to a new extension
@@ -4155,6 +4237,21 @@ Default: \fBmangling char = ~\fR
Example: \fBmangling char = ^\fR
.TP
+\fBmangling mathod(G)\fR
+controls the algorithm used for the generating
+the mangled names. Can take two different values, "hash" and
+"hash2". "hash" is the default and is the algorithm that has been
+used in Samba for many years. "hash2" is a newer and considered
+a better algorithm (generates less collisions) in the names.
+However, many Win32 applications store the mangled names and so
+changing to the new algorithm must not be done
+lightly as these applications may break unless reinstalled.
+New installations of Samba may set the default to hash2.
+
+Default: \fBmangling method = hash\fR
+
+Example: \fBmangling method = hash2\fR
+.TP
\fBmap archive (S)\fR
This controls whether the DOS archive attribute
should be mapped to the UNIX owner execute bit. The DOS archive bit
@@ -6614,9 +6711,11 @@ always>\fR parameter.
Default: \fBstrict sync = no\fR
.TP
\fBstrip dot (G)\fR
-This is a boolean that controls whether to
-strip trailing dots off UNIX filenames. This helps with some
-CDROMs that have filenames ending in a single dot.
+This parameter is now unused in Samba (2.2.5 and above).
+It used strip trailing dots off UNIX filenames but was not correctly implmented.
+In Samba 2.2.5 and above UNIX filenames ending in a dot are invalid Windows long
+filenames (as they are in Windows NT and above) and are mangled to 8.3 before
+being returned to a client.
Default: \fBstrip dot = no\fR
.TP
@@ -7271,15 +7370,18 @@ Default: \fBwinbind uid = <empty string>
\fR
Example: \fBwinbind uid = 10000-20000\fR
.TP
-\fBwinbind use default domain (G)\fR
-This option controls whether or not smbd
-should lookup 'username' as 'DOMAIN\\username' when winbindd is
-running on a system. This is most useful when used in conjunction
-with pam_winbind.so to prevent a Windows user from having to enter
-commands like "ssh 'DOMAIN\\username@hostname'". This option is disabled
-by default, thus requiring that the DOMAIN\\username format be used.
+\fBwinbind use default domain\fR
+.TP
+\fBwinbind use default domain\fR
+This parameter specifies whether the winbindd(8)
+daemon should operate on users without domain component in their username.
+Users without a domain component are treated as is part of the winbindd server's
+own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
+function in a way much closer to the way they would in a native unix system.
-Default: \fBwinbind use default domain = no\fR
+Default: \fBwinbind use default domain = <falseg>
+\fR
+Example: \fBwinbind use default domain = true\fR
.TP
\fBwins hook (G)\fR
When Samba is running as a WINS server this
diff --git a/docs/manpages/smbcontrol.1 b/docs/manpages/smbcontrol.1
index a1b9015c573..b0490955454 100644
--- a/docs/manpages/smbcontrol.1
+++ b/docs/manpages/smbcontrol.1
@@ -3,14 +3,14 @@
.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBCONTROL" "1" "02 May 2002" "" ""
+.TH "SMBCONTROL" "1" "29 May 2002" "" ""
.SH NAME
smbcontrol \- send messages to smbd, nmbd or winbindd processes
.SH SYNOPSIS
.sp
-\fBsmbcontrol\fR [ \fB-i\fR ]
+\fBsmbcontrol\fR [ \fB-d <debug level>\fR ] [ \fB-s <smb config file>\fR ] \fB-i\fR
.sp
-\fBsmbcontrol\fR [ \fBdestination\fR ] [ \fBmessage-type\fR ] [ \fBparameter\fR ]
+\fBsmbcontrol\fR [ \fB-d <debug level>\fR ] [ \fB-s <smb config file>\fR ] \fBdestination\fR \fBmessage-type\fR [ \fBparameter\fR ]
.SH "DESCRIPTION"
.PP
This tool is part of the Sambasuite.
@@ -22,6 +22,14 @@ or a winbindd(8)
daemon running on the system.
.SH "OPTIONS"
.TP
+\fB-d <debuglevel>\fR
+debuglevel is an integer from 0 to 10.
+.TP
+\fB-s <smb.conf>\fR
+This parameter specifies the pathname to
+the Samba configuration file, smb.conf(5). This file controls all aspects of
+the Samba setup on the machine.
+.TP
\fB-i\fR
Run interactively. Individual commands
of the form destination message-type parameters can be entered
diff --git a/docs/manpages/smbpasswd.5 b/docs/manpages/smbpasswd.5
index 60e9e76741b..782bfa37ed9 100644
--- a/docs/manpages/smbpasswd.5
+++ b/docs/manpages/smbpasswd.5
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBPASSWD" "5" "02 May 2002" "" ""
+.TH "SMBPASSWD" "5" "16 May 2002" "" ""
.SH NAME
smbpasswd \- The Samba encrypted password file
.SH SYNOPSIS
@@ -23,7 +23,7 @@ Samba and has had several different formats in the past.
The format of the smbpasswd file used by Samba 2.2
is very similar to the familiar Unix \fIpasswd(5)\fR
file. It is an ASCII file containing one line for each user. Each field
-ithin each line is separated from the next by a colon. Any entry
+within each line is separated from the next by a colon. Any entry
beginning with '#' is ignored. The smbpasswd file contains the
following information for each user:
.TP
diff --git a/docs/manpages/smbpasswd.8 b/docs/manpages/smbpasswd.8
index 84f582e9b96..b81a3fbb376 100644
--- a/docs/manpages/smbpasswd.8
+++ b/docs/manpages/smbpasswd.8
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBPASSWD" "8" "02 May 2002" "" ""
+.TH "SMBPASSWD" "8" "06 June 2002" "" ""
.SH NAME
smbpasswd \- change a user's SMB password
.SH SYNOPSIS
@@ -68,13 +68,6 @@ permissions for the user running the command.
This option prints the help string for
\fBsmbpasswd\fR.
.TP
-\fB-s\fR
-This option causes smbpasswd to be silent (i.e.
-not issue prompts) and to read its old and new passwords from
-standard input, rather than from \fI/dev/tty\fR
-(like the \fBpasswd(1)\fR program does). This option
-is to aid people writing scripts to drive smbpasswd
-.TP
\fB-c smb.conf file\fR
This option specifies that the configuration
file specified should be used instead of the default value
@@ -120,6 +113,28 @@ change).
a real password database so it is not possible to change passwords
specifying a Win95/98 machine as remote machine target.
.TP
+\fB-s\fR
+This option causes smbpasswd to be silent (i.e.
+not issue prompts) and to read its old and new passwords from
+standard input, rather than from \fI/dev/tty\fR
+(like the \fBpasswd(1)\fR program does). This option
+is to aid people writing scripts to drive smbpasswd
+.TP
+\fB-S\fR
+This option causes \fBsmbpasswd\fR
+to query a domain controller of the domain specified
+by the workgroup
+parameter in \fIsmb.conf\fR and store the
+domain SID in the \fIsecrets.tdb\fR file
+as its own machine SID. This is only useful when configuring
+a Samba PDC and Samba BDC, or when migrating from a Windows PDC
+to a Samba PDC.
+
+The \fI-r\fR options can be used
+as well to indicate a specific domain controller which should
+be contacted. In this case, the domain SID obtained is the
+one for the domain to which the remote machine belongs.
+.TP
\fB-U username[%pass]\fR
This option may only be used in conjunction
with the \fI-r\fR option. When changing
@@ -200,7 +215,7 @@ switch is used to specify the password to be used with the
dn\fR. Note that the password is stored in
the \fIprivate/secrets.tdb\fR and is keyed off
of the admin's DN. This means that if the value of \fIldap
-admin dn\fR ever changes, the password will beed to be
+admin dn\fR ever changes, the password will need to be
manually updated as well.
.TP
\fB-x\fR
diff --git a/docs/textdocs/Printing.txt b/docs/textdocs/Printing.txt
index dc713d6180a..bdd4cbd59c2 100644
--- a/docs/textdocs/Printing.txt
+++ b/docs/textdocs/Printing.txt
@@ -43,7 +43,7 @@ Example:
lpq command = /usr/bin/lpq -P%p %s
lprm command = /usr/bin/lprm -P%p %j
queuepause command = /usr/sbin/lpc -P%p stop
- queuepause command = /usr/sbin/lpc -P%p start
+ queueresume command = /usr/sbin/lpc -P%p start
Samba should set reasonable defaults for these depending on your
system type, but it isn't clairvoyant. It is not uncommon that you
diff --git a/docs/textdocs/Solaris-Winbind-HOWTO.txt b/docs/textdocs/Solaris-Winbind-HOWTO.txt
deleted file mode 100644
index a81bacf4864..00000000000
--- a/docs/textdocs/Solaris-Winbind-HOWTO.txt
+++ /dev/null
@@ -1,361 +0,0 @@
-!==
-!== Solaris-Winbind-HOWTO.txt
-!==
-Contributors: Naag Mummaneni <getnag@rediffmail.com>
-Updated: May 2, 2002
-Status: Current
-
-Subject: Installing and Configuring Winbind on Solaris
-=============================================================================
-
-Installation and Configuration of Winbind on Solaris.
------------------------------------------------------
-
-This HOWTO describes how to get winbind services up and running to control
-access and authenticate users on your Solaris box using the winbind services
-which come with SAMBA 2.2.x latest CVS Checkout.Make sure you are using the
-latest Samba 2.2.x cvs checkout as other versions come with a lots of bugs
-regarding winbind .And even the Latest Samba Stable Release is also not an
-exception to this.
-
-Introduction
-------------
-
-This HOWTO describes the procedures used to get winbind up and running on a
-Solaris system. Winbind is capable of providing access and authentication
-control for Windows Domain users through an NT or Win2K PDC for 'regular'
-services, such as telnet and ftp, as well for SAMBA services.
-
-Why should I to this?
-
-This allows the SAMBA administrator to rely on the authentication mechanisms
-on the NT/Win2K PDC for the authentication of domain members. NT/Win2K users
-no longer need to have separate accounts on the SAMBA server.
-
-Who should be reading this document?
-
-This HOWTO is designed for system administrators. If you are implementing
-SAMBA on a file server and wish to (fairly easily) integrate existing
-NT/Win2K users from your PDC onto the SAMBA server, this HOWTO is for you.
-
-Requirements
-------------
-
-If you have a samba configuration file that you are currently using... BACK
-IT UP! If your system already uses PAM, back up the /etc/pam.conf file ! If
-you haven't already made a boot disk, MAKEONE NOW! Messing with the pam
-configuration file can make it nearly impossible to log in to yourmachine.
-That's why you want to be able to boot back into your machine in single user
-mode and restore your /etc/pam.conf back to the original state they were in
-if you get frustrated with the way things are going. ;-) Please refer to the
-main SAMBA web page or, better yet, your closest SAMBA mirror site for
-instructions on downloading the source code of Samba 2.2.x from the SAMBA
-CVS repository. To allow Domain users the ability to access SAMBA shares and
-files, as well as potentially other services provided by your SAMBA machine,
-PAM (pluggable authentication modules) must be setup properly on your
-machine. In order to compile the winbind modules, you should have at least
-the pam libraries resident on your system. Solaris 7/8 has its pam modules
-coming with the distribution itself.
-
-Testing Things Out
-------------------
-
-Before starting, it is probably best to kill off all the SAMBA related
-daemons running on your server. Kill off all smbd, nmbd, and winbindd
-processes that may be running.
-
-
-Configure and compile SAMBA
----------------------------
-
-The configuration and compilation of SAMBA is pretty straightforward. The
-first three steps may not be necessary depending upon whether or not you
-have previously built the Samba binaries.
-
-root# autoconf
-root# make clean
-root# rm config.cache
-root# ./configure --with-winbind --with-pam
-root# make
-root# make install
-
-This will, by default, install SAMBA in /usr/local/samba. See the main SAMBA
-documentation if you want to install SAMBA somewhere else. It will also
-build the winbindd executable and libraries.
-
-Configure nsswitch.conf and the winbind libraries
--------------------------------------------------
-
-The libraries needed to run the winbindd daemon through nsswitch need to be
-copied to their proper locations, so
-
-root# cp ../samba/source/nsswitch/libnss_winbind.so /usr/lib
-
-I also found it necessary to make the following symbolic links:
-
-root# ln -s /usr/lib/libnss_winbind.so /usr/lib/libnss_winbind.so.1
-root# ln -s /usr/lib/libnss_winbind.so /usr/lib/libnss_winbind.so.2
-root# ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.1
-root# ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.2
-
-Now, as root you need to edit /etc/nsswitch.conf to allow user and group
-entries to be visible from the winbindd daemon. My /etc/nsswitch.conf file
-look like this after editing:
-
- passwd: files winbind
- group: files winbind
-
-
-Configure smb.conf
-------------------
-
-Several parameters are needed in the smb.conf file to control the behavior
-of winbindd. Configure smb.conf These are described in more detail in the
-winbindd(8) man page. My smb.conf file was modified to include the following
-entries in the [global] section:
-
-[global]
- <...>
- # The previous documentation says to
- # as the "winbind seperator " directive also but
- # it is no longer supported.
-
- # use uids from 10000 to 20000 for domain users
- winbind uid = 10000-20000
-
- # use gids from 10000 to 20000 for domain groups
- winbind gid = 10000-20000
-
- # allow enumeration of winbind users and groups
- winbind enum users = yes
- winbind enum groups = yes
-
- # give winbind users a real shell (only needed if
- # they have telnet access)
- template homedir = /home/winnt/%D/%U
- template shell = /bin/bash
-
-
-Join the SAMBA server to the PDC domain
----------------------------------------
-
-Enter the following command to make the SAMBA server join the PDC domain,
-where DOMAIN is the name of your Windows domain and Administrator is a
-domain user who has administrative privileges in the domain.
-
-root# /usr/local/samba/bin/smbpasswd -j DOMAIN -r PDC -U Administrator
-
-The proper response to the command should be: "Joined the domain DOMAIN"
-where DOMAIN is your DOMAIN name.
-
-Start up the winbindd daemon and test it!
-
-Eventually, you will want to modify your smb startup script to automatically
-invoke the winbindd daemon when the other parts of SAMBA start, but it is
-possible to test out just the winbind portion first. To start up winbind
-services, enter the following command as root:
-
-root# /usr/local/samba/bin/winbindd
-
-I'm always paranoid and like to make sure the daemon is really running...
-
-root# ps -ae | grep winbindd
-
-This command should produce output like this, if the daemon is running
-
- 3025 ? 00:00:00 winbindd
-
-Now... for the real test, try to get some information about the users on
-your PDC
-
-root# /usr/local/samba/bin/wbinfo -u
-
-This should echo back a list of users on your Windows users on your PDC. For
-example, I get the following response:
-
-CEO\Administrator
-CEO\burdell
-CEO\Guest
-CEO\jt-ad
-CEO\krbtgt
-CEO\TsInternetUser
-
-root# /usr/local/samba/bin/wbinfo -g
-
-CEO\Domain Admins
-CEO\Domain Users
-CEO\Domain Guests
-CEO\Domain Computers
-CEO\Domain Controllers
-CEO\Cert Publishers
-CEO\Schema Admins
-CEO\Enterprise Admins
-CEO\Group Policy Creator Owners
-
-The function 'getent' can now be used to get unified lists of both local and
-PDC users and groups. Try the following command:
-
-root# getent passwd
-
-You should get a list that looks like your /etc/passwd list followed by the domain users with their new
-uids, gids, home directories and default shells.
-
-The same thing can be done for groups with the command
-
-root# getent group
-
-Fix the /etc/rc.d/init.d/samba.server startup files The winbindd daemon
-needs to start up after the smbd and nmbd daemons are running. To accomplish
-this task, you need to modify the /etc/init.d/samba.server script to add
-commands to invoke this daemon in the proper sequence. My
-/etc/init.d/samba.server file starts up smbd, nmbd, and winbindd from the
-/usr/local/samba/bin directory directly.
-
-##
-## samba.server
-##
-
-if [ ! -d /usr/bin ]
-then # /usr not mounted
- exit
-fi
-
-killproc() { # kill the named process(es)
- pid=`/usr/bin/ps -e |
- /usr/bin/grep -w $1 |
- /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
- [ "$pid" != "" ] && kill $pid
-}
-
-# Start/stop processes required for samba server
-
-case "$1" in
-
-'start')
-#
-# Edit these lines to suit your installation (paths, workgroup, host)
-#
-echo Starting SMBD
- /usr/local/samba/bin/smbd -D -s \
- /usr/local/samba/smb.conf
-
-echo Starting NMBD
- /usr/local/samba/bin/nmbd -D -l \
- /usr/local/samba/var/log -s /usr/local/samba/smb.conf
-
-echo Starting Winbind Daemon
- /usr/local/samba/bin/winbindd
- ;;
-
-'stop')
- killproc nmbd
- killproc smbd
- killproc winbindd
- ;;
-
-*)
- echo "Usage: /etc/init.d/samba.server { start | stop }"
- ;;
-esac
-
-If you restart the smbd, nmbd, and winbindd daemons at this point, you
-should be able to connect to the samba server as a domain member just as if
-you were a local user.
-
-
-Configure Winbind and PAM
--------------------------
-
-If you have made it this far, you know that winbindd and samba are working
-together. If you want to use winbind to provide authentication for other
-services, keep reading. The pam configuration file need to be altered in
-this step. (Did you remember to make backups of your original /etc/pam.conf
-file? If not, do it now.) You will need a pam module to use winbindd with
-these other services. This module will be compiled in the ../source/nsswitch
-directory by default when we used ./configure --with-pam option.
-
-root# make nsswitch/pam_winbind.so
-
-from the ../source directory. The pam_winbind.so file should be copied to
-the location of your other pam security modules. On my Solaris 8, this was
-the /usr/lib/security directory.
-
-root# cp ../samba/source/nsswitch/pam_winbind.so /usr/lib/security
-
-The /etc/pam.conf need to be changed. I changed this file so that my Domain
-users can logon both locally as well as telnet.The following are the changes
-that I made.You can customize the pam.conf file as per your requirements,but
-be sure of those changes because in the worst case it will leave your system
-nearly impossible to boot.
-
-#
-#ident "@(#)pam.conf 1.14 99/09/16 SMI"
-#
-# Copyright (c) 1996-1999, Sun Microsystems, Inc.
-# All Rights Reserved.
-#
-# PAM configuration
-#
-# Authentication management
-#
-login auth required /usr/lib/security/pam_winbind.so
-login auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-login auth required /usr/lib/security/$ISA/pam_dial_auth.so.1 try_first_pass
-#
-rlogin auth sufficient /usr/lib/security/pam_winbind.so
-rlogin auth sufficient /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-rlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-dtlogin auth sufficient /usr/lib/security/pam_winbind.so
-dtlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-rsh auth required /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-other auth sufficient /usr/lib/security/pam_winbind.so
-other auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-# Account management
-#
-login account sufficient /usr/lib/security/pam_winbind.so
-login account requisite /usr/lib/security/$ISA/pam_roles.so.1
-login account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-dtlogin account sufficient /usr/lib/security/pam_winbind.so
-dtlogin account requisite /usr/lib/security/$ISA/pam_roles.so.1
-dtlogin account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-other account sufficient /usr/lib/security/pam_winbind.so
-other account requisite /usr/lib/security/$ISA/pam_roles.so.1
-other account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Session management
-#
-other session required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Password management
-#
-#other password sufficient /usr/lib/security/pam_winbind.so
-other password required /usr/lib/security/$ISA/pam_unix.so.1
-dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Support for Kerberos V5 authentication (uncomment to use Kerberos)
-#
-#rlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#login auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#other auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other session optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other password optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-
-I also added a try_first_pass line after the winbind.so line to get rid of
-annoying double prompts for passwords.
-
-Now restart your Samba & try connecting through your application that you
-configured in the pam.conf.
-
-
-
-!==
-!== end of Solaris-Winbind-HOWTO.txt
-!==
diff --git a/examples/LDAP/README b/examples/LDAP/README
index 281a66e65aa..c7ff16ad083 100644
--- a/examples/LDAP/README
+++ b/examples/LDAP/README
@@ -4,29 +4,11 @@
!== written by Gerald Carter <jerry@samba.org>
!==
-This is a quick and dirty means of storing smbpasswd entries
-in smbpasswd. Samba 2.2.x does not have any ability to grab
-this information directly from LDAP so you will need to
-periodically generate an smbpasswd from an ldapsearch
-"(objectclass=smbPasswordEntry)".
-
-Be aware of search limits on your client or server which prevent
-all entries from being returned in the search result.
+This is a quick and dirty means of converting smbpasswd entries
+to sambaAccount entriues in an LDAP directory.
Pre-requisites for import_smbpasswd.pl & export_smbpasswd.pl
-------------------------------------------------------------
-You must install Mozilla PerLDAP which is available at:
-
- http://www.mozilla.org/directory
-
-PerLDAP depends on the Netscape (aka iPlanet) C-SDK which is
-available for download at:
-
- http:// www.iplanet.com/downloads/developer/
-
-
-Pre-requisites for import2_smbpasswd.pl & export2_smbpasswd.pl
--------------------------------------------------------------
These two scripts are modified versions of
[import|export]_smbpasswd.pl rewritten to use the Net::LDAP
@@ -36,6 +18,7 @@ perl module available from
+
OpenLDAP 2.0.x
--------------
@@ -68,7 +51,7 @@ You must restart the LDAP server for these new included schema files
to become active.
-import[2]_smbpasswd.pl
+import_smbpasswd.pl
----------------------
Make sure you customize the local site variable in the perl script
@@ -80,17 +63,17 @@ refer to RFC2307 and http://www.padl.com/software.html).
The following will import an smbpasswd file into an LDAP directory
- $ cat smbpasswd | import[2]_smbpasswd.pl
+ $ cat smbpasswd | import_smbpasswd.pl
-export[2]_smbpasswd.pl
+export_smbpasswd.pl
----------------------
Make sure you customize the local site variable in the perl script
(i.e. ldapserver, rootdn, rootpw, etc...). You can then generate
an smbpasswd file by executing
- $ export[2]_smbpasswd.pl > smbpasswd
+ $ export_smbpasswd.pl > smbpasswd
NOTE: Server side (or client side) search limites may prevent
all users from being listed. Check you directory server documentation
diff --git a/examples/LDAP/export2_smbpasswd.pl b/examples/LDAP/export2_smbpasswd.pl
deleted file mode 100644
index 90f5805e55f..00000000000
--- a/examples/LDAP/export2_smbpasswd.pl
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/perl
-##
-## Example script to export ldap entries into an smbpasswd file format
-## using the Mozilla PerLDAP module.
-##
-## writen by jerry@samba.org
-##
-## ported to Net::LDAP by dkrovich@slackworks.com
-
-use Net::LDAP;
-
-######################################################
-## Set these values to whatever you need for your site
-##
-
-$DN="dc=samba,dc=my-domain,dc=com";
-$ROOTDN="cn=Manager,dc=my-domain,dc=com";
-$rootpw = "secret";
-$LDAPSERVER="localhost";
-
-##
-## end local site variables
-######################################################
-
-$ldap = Net::LDAP->new($LDAPSERVER) or die "Unable to connect to LDAP server $LDAPSERVER";
-
-print "##\n";
-print "## Autogenerated smbpasswd file via ldapsearch\n";
-print "## from $LDAPSERVER ($DN)\n";
-print "##\n";
-
-## scheck for the existence of the posixAccount first
-$result = $ldap->search ( base => "$DN",
- scope => "sub",
- filter => "(objectclass=smbpasswordentry)"
- );
-
-
-
-## loop over the entries we found
-while ( $entry = $result->shift_entry() ) {
-
- @uid = $entry->get_value("uid");
- @uidNumber = $entry->get_value("uidNumber");
- @lm_pw = $entry->get_value("lmpassword");
- @nt_pw = $entry->get_value("ntpassword");
- @acct = $entry->get_value("acctFlags");
- @pwdLastSet = $entry->get_value("pwdLastSet");
-
- if (($#uid+1) && ($#uidNumber+1)) {
-
- $lm_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#lm_pw+1));
- $nt_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#nt_pw+1));
- $acct[0] = "[DU ]" if (! ($#acct+1));
- $pwdLastSet[0] = "FFFFFFFF" if (! ($#pwdLastSet+1));
-
- print "$uid[0]:$uidNumber[0]:$lm_pw[0]:$nt_pw[0]:$acct[0]:LCT-$pwdLastSet[0]\n";
- }
-
-}
-
-$ldap->unbind();
-exit 0;
-
diff --git a/examples/LDAP/export_smbpasswd.pl b/examples/LDAP/export_smbpasswd.pl
index 3f67dc62427..90f5805e55f 100644
--- a/examples/LDAP/export_smbpasswd.pl
+++ b/examples/LDAP/export_smbpasswd.pl
@@ -5,16 +5,16 @@
##
## writen by jerry@samba.org
##
+## ported to Net::LDAP by dkrovich@slackworks.com
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Entry;
+use Net::LDAP;
######################################################
## Set these values to whatever you need for your site
##
-$DN="ou=people,dc=plainjoe,dc=org";
-$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
+$DN="dc=samba,dc=my-domain,dc=com";
+$ROOTDN="cn=Manager,dc=my-domain,dc=com";
$rootpw = "secret";
$LDAPSERVER="localhost";
@@ -22,9 +22,7 @@ $LDAPSERVER="localhost";
## end local site variables
######################################################
-
-$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
-die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+$ldap = Net::LDAP->new($LDAPSERVER) or die "Unable to connect to LDAP server $LDAPSERVER";
print "##\n";
print "## Autogenerated smbpasswd file via ldapsearch\n";
@@ -32,32 +30,35 @@ print "## from $LDAPSERVER ($DN)\n";
print "##\n";
## scheck for the existence of the posixAccount first
-$result = $conn->search ("$DN", "sub", "(objectclass=smbPasswordEntry)");
-
-
+$result = $ldap->search ( base => "$DN",
+ scope => "sub",
+ filter => "(objectclass=smbpasswordentry)"
+ );
+
+
+
## loop over the entries we found
-while ($result) {
-
- @uid = $result->getValue("uid");
- @uidNumber = $result->getValue("uidNumber");
- @lm_pw = $result->getValue("lmpassword");
- @nt_pw = $result->getValue("ntpassword");
- @acct = $result->getValue("acctFlags");
- @pwdLastSet = $result->getValue("pwdLastSet");
-
+while ( $entry = $result->shift_entry() ) {
+
+ @uid = $entry->get_value("uid");
+ @uidNumber = $entry->get_value("uidNumber");
+ @lm_pw = $entry->get_value("lmpassword");
+ @nt_pw = $entry->get_value("ntpassword");
+ @acct = $entry->get_value("acctFlags");
+ @pwdLastSet = $entry->get_value("pwdLastSet");
+
if (($#uid+1) && ($#uidNumber+1)) {
-
+
$lm_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#lm_pw+1));
$nt_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#nt_pw+1));
$acct[0] = "[DU ]" if (! ($#acct+1));
$pwdLastSet[0] = "FFFFFFFF" if (! ($#pwdLastSet+1));
-
+
print "$uid[0]:$uidNumber[0]:$lm_pw[0]:$nt_pw[0]:$acct[0]:LCT-$pwdLastSet[0]\n";
}
-
- $result = $conn->nextEntry();
-
+
}
-$conn->close();
+$ldap->unbind();
exit 0;
+
diff --git a/examples/LDAP/import2_smbpasswd.pl b/examples/LDAP/import2_smbpasswd.pl
deleted file mode 100644
index 0f83b5cae45..00000000000
--- a/examples/LDAP/import2_smbpasswd.pl
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/perl
-##
-## Example script of how you could import a smbpasswd file into an LDAP
-## directory using the Mozilla PerLDAP module.
-##
-## writen by jerry@samba.org
-##
-## ported to Net::LDAP by dkrovich@slackworks.com
-
-use Net::LDAP;
-
-#################################################
-## set these to a value appropriate for your site
-##
-
-$DN="dc=samba,dc=my-domain,dc=com";
-$ROOTDN="cn=Manager,dc=my-domain,dc=com";
-$rootpw = "secret";
-$LDAPSERVER="localhost";
-
-##
-## end local site variables
-#################################################
-
-$ldap = Net::LDAP->new($LDAPSERVER) or die "Unable to connect to LDAP server $LDAPSERVER";
-
-## Bind as $ROOTDN so you can do updates
-$mesg = $ldap->bind($ROOTDN, password => $rootpw);
-
-while ( $string = <STDIN> ) {
- chop ($string);
-
- ## Get the account info from the smbpasswd file
- @smbentry = split (/:/, $string);
-
- ## Check for the existence of a system account
- @getpwinfo = getpwnam($smbentry[0]);
- if (! @getpwinfo ) {
- print STDERR "$smbentry[0] does not have a system account... skipping\n";
- next;
- }
-
- ## check and see if account info already exists in LDAP.
- $result = $ldap->search ( base => "$DN",
- scope => "sub",
- filter => "(&(|(objectclass=posixAccount)(objectclass=sambaAccount))(uid=$smbentry[0]))"
- );
-
- ## If no LDAP entry exists, create one.
- if ( $result->count == 0 ) {
- $entry = $ldap->add ( dn => "uid=$smbentry[0]\,$DN",
- attrs => [
- uid => $smbentry[0],
- uidNumber => @getpwinfo[2],
- lmPassword => $smbentry[2],
- ntPassword => $smbentry[3],
- acctFlags => $smbentry[4],
- pwdLastSet => substr($smbentry[5],4),
- objectclass => [ 'top', 'sambaAccount', 'posixAccount']
- ]
- );
- print "Adding [uid=" . $smbentry[0] . "," . $DN . "]\n";
-
- ## Otherwise, supplement/update the existing entry.
- } elsif ($result->count == 1) {
- # Put the search results into an entry object
- $entry = $result->shift_entry;
-
- print "Updating [" . $entry->dn . "]\n";
-
- ## Add the objectclass: sambaAccount attribute if it's not there
- @values = $entry->get_value( "objectclass" );
- $flag = 1;
- foreach $item (@values) {
- if ( lc($item) eq "sambaaccount" ) {
- print $item . "\n";
- $flag = 0;
- }
- }
- if ( $flag ) {
- $entry->add(objectclass => "sambaAccount");
- }
-
- ## Set the other attribute values
- $entry->replace(lmPassword => $smbentry[2],
- ntPassword => $smbentry[3],
- acctFlags => $smbentry[4],
- pwdLastSet => substr($smbentry[5],4)
- );
-
- ## Apply changes to the LDAP server
- $updatemesg = $entry->update($ldap);
- if ( $updatemesg->code ) {
- print "Error updating $smbentry[0]!\n";
- }
-
- ## If we get here, the LDAP search returned more than one value
- ## which shouldn't happen under normal circumstances.
- } else {
- print STDERR "LDAP search returned more than one entry for $smbentry[0]... skipping!\n";
- next;
- }
-}
-
-$ldap->unbind();
-exit 0;
-
-
diff --git a/examples/LDAP/import_smbpasswd.pl b/examples/LDAP/import_smbpasswd.pl
index 14aeff967f1..61ad33c8099 100644
--- a/examples/LDAP/import_smbpasswd.pl
+++ b/examples/LDAP/import_smbpasswd.pl
@@ -1,13 +1,13 @@
#!/usr/bin/perl
##
-## Example script of how you could import and smbpasswd file into an LDAP
+## Example script of how you could import a smbpasswd file into an LDAP
## directory using the Mozilla PerLDAP module.
##
## writen by jerry@samba.org
##
+## ported to Net::LDAP by dkrovich@slackworks.com
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Entry;
+use Net::LDAP;
#################################################
## set these to a value appropriate for your site
@@ -15,51 +15,105 @@ use Mozilla::LDAP::Entry;
$DN="ou=people,dc=plainjoe,dc=org";
$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
-$rootpw = "secret";
-$LDAPSERVER="localhost";
+# If you use perl special character in your
+# rootpw, escape them:
+# $rootpw = "secr\@t" instead of $rootpw = "secr@t"
+$rootpw = "n0pass";
+$LDAPSERVER="scooby";
##
## end local site variables
#################################################
-$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
-die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+$ldap = Net::LDAP->new($LDAPSERVER) or die "Unable to connect to LDAP server $LDAPSERVER";
+## Bind as $ROOTDN so you can do updates
+$mesg = $ldap->bind($ROOTDN, password => $rootpw);
+$mesg->error() if $mesg->code();
while ( $string = <STDIN> ) {
- chop ($string);
+ chomp ($string);
- ## get the account information
+ ## Get the account info from the smbpasswd file
@smbentry = split (/:/, $string);
- ## check for the existence of the posixAccount first
+ ## Check for the existence of a system account
+ @getpwinfo = getpwnam($smbentry[0]);
+ if (! @getpwinfo ) {
+ print STDERR "**$smbentry[0] does not have a system account... \n";
+ next;
+ }
+ ## Calculate RID = uid*2 +1000
+ $rid=@getpwinfo[2]*2+1000;
+
+ ## check and see if account info already exists in LDAP.
+ $result = $ldap->search ( base => "$DN",
+ scope => "sub",
+ filter => "(uid=$smbentry[0])"
+ );
- ## FIXME!! Should do a getownam() and let the NSS modules lookup the account
- ## This way you can have a UNIX account in /etc/passwd and the smbpasswd i
- ## entry in LDAP.
- $result = $conn->search ("$DN", "sub", "(&(uid=$smbentry[0])(objectclass=posixAccount))");
- if ( ! $result ) {
- print STDERR "uid=$smbentry[0] does not have a posixAccount entry in the directory!\n";
- next;
- }
+ ## If no LDAP entry exists, create one.
+ if ( $result->count == 0 ) {
+ $new_entry = Net::LDAP::Entry->new();
+ $new_entry->add( dn => "uid=$smbentry[0],$DN",
+ uid => $smbentry[0],
+ rid => $rid,
+ lmPassword => $smbentry[2],
+ ntPassword => $smbentry[3],
+ acctFlags => $smbentry[4],
+ cn => $smbentry[0],
+ pwdLastSet => hex(substr($smbentry[5],4)),
+ objectclass => 'sambaAccount' );
- print "Updating [" . $result->getDN() . "]\n";
+ $result = $ldap->add( $new_entry );
+ $result->error() if $result->code();
+ print "Adding [uid=" . $smbentry[0] . "," . $DN . "]\n";
- ## Do we need to add the 'objectclass: smbPasswordEntry' attribute?
- if (! $result->hasValue("objectclass", "smbPasswordEntry")) {
- $result->addValue("objectclass", "smbPasswordEntry");
- }
-
- ## Set other attribute values
- $result->setValues ("lmPassword", $smbentry[2]);
- $result->setValues ("ntPassword", $smbentry[3]);
- $result->setValues ("acctFlags", $smbentry[4]);
- $result->setValues ("pwdLastSet", substr($smbentry[5],4));
-
- if (! $conn->update($result)) {
- print "Error updating!\n";
- }
+ ## Otherwise, supplement/update the existing entry.
+ }
+ elsif ($result->count == 1)
+ {
+ # Put the search results into an entry object
+ $entry = $result->entry(0);
+
+ print "Updating [" . $entry->dn . "]\n";
+
+ ## Add the objectclass: sambaAccount attribute if it's not there
+ @values = $entry->get_value( "objectclass" );
+ $flag = 1;
+ foreach $item (@values) {
+ print "$item\n";
+ if ( "$item" eq "sambaAccount" ) {
+ $flag = 0;
+ }
+ }
+ if ( $flag ) {
+ ## Adding sambaAccount objectclass requires adding at least rid:
+ ## uid attribute already exists we know since we searched on it
+ $entry->add(objectclass => "sambaAccount",
+ rid => $rid );
+ }
+
+ ## Set the other attribute values
+ $entry->replace(rid => $rid,
+ lmPassword => $smbentry[2],
+ ntPassword => $smbentry[3],
+ acctFlags => $smbentry[4],
+ pwdLastSet => hex(substr($smbentry[5],4)));
+
+ ## Apply changes to the LDAP server
+ $updatemesg = $entry->update($ldap);
+ $updatemesg->error() if $updatemesg->code();
+
+ ## If we get here, the LDAP search returned more than one value
+ ## which shouldn't happen under normal circumstances.
+ } else {
+ print STDERR "LDAP search returned more than one entry for $smbentry[0]... skipping!\n";
+ next;
+ }
}
-$conn->close();
+$ldap->unbind();
exit 0;
+
+
diff --git a/examples/LDAP/samba-schema-netscapeds4.x b/examples/LDAP/samba-schema-netscapeds4.x
index c5a11b8b66c..074b78c52cc 100644
--- a/examples/LDAP/samba-schema-netscapeds4.x
+++ b/examples/LDAP/samba-schema-netscapeds4.x
@@ -24,7 +24,7 @@ attribute domain 1.3.6.1.4.1.7165.2.1.18 cis single
objectclass sambaAccount
oid
- 1.3.1.5.1.4.1.7165.2.2.2
+ 1.3.1.5.1.4.1.7165.2.2.3
superior
top
requires
diff --git a/examples/LDAP/samba-schema-netscapeds5.x b/examples/LDAP/samba-schema-netscapeds5.x
index 0abc9d82e27..888758f67f3 100644
--- a/examples/LDAP/samba-schema-netscapeds5.x
+++ b/examples/LDAP/samba-schema-netscapeds5.x
@@ -21,8 +21,8 @@ aci: (targetattr = "*")(version 3.0; acl "SIE Group"; allow (all)groupdn = "ld
ap:///cn=slapd-sambaldap, cn=iPlanet Directory Server, cn=Server Group, cn=iPlanetDirectory.samba.org, ou=samba.org, o=NetscapeRoot";)
modifiersName: cn=directory manager
modifyTimestamp: 20020322124844Z
-objectClasses: ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTUR
- AL MAY ( acctFlags $ domain $ homeDrive $ kickoffTime $ lmPassword $ logofft
+objectClasses: ( 1.3.1.5.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILIARY
+ MAY ( acctFlags $ domain $ homeDrive $ kickoffTime $ lmPassword $ logofft
ime $ logonTime $ ntPassword $ primaryGroupID $ profilePath $ pwdCanChange $
pwdLastSet $ pwdMustChange $ rid $ scriptPath $ smbHome $ userWorkstations
) X-ORIGIN 'user defined' )
diff --git a/examples/LDAP/samba-schema.IBMSecureWay b/examples/LDAP/samba-schema.IBMSecureWay
index 1fca4a749a6..73d767b03c8 100644
--- a/examples/LDAP/samba-schema.IBMSecureWay
+++ b/examples/LDAP/samba-schema.IBMSecureWay
@@ -10,7 +10,7 @@
## ibm-slapdIncludeSchema: /etc/lapschema/samba.schema
##
objectClasses {
-( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' DESC 'Samba Account' SUP top MUST uid $ rid MAY ( acctFlags $ cn $ description $ displayName $ homeDrive $ kickoffTime $ lmPassword $ logoffTime $ logonTime $ ntPassword $ primaryGroupID $ profilePath $ pwdCanChange $ pwdLastSet $ pwdMustChange $ scriptPath $ smbHome $ userWorkstations ) )
+( 1.3.1.5.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Samba Account' SUP top MUST uid $ rid MAY ( acctFlags $ cn $ description $ displayName $ homeDrive $ kickoffTime $ lmPassword $ logoffTime $ logonTime $ ntPassword $ primaryGroupID $ profilePath $ pwdCanChange $ pwdLastSet $ pwdMustChange $ scriptPath $ smbHome $ userWorkstations ) )
}
attributeTypes {
diff --git a/examples/LDAP/samba.schema b/examples/LDAP/samba.schema
index be088c74033..61dface0a20 100644
--- a/examples/LDAP/samba.schema
+++ b/examples/LDAP/samba.schema
@@ -119,8 +119,20 @@ attributetype ( 1.3.6.1.4.1.7165.2.1.15 NAME 'primaryGroupID'
# MUST ( uid $ uidNumber )
# MAY ( lmPassword $ ntPassword $ pwdLastSet $ acctFlags ))
-objectclass ( 1.3.6.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
- DESC 'Samba Account'
+#objectclass ( 1.3.6.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
+# DESC 'Samba Account'
+# MUST ( uid $ rid )
+# MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
+# logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
+# displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
+# description $ userWorkstations $ primaryGroupID $ domain ))
+
+## The X.500 data model (and therefore LDAPv3) says that each entry can
+## only have one structural objectclass. OpenLDAP 2.0 does not enforce
+## this currently but will in v2.1
+
+objectclass ( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILIARY
+ DESC 'Samba Auxilary Account'
MUST ( uid $ rid )
MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
diff --git a/examples/LDAP/smbldap-tools/AUTHORS b/examples/LDAP/smbldap-tools/AUTHORS
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/AUTHORS
diff --git a/examples/LDAP/smbldap-tools/CONTRIBUTORS b/examples/LDAP/smbldap-tools/CONTRIBUTORS
new file mode 100644
index 00000000000..9765a57e60d
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/CONTRIBUTORS
@@ -0,0 +1,29 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/CONTRIBUTORS,v $
+#
+## Authors and actives contributors to SMBLDAP-TOOLS
+
+Have contributed directly to this tools, or are always in charge of
+some aspects of it developments (alphabetical order):
+ . Terry Davis <tdavis@approbation.org>
+ . David Le Corfec <dlc@freesurf.fr>
+ . Olivier Lemaire <olivier.lemaire@IDEALX.com>
+ . Jérôme Tournier <jerome.tournier@IDEALX.com>
+
+Many thanks to contributors for bug report and patches:
+ . Gert-Jan Braas <braas@wyldebeast-wunderliebe.com>
+ bug report for 2.2.3 samba.schema
+ . Jody Haynes <Jody.Haynes@isunnetworks.com>
+ originaly passwd.pl
+ . Brad Langhorst <brad@langhorst.com>
+ package relocatability
+ . Mirko Manea <mami@arena.sci.univr.it>
+ originaly useradd.pl
+ . Alain Richard <alain.richard@equation.fr>
+ bug report and Perl tips
+ . Roland Schulz <mail@r2s2.de>
+ bug report for smbldap-passwd
+ . Xavier Boschian <Xavier.Boschian@rtlgroup.net>
+ bug report for smbldap-populate
+
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/COPYING b/examples/LDAP/smbldap-tools/COPYING
new file mode 100644
index 00000000000..32d0e6014a7
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/examples/LDAP/smbldap-tools/ChangeLog b/examples/LDAP/smbldap-tools/ChangeLog
new file mode 100644
index 00000000000..9a0bc744e19
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/ChangeLog
@@ -0,0 +1,29 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/ChangeLog,v $
+#
+## ChangeLog for SMBLDAP-TOOLS
+
+* 2002-06-03: notes to webmin.idealx.org (idxldapaccounts)
+* 2002-06-01: release 0.7. tested with 2.2.4
+* 2002-05-31: fixed smbldap-populate compliance to smbldap_conf
+ cleaned up smbldap_conf to be more readable
+ some more documentation
+ bugfixes on smbldap-passwd and smbldap-populate
+* 2002-05-16: modified default mode on homes: now 700
+* 2002-05-13: fixed spec (relocation and reqs)
+* 2002-03-02: fixed 2.2.3 sambaAccount bug with smbldap-useradd.pl
+ (rid is now mandatory in the sambaAccount objectClass)
+* 2002-02-14: just modified default populate for Administrator
+* 2002-02-05: release 0.6. enable/disable user in usermod
+* 2002-02-04: release 0.5. added smbldap-migrate-groups to migrate NT groups
+ from a net group dump. added samba parameters to smbldap-useradd
+ and smbldap-usermod.
+* 2002-01-12: added smbldap-migrate-accounts to migrate users/machines
+ accounts from a PWDUMP dump
+* 2001-12-13: added smbldap-populate to create the initial base
+* 2001-12-13: initial release 0.1
+* 2001-12-12: fixed the SPEC file for RedHat
+* 2001-12-03: cleaned the code and use strict;
+* 2001-11-20: initial needs (for testing purpose on Samba-2.2.2 an Samba-TNG)
+
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/FILES b/examples/LDAP/smbldap-tools/FILES
new file mode 100644
index 00000000000..48ee571b29d
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/FILES
@@ -0,0 +1,43 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/FILES,v $
+#
+## File listing for SMBLDAP-TOOLS
+
+CONTRIBUTORS : authors and contributors
+COPYING : licence
+FILES : this file listing
+README : introduction and usage
+TODO : feature request and bug report list
+ChangeLog : changelog
+
+Core:
+=-=-=
+smbldap-groupadd.pl : to add a new group
+ (objectclass: posixGroup)
+smbldap-groupdel.pl : to delete a group
+ (objectclass: posixGroup)
+smbldap-groupmod.pl : to modify a group (mostly used to add user to a group)
+ (objectclass: posixGroup)
+smbldap-groupshow.pl : to view a group
+ (objectclass: posixGroup)
+smbldap_conf.pm : global configuration datas
+smbldap_tools.pm : functions
+smbldap-useradd.pl : to add a new user
+ (objectclass: posixAccount and/or sambaAccount)
+smbldap-userdel.pl : to delete a user
+ (objectclass: posixAccount and/or sambaAccount)
+smbldap-usermod.pl : to modify an user datas
+ (objectclass: posixAccount and/or sambaAccount)
+smbldap-usershow.pl : to view an user datas
+ (objectclass: posixAccount and/or sambaAccount)
+smbldap-passwd.pl : to sync passwd (Unix and Samba)
+ (a replacement for the system passwd utility)
+smbldap-populate.pl : to add a builtin ldif to initialize your LDAP master for
+ smbldap use, or to add a specified ldif
+smbldap-tools.spec : SPEC file for RedHat RPM package format
+
+Migration:
+=-=-=-=-=-
+smbldap-migrate-accounts.pl : add NT sam entries from pwdump to ldap
+smbldap-migrate-groups.pl : add any LDAP posixGroups from the output of the 'net group' NT command
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/INFRASTRUCTURE b/examples/LDAP/smbldap-tools/INFRASTRUCTURE
new file mode 100644
index 00000000000..75b80bb4c8b
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/INFRASTRUCTURE
@@ -0,0 +1,84 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/INFRASTRUCTURE,v $
+#
+## Some notes about the architecture
+
+
+Global Architecture for smbdlap-tools
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+smbldap-tools help you manage users and groups for Unix and Samba,
+using LDAP. They may be used in any context, and are kept relatively
+simplier enought to let you customize them to you needs.
+
+They need the following objectClasses to work:
+ . sambaAccount: from samba.schema for Samba 2.2 branch
+ . posixAccount and posixGroup : from nis.schema
+ . organizationalUnit and dcObject: from core.schema
+
+They will probably use in a near future some additional objectClasses
+to support :
+ . mail features (sendmail/postfix/qmail/courier).
+ . conform to RFC2307 best practices (and so some maps too like merging
+ Netbios computers (sambaAccounts) with ipHosts
+
+For ease of visualization of the LDAP objects by human standards, we
+used a DIT like this one :
+ . dc=IDEALX,dc=org : the company/organization suffix
+ . ou=Users : to store users accounts
+ . ou=Computers : to store computers accounts
+ . ou=Groups : to store system groups
+Of course, you're free to use a different naming scheme and DIT (see
+smbldap_conf.pm).
+
+
+Built in groups initial population
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+smbldap-populate.pl populate the LDAP directory with some built in groups
+using gidNumber according to Well Know RID of Windows NT4 Srv. In fact, As
+far a Samba 2.2.x is concerned, only the 'Domain Admins' (gidNumber 512) have
+real inpact on the Samba and Windows population. To activate this group as
+the Domain Administrators Group, use the following smb.conf directive (see
+man smb.conf for more):
+
+ domain admin group = " @"Domain Admins" "
+
+Other built in groups are really cosmetic ones with Samba 2.2.x. We did not
+removed them because one of these days, we whish to use Samba 3.0 where
+Windows Group Support should be operational.
+
+Why these specific gidNumbers ?
+It's about unix/windows mapping of numerical ids with Samba. Ids below 1024
+are NT special ids. In fact, 512 is the RID (Windows uid/gid) for the
+"Domain Administrators" NT group. The magic number is found in Samba sources
+and possibly other Samba/Windows documentations.
+
+The goal is to have a set of Unix users who are Domain Administrators and can
+modify Samba datas (eg. LDAP content), with commandline tools or within
+Windows via Samba.
+
+Say you want to add a NT4 ws to an NT domain (controlled by a samba/ldap
+server). You give the domain administrator's login and password in the
+appropriate ws settings, then the ws contacts the samba server, which checks
+the credentials and use them as unix user to run the smbldap-tools (if I
+remember). Giving 512 as a RID to a LDAP entry marks it as a domain admin
+for Samba (thus Windows). Using nss_ldap, you also have an account with
+gid 512.
+
+
+Known BUGS and WORKAROUND used
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The 2.2.2 has at least a bug : rid/primaryGroupID are read as hex in LDAP,
+but written as decimal. Fixed in CVS by reading as decimal. By default
+smbldap-useradd.pl writes decimal to LDAP. Use -x to support the odd
+behaviour.
+
+The samba-2.2.4-ldapbindnotuid0.patch is not a perfect solution however
+as the check is there because Samba store admin credentials to establish the
+LDAP connection. The uid == 0 check was to ensure that a normal user could
+not get write access to the LDAP backend. A more logical situation should be
+done for 2.2.5 by checking if the user is a member of the domain admin group
+(reported to Jerremy and Gerald 2002-05-28).
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/INSTALL b/examples/LDAP/smbldap-tools/INSTALL
new file mode 100644
index 00000000000..f4c72751a75
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/INSTALL
@@ -0,0 +1,28 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/INSTALL,v $
+#
+## How To Install SMBLDAP-TOOLS
+
+Quick & Dirty:
+=-=-=-=-=-=-=-
+ . Copy all those scripts in /usr/local/sbin/
+ . Modify smbldap_conf.pm to match your configuration
+ . If not already done : "smbpasswd -w secret" to set up
+ the ldap admin password in secrets.tdb
+ . Either add /usr/local/sbin in $PERLLIB or run the scripts
+ from this directory, or make a symlink from /usr/local/sbin/*.pm
+ to /usr/lib/perl5/.
+ . to allow a domain admin to add user using "add user script" in smb.conf :
+ chmod 753 smbldap_conf.pm
+ chmod 750 smbldap-useradd.pl
+ chgrp 512 smbldap_conf.pm smbldap-useradd.pl (512 = 0x200 = Domain Admins)
+ Have your admin belong to this group
+ In smb.conf : domain admin group = " @"Domain Admins" "
+
+RedHat RPM:
+=-=-=-=-=-=
+Install smbldap-tools-0.7-1.i386.rpm
+Modify /usr/local/sbin/smbldap_conf.pm to match you configuration
+If not already done : "smbpasswd -w secret" to set up
+the ldap admin password in secrets.tdb
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/Makefile b/examples/LDAP/smbldap-tools/Makefile
new file mode 100644
index 00000000000..3e5eac427d7
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/Makefile
@@ -0,0 +1,35 @@
+PACKAGE=smbldap-tools
+RELEASE=0.7
+DESTDIR = $(PACKAGE)-$(RELEASE)
+
+dist: distclean $(DESTDIR).tgz
+
+$(DESTDIR).tgz: .diststamp
+ rm -rf $(DESTDIR)
+ mkdir $(DESTDIR)
+ # copy files
+ cp CONTRIBUTORS $(DESTDIR)
+ cp COPYING $(DESTDIR)
+ cp ChangeLog $(DESTDIR)
+ cp FILES $(DESTDIR)
+ cp INSTALL $(DESTDIR)
+ cp README $(DESTDIR)
+ cp TODO $(DESTDIR)
+ cp INFRASTRUCTURE $(DESTDIR)
+ tar cf mkntpwd.tar mkntpwd
+ gzip mkntpwd.tar
+ cp mkntpwd.tar.gz $(DESTDIR)
+ cp smbldap-*.pl $(DESTDIR)
+ cp smbldap_*.pm $(DESTDIR)
+ # copy directories
+ tar cvzf $(DESTDIR).tgz $(DESTDIR)
+ rm -rf $(DESTDIR)
+ touch .diststamp
+
+.diststamp:
+
+distclean:
+ rm -f *~
+ rm -f $(DESTDIR).tgz
+ rm -f mkntpwd.tar.gz
+
diff --git a/examples/LDAP/smbldap-tools/NEWS b/examples/LDAP/smbldap-tools/NEWS
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/NEWS
diff --git a/examples/LDAP/smbldap-tools/README b/examples/LDAP/smbldap-tools/README
new file mode 100644
index 00000000000..add0175c0ce
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/README
@@ -0,0 +1,87 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/README,v $
+#
+
+Latest version may be found at http://samba.idealx.org/
+
+
+What those tools are for?
+=-=-=-=-=-=-=-=-=-=-=-=-=
+
+A collection of scripts, «over» user{add,del,mod} and group{add,del,mod}
+system tools to manipulate users and groups stored in LDAP directory,
+for DEN system like SAMBA-LDAP and pam/nss_ldap systems.
+
+Additionnaly, some scripts are designed to ease your migration from
+a Windows NT 4.0 PDC Server to a Samba-LDAP PDC Server (Killer?;-):
+smbldap-populate, smbldap-migrate-groups, smbldap-migrate-accounts.
+
+They are currently used with Samba 2.2.4, therefore you may (will) have
+to make some fixes for Samba TNG and Samba 3.0. Hint: contribs welcome :)
+
+In the future, some other function may come (like backup and restore,
+Novell migration tools, samba system activity report, dealing with
+mail functions, compliance to RFC2307...): consult TODO.
+
+
+What do SMBLDAP-TOOLS provide?
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Those tools provide the following functions :
+ . populate LDAP database with a basic LDIF
+ . add a user or group
+ . delete a user or group
+ . modify all users or groups data (all attributes types stored in
+ posixAccount and sambaAccount object class)
+Taking care of :
+ . staying compatible with all standard system tools options
+ (user/group{add,del,mod})
+ . be extensible for future developments
+ (manipulation of shadow account options, for example)
+ . error management, in the way system tools do
+Constraints :
+ . usage of PERL (portability)
+ . all options must be placed in an external configuration file
+ . english localization
+
+The current release uses the "mkntpwd" program, in mkntpwd.tar.gz
+in the current directory. It comes from
+http://www.demog.berkeley.edu/~aperrin/tips/src/mkntpwd.tar.gz
+It allows to not use smbpasswd (if $with_smbpasswd == 0 in smbldap_conf.pm)
+
+What do SMBLDAP-TOOLS deliver?
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+Contents :
+ . scripts (see FILES)
+ . user documentation in pod format, included in the sources
+ (or just use the -? option)
+
+These tools aim at delivering the same functionality as the corresponding
+system tools. However they may not be all implemented yet.
+Current limitations :
+ . no shadow support
+ . cannot change uid with usermod
+ . no UTF-8 support (thus ASCII-7 only)
+
+
+How to generate documentation?
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Just issue the following command:
+ perldoc name_of_script.pl (ex: perldoc smbldap-useradd.pl)
+
+Where can I find the latest release of those scripts?
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Just fire any web browser to http://samba.IDEALX.org/
+and/or contact samba@IDEALX.org
+
+Additionnaly, you will find an useful Webmin module
+at http://webmin.IDEALX.org/ if interested in a graphical
+user interface to manager user and groups accounts via Webmin
+for your Samba+LDAP PDC.
+
+Let us know if these tools helped you, or if we should enhance
+them with some functions you want them to support.
+
+Sincerly,
+ LEM
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/TODO b/examples/LDAP/smbldap-tools/TODO
new file mode 100644
index 00000000000..57424d462af
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/TODO
@@ -0,0 +1,27 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/TODO,v $
+#
+## TODO list - First In, Last in the list...
+## (BF: Bug Report / FR: Feature Request)
+
+
+FR * use RFC2307 best practices (Luke, next time you visit Paris, have a
+ beer at IDEALX'cantina ;-)
+FR * add mail (sendmail/postfix/qmail/courier) support
+FR * bugfix, really : allow non-root users to change passwd
+ (currently the config must be unreadable because of bindpasswd)
+FR * make smbldap-tools to use system configuration files
+ (/etc/login.defs and /etc/ldap.conf for example)
+FR * rewrite smbldap-tools using perl-ldap. In fact, this 0.x
+ release use ldap system tools (ldapadd,ldapdelete,ldapmodify)
+FR * add shadowAccounts manipulation support
+FR * internationalize the SMBLDAP-TOOLS
+FR * add smbldap-sar : Samba System Activity Report to help
+ supporting Samba/LDAP sysadmin activity
+FR * add smbldap-backup/smbldap-restore to backup and restore
+ a SAM (in LDAP) database. No sorcery, just LDIF, but usefull
+ for non-LDAP gurus
+FR * adding migration tools from migration from W2K and NetWare to Samba-LDAP
+FR * adapt smbldap-tools to use Samba 3.0
+
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/cgi/README b/examples/LDAP/smbldap-tools/cgi/README
new file mode 100644
index 00000000000..7a4fc0c02b9
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/cgi/README
@@ -0,0 +1,27 @@
+Description:
+ A cgi to allow users to change their passwords via a web browser.
+
+Installation:
+ Drop this into a cgi-enabled directory on your webserver.
+ Edit it and change the CONFIGURATION section to suit your environment.
+ READ THE NOTES SECTION.
+
+Notes: This script will run as the user who runs your web server. So, to invoke the smbpasswd call, you must implement sudo.
+ Example of /etc/sudoers:
+
+ # Host alias specification
+ # User alias specification
+ User_Alias PASSWD = apache
+ # Cmnd alias specification
+ Cmnd_Alias PASSWD = /usr/bin/smbpasswd
+ # User privilege specification
+ root ALL=(ALL) ALL
+ PASSWD ALL= NOPASSWD: PASSWD
+
+ This concept is probably very insecure and broken. That is why this is a 0.1 release. :)
+
+
+Feel free to drop me suggestions. I am a perl learner so I am always open to suggestions.
+
+Terry Davis
+tdavis@approbation.org
diff --git a/examples/LDAP/smbldap-tools/cgi/ldappass.cgi b/examples/LDAP/smbldap-tools/cgi/ldappass.cgi
new file mode 100755
index 00000000000..4a5ecb8f3a9
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/cgi/ldappass.cgi
@@ -0,0 +1,202 @@
+#!/usr/bin/perl
+
+################################################################################
+#
+# changepass.pl - A program to allow users to change their passwords
+# via a web browser.
+# Terry Davis
+#
+# URLs
+# Net::LDAP - http://
+# usermod and this file - http://www.cloudamster.com/cloudmaster/projects
+#
+# Release History:
+# Version 0.1 - initial write
+#
+# ToDo:
+# ... the ToDo section is on the ToDo list...
+#
+# Limitations:
+# The password cannot contain single and double quotes.....welcome to quoting hell....
+#
+# Notes:
+# This code is largely based on work done by Danny Sauer - http://www.cloudamster.com/cloudmaster/projects
+# His work is not licensed and is marked as 'freely distributable'.
+# Thank you to Danny for his hard work on the initial work.
+#
+################################################################################
+
+use CGI qw(:standard);
+use Net::LDAP;
+
+# CONFIGURATION SECTION
+$masterLDAP = "ldap.idealx.org";
+$basedn = "dc=IDEALX,dc=org";
+$masterPw = "";
+$masterDN = "cn=manager,$basedn";
+$ldap_path = "/usr/bin";
+$ldap_opts = "-x";
+$ldappasswd = "$ldap_path/ldappasswd $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+$usersdn = "ou=Users,$basedn";
+# END CONFIGURATION
+
+
+
+# DONT EDIT ANYTHING BELOW THIS LINE
+$logtag = "Login:";
+$passtag = "Current password:";
+$npasstag1 = "New password:";
+$npasstag2 = "Retype new pasword:";
+$error = "";
+$color = "<FONT color='red'>";
+$stopcolor = "</FONT>";
+
+if(param()){
+ nologin() unless ($username = param('login'));
+ nopass() unless ($oldpass = param('oldpass'));
+ nonewpass(1) unless ($newpass1 = param('newpass'));
+ nonewpass(2) unless ($newpass2 = param('newpass2'));
+ verifyuser($username) or die "bad user";
+ verifypass($username, $oldpass) or die "bad pass";
+ testnewpass($newpass1, $newpass2) or die "bad new pass";
+ changepass($username, $newpass1) or die "couldn't change pass";
+ printsuccess();
+}else{
+ printpage();
+}
+exit(0);
+
+sub verifyuser{
+ local $user = shift;
+ $ldap = Net::LDAP->new($masterLDAP) or die "can't make new LDAP object: $@";
+ $ldap->bind();
+ if (0 < $ldap->search(base => $basedn, filter => "(uid=$user)")->count){
+ return 1;
+ }
+ $logtag = $color . $logtag . $color;
+ $error = "No such user";
+ printpage();
+ return 0;
+}
+
+sub verifypass{
+ $uid = shift;
+ $pass = shift;
+ $ldap = Net::LDAP->new($masterLDAP) or die "can't make new LDAP object: $@";
+ $binddn = "uid=$uid,ou=People,$basedn";
+ return 1 if($ldap->bind( $binddn, password => $pass)->code == 0);
+ if($ldap->bind()){
+ $passtag = $color . $passtag . $color;
+ $error = "Incorrect password";
+ printpage();
+ return 0;
+ }else{
+ print header, start_html(-title=>"LDAP dead");
+ print h2("<CENTER>The LDAP server is temporarily unavailable."),
+ p,"Please try again later</CENTER>";
+ return 0;
+ }die "Something (or someone) is defective, contact your friendly Systems Administrator";
+}
+
+sub testnewpass{
+ $p1 = shift; $p2 = shift;
+ if ($p1 ne $p2){
+ $npasstag1 = $color . $npasstag1 . $color;
+ $npasstag2 = $color . $npasstag2 . $color;
+ $error = "Passwords don't match ($p1 vs $p2)";
+ printpage();
+ return 0;
+ }
+ if ($p1 =~ /"/ ){
+ $npasstag1 = $color . $npasstag1 . $color;
+ $npasstag2 = $color . $npasstag2 . $color;
+ $error = "Passwords cannot contain double quotes. Sorry";
+ printpage();
+ return 0;
+ }
+ if ($p1 =~ /'/ ){
+ $npasstag1 = $color . $npasstag1 . $color;
+ $npasstag2 = $color . $npasstag2 . $color;
+ $error = "Passwords cannot contain single quotes. Sorry";
+ printpage();
+ return 0;
+ }
+ return 1;
+}
+
+sub changepass{
+ local $user = shift;
+ local $newpass = shift;
+ local $dn = "uid=$user,$usersdn";
+ system "$ldappasswd $dn -s '$newpass' > /dev/null";
+ `/usr/bin/sudo /usr/bin/smbpasswd $user "$newpass"`;
+ exit(1);
+}
+
+sub nologin{
+ $logtag = $color . $logtag . $color;
+ $error = "You need to enter a Login Name";
+ printpage();
+ exit(1);
+}
+
+sub nopass{
+ $passtag = $color . $passtag . $color;
+ $error = "Please enter your old password";
+ printpage();
+ exit(1);
+}
+
+sub nonewpass{
+ $f=shift;
+ $npasstag1 = $color . $npasstag1 . $color if($f==1);
+ $npasstag2 = $color . $npasstag2 . $color if($f==2);
+ $error = "You need to enter your new password";
+ $error .= " twice" if($f==2);
+ printpage();
+ exit(1);
+}
+
+sub printpage{
+ print header,
+ start_html(-title=> "Password Change Page",
+ -author=> 'tdavis@birddog.com',
+ -BGCOLOR=> 'WHITE'),
+ h3('Password Change Page'),
+ startform(-method=>'POST'),
+ "<TABLE BORDER=0 WIDTH=50%>",
+ "<font size=2>",
+ "<TR><TD>",
+ $logtag,
+ "</TD><TD>",
+ textfield(-name=>'login', -default=>$login,
+ -size=>15, -maxlength=>20),
+ "</TD><TR><TD>",
+ $passtag,
+ "</TD><TD>",
+ password_field(-name=>'oldpass', -size=>15, -maxlength=>25),
+ "</TD><TR><TD>",
+ $npasstag1,
+ "</TD><TD>",
+ password_field(-name=>'newpass', -size=>15, -maxlength=>25),
+ "</TD><TR><TD>",
+ $npasstag2,
+ "</TD><TD>",
+ password_field(-name=>'newpass2', -size=>15, -maxlength=>25),
+ "</TD><TR><TD></TD><TD>",
+ submit(-name=>"change"),reset(),
+ "</TD></TR></TABLE>",
+ "</font>",
+ endform(),
+ "<FONT color='red'>$error</FONT>",
+ end_html;
+}
+
+sub printsuccess(){
+ print header,
+ start_html(-title=> "Success",
+ -BGCOLOR=> 'WHITE'),
+ h1("Password Succesfully Changed"),
+ "<br>",
+ end_html;
+}
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/Makefile b/examples/LDAP/smbldap-tools/mkntpwd/Makefile
new file mode 100644
index 00000000000..23c9d471b0a
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/Makefile
@@ -0,0 +1,62 @@
+# Makefile for l0phtcrack - mudge@l0pht.com 11/1/96
+
+# C compiler
+#CC=cc
+CC=gcc
+
+# Uncomment the following to add symbols to the code for debugging
+#DEBUG=-g -Wall -D_DEBUG
+#DEBUG=-D_DEBUG
+
+# Optimization for the compiler
+#OPTIMIZE=
+OPTIMIZE=-O2
+
+# Choose your architecture
+# note that if you are on a big-endian machine like SUN's
+# I haven't tweaked the mem-cmp's and md4 stuff to be in
+# the correct order yet. You're on your own right now.
+#
+# FreeBSD
+ARCH=-DMPU8086
+STATIC=
+XLIBS=
+#
+# SUNOS
+#ARCH=-DBIGENDIAN
+#STATIC=
+#OPTIMIZE=-O2
+#XLIBS=
+#
+# ULTRA_SPARC w/ native compiler
+#ARCH=-DBIGENDIAN
+#STATIC=
+#OPTIMIZE=-fast -xO4 -xdepend -xchip=ultra -xarch=v8plus
+#XLIBS=
+#
+# SunOS/Solaris w/gcc
+#ARCH=-DBIGENDIAN -DTEST
+#STATIC=
+#OPTIMIZE=-O2
+#XLIBS=
+#
+# NeXTStep 3.2
+#CC=cc
+#ARCH=-DBIGENDIAN
+#STATIC=-Bstatic
+#OPTIMIZE=
+#XLIBS=
+
+CFLAGS= $(DEBUG) $(OPTIMIZE) $(ARCH) $(VISUAL) $(PERMUTE) $(STATIC)
+
+OBJS = getopt.o md4.o mkntpwd.o smbdes.o
+
+mkntpwd: $(OBJS)
+ $(CC) $(CFLAGS) $(XLIBS) -o mkntpwd $(OBJS)
+
+clean:
+ rm -f core *.o mkntpwd
+
+install: mkntpwd
+ install -m 555 mkntpwd $(PREFIX)/sbin/mkntpwd
+
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/getopt.c b/examples/LDAP/smbldap-tools/mkntpwd/getopt.c
new file mode 100644
index 00000000000..5b2e7a9100b
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/getopt.c
@@ -0,0 +1,756 @@
+/* Getopt for GNU.
+ NOTE: getopt is now part of the C library, so if you don't know what
+ "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
+ before changing it!
+
+ Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94
+ Free Software Foundation, Inc.
+
+This file is part of the GNU C Library. Its master source is NOT part of
+the C library, however. The master source lives in /gd/gnu/lib.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+ Ditto for AIX 3.2 and <stdlib.h>. */
+#ifndef _NO_PROTO
+#define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if !defined (__STDC__) || !__STDC__
+/* This is a separate conditional since some stdc systems
+ reject `defined (const)'. */
+#ifndef const
+#define const
+#endif
+#endif
+
+#include <stdio.h>
+
+#ifdef WIN32
+#include <string.h>
+#endif
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+ actually compiling the library itself. This code is part of the GNU C
+ Library, but also included in many other GNU distributions. Compiling
+ and linking in this code is a waste when using the GNU C library
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+ it is simpler to just do this in the source for each such file. */
+
+#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
+
+
+/* This needs to come after some library #include
+ to get __GNU_LIBRARY__ defined. */
+#ifdef __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+ contain conflicting prototypes for getopt. */
+#include <stdlib.h>
+#endif /* GNU C library. */
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+ but it behaves differently for the user, since it allows the user
+ to intersperse the options with the other arguments.
+
+ As `getopt' works, it permutes the elements of ARGV so that,
+ when it is done, all the options precede everything else. Thus
+ all application programs are extended to handle flexible argument order.
+
+ Setting the environment variable POSIXLY_CORRECT disables permutation.
+ Then the behavior is completely standard.
+
+ GNU application programs can use a third alternative mode in which
+ they can distinguish the relative order of options and other arguments. */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+char *optarg = NULL;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns EOF, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+/* XXX 1003.2 says this must be 1 before any call. */
+int optind = 0;
+
+/* The next char to be scanned in the option-element
+ in which the last option character we returned was found.
+ This allows us to pick up the scan where we left off.
+
+ If this is zero, or a null string, it means resume the scan
+ by advancing to the next ARGV-element. */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+ for unrecognized options. */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+ This must be initialized on some systems to avoid linking in the
+ system's own getopt implementation. */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+ If the caller did not specify anything,
+ the default is REQUIRE_ORDER if the environment variable
+ POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+ REQUIRE_ORDER means don't recognize them as options;
+ stop option processing when the first non-option is seen.
+ This is what Unix does.
+ This mode of operation is selected by either setting the environment
+ variable POSIXLY_CORRECT, or using `+' as the first character
+ of the list of option characters.
+
+ PERMUTE is the default. We permute the contents of ARGV as we scan,
+ so that eventually all the non-options are at the end. This allows options
+ to be given in any order, even with programs that were not written to
+ expect this.
+
+ RETURN_IN_ORDER is an option available to programs that were written
+ to expect options and other ARGV-elements in any order and that care about
+ the ordering of the two. We describe each non-option ARGV-element
+ as if it were the argument of an option with character code 1.
+ Using `-' as the first character of the list of option characters
+ selects this mode of operation.
+
+ The special argument `--' forces an end of option-scanning regardless
+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only
+ `--' can cause `getopt' to return EOF with `optind' != ARGC. */
+
+static enum
+{
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable. */
+static char *posixly_correct;
+
+#ifdef __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+ because there are many ways it can cause trouble.
+ On some systems, it contains special magic macros that don't work
+ in GCC. */
+#include <string.h>
+#define my_index strchr
+#else
+
+/* Avoid depending on library functions or files
+ whose names are inconsistent. */
+
+char *getenv ();
+
+static char *
+my_index (str, chr)
+ const char *str;
+ int chr;
+{
+ while (*str)
+ {
+ if (*str == chr)
+ return (char *) str;
+ str++;
+ }
+ return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+ If not using GCC, it is ok not to declare it. */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+ That was relevant to code that was here before. */
+#if !defined (__STDC__) || !__STDC__
+/* gcc with -traditional declares the built-in strlen to return int,
+ and has done so at least since version 2.4.5. -- rms. */
+extern int strlen (const char *);
+#endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+
+/* Handle permutation of arguments. */
+
+/* Describe the part of ARGV that contains non-options that have
+ been skipped. `first_nonopt' is the index in ARGV of the first of them;
+ `last_nonopt' is the index after the last of them. */
+
+static int first_nonopt;
+static int last_nonopt;
+
+/* Exchange two adjacent subsequences of ARGV.
+ One subsequence is elements [first_nonopt,last_nonopt)
+ which contains all the non-options that have been skipped so far.
+ The other is elements [last_nonopt,optind), which contains all
+ the options processed since those non-options were skipped.
+
+ `first_nonopt' and `last_nonopt' are relocated so that they describe
+ the new indices of the non-options in ARGV after they are moved. */
+
+static void
+exchange (argv)
+ char **argv;
+{
+ int bottom = first_nonopt;
+ int middle = last_nonopt;
+ int top = optind;
+ char *tem;
+
+ /* Exchange the shorter segment with the far end of the longer segment.
+ That puts the shorter segment into the right place.
+ It leaves the longer segment in the right place overall,
+ but it consists of two parts that need to be swapped next. */
+
+ while (top > middle && middle > bottom)
+ {
+ if (top - middle > middle - bottom)
+ {
+ /* Bottom segment is the short one. */
+ int len = middle - bottom;
+ register int i;
+
+ /* Swap it with the top part of the top segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[top - (middle - bottom) + i];
+ argv[top - (middle - bottom) + i] = tem;
+ }
+ /* Exclude the moved bottom segment from further swapping. */
+ top -= len;
+ }
+ else
+ {
+ /* Top segment is the short one. */
+ int len = top - middle;
+ register int i;
+
+ /* Swap it with the bottom part of the bottom segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[middle + i];
+ argv[middle + i] = tem;
+ }
+ /* Exclude the moved top segment from further swapping. */
+ bottom += len;
+ }
+ }
+
+ /* Update records for the slots the non-options now occupy. */
+
+ first_nonopt += (optind - last_nonopt);
+ last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made. */
+
+static const char *
+_getopt_initialize (optstring)
+ const char *optstring;
+{
+ /* Start processing options with ARGV-element 1 (since ARGV-element 0
+ is the program name); the sequence of previously skipped
+ non-option ARGV-elements is empty. */
+
+ first_nonopt = last_nonopt = optind = 1;
+
+ nextchar = NULL;
+
+ posixly_correct = getenv ("POSIXLY_CORRECT");
+
+ /* Determine how to handle the ordering of options and nonoptions. */
+
+ if (optstring[0] == '-')
+ {
+ ordering = RETURN_IN_ORDER;
+ ++optstring;
+ }
+ else if (optstring[0] == '+')
+ {
+ ordering = REQUIRE_ORDER;
+ ++optstring;
+ }
+ else if (posixly_correct != NULL)
+ ordering = REQUIRE_ORDER;
+ else
+ ordering = PERMUTE;
+
+ return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+ given in OPTSTRING.
+
+ If an element of ARGV starts with '-', and is not exactly "-" or "--",
+ then it is an option element. The characters of this element
+ (aside from the initial '-') are option characters. If `getopt'
+ is called repeatedly, it returns successively each of the option characters
+ from each of the option elements.
+
+ If `getopt' finds another option character, it returns that character,
+ updating `optind' and `nextchar' so that the next call to `getopt' can
+ resume the scan with the following option character or ARGV-element.
+
+ If there are no more option characters, `getopt' returns `EOF'.
+ Then `optind' is the index in ARGV of the first ARGV-element
+ that is not an option. (The ARGV-elements have been permuted
+ so that those that are not options now come last.)
+
+ OPTSTRING is a string containing the legitimate option characters.
+ If an option character is seen that is not listed in OPTSTRING,
+ return '?' after printing an error message. If you set `opterr' to
+ zero, the error message is suppressed but we still return '?'.
+
+ If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+ so the following text in the same ARGV-element, or the text of the following
+ ARGV-element, is returned in `optarg'. Two colons mean an option that
+ wants an optional arg; if there is text in the current ARGV-element,
+ it is returned in `optarg', otherwise `optarg' is set to zero.
+
+ If OPTSTRING starts with `-' or `+', it requests different methods of
+ handling the non-option ARGV-elements.
+ See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+ Long-named options begin with `--' instead of `-'.
+ Their names may be abbreviated as long as the abbreviation is unique
+ or is an exact match for some defined option. If they have an
+ argument, it follows the option name in the same ARGV-element, separated
+ from the option name by a `=', or else the in next ARGV-element.
+ When `getopt' finds a long-named option, it returns 0 if that option's
+ `flag' field is nonzero, the value of the option's `val' field
+ if the `flag' field is zero.
+
+ The elements of ARGV aren't really const, because we permute them.
+ But we pretend they're const in the prototype to be compatible
+ with other systems.
+
+ LONGOPTS is a vector of `struct option' terminated by an
+ element containing a name which is zero.
+
+ LONGIND returns the index in LONGOPT of the long-named option found.
+ It is only valid when a long-named option has been found by the most
+ recent call.
+
+ If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+ long-named options. */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+ int argc;
+ char *const *argv;
+ const char *optstring;
+ const struct option *longopts;
+ int *longind;
+ int long_only;
+{
+ optarg = NULL;
+
+ if (optind == 0)
+ optstring = _getopt_initialize (optstring);
+
+ if (nextchar == NULL || *nextchar == '\0')
+ {
+ /* Advance to the next ARGV-element. */
+
+ if (ordering == PERMUTE)
+ {
+ /* If we have just processed some options following some non-options,
+ exchange them so that the options come first. */
+
+ if (first_nonopt != last_nonopt && last_nonopt != optind)
+ exchange ((char **) argv);
+ else if (last_nonopt != optind)
+ first_nonopt = optind;
+
+ /* Skip any additional non-options
+ and extend the range of non-options previously skipped. */
+
+ while (optind < argc
+ && (argv[optind][0] != '-' || argv[optind][1] == '\0'))
+ optind++;
+ last_nonopt = optind;
+ }
+
+ /* The special ARGV-element `--' means premature end of options.
+ Skip it like a null option,
+ then exchange with previous non-options as if it were an option,
+ then skip everything else like a non-option. */
+
+ if (optind != argc && !strcmp (argv[optind], "--"))
+ {
+ optind++;
+
+ if (first_nonopt != last_nonopt && last_nonopt != optind)
+ exchange ((char **) argv);
+ else if (first_nonopt == last_nonopt)
+ first_nonopt = optind;
+ last_nonopt = argc;
+
+ optind = argc;
+ }
+
+ /* If we have done all the ARGV-elements, stop the scan
+ and back over any non-options that we skipped and permuted. */
+
+ if (optind == argc)
+ {
+ /* Set the next-arg-index to point at the non-options
+ that we previously skipped, so the caller will digest them. */
+ if (first_nonopt != last_nonopt)
+ optind = first_nonopt;
+ return EOF;
+ }
+
+ /* If we have come to a non-option and did not permute it,
+ either stop the scan or describe it to the caller and pass it by. */
+
+ if ((argv[optind][0] != '-' || argv[optind][1] == '\0'))
+ {
+ if (ordering == REQUIRE_ORDER)
+ return EOF;
+ optarg = argv[optind++];
+ return 1;
+ }
+
+ /* We have found another option-ARGV-element.
+ Skip the initial punctuation. */
+
+ nextchar = (argv[optind] + 1
+ + (longopts != NULL && argv[optind][1] == '-'));
+ }
+
+ /* Decode the current option-ARGV-element. */
+
+ /* Check whether the ARGV-element is a long option.
+
+ If long_only and the ARGV-element has the form "-f", where f is
+ a valid short option, don't consider it an abbreviated form of
+ a long option that starts with f. Otherwise there would be no
+ way to give the -f short option.
+
+ On the other hand, if there's a long option "fubar" and
+ the ARGV-element is "-fu", do consider that an abbreviation of
+ the long option, just like "--fu", and not "-f" with arg "u".
+
+ This distinction seems to be the most useful approach. */
+
+ if (longopts != NULL
+ && (argv[optind][1] == '-'
+ || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = 0; /* set to zero by Anton */
+ int option_index;
+
+ for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp(p->name, nextchar, nameend - nextchar))
+ {
+ if ((unsigned int)(nameend - nextchar) == (unsigned int)strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+
+ if (ambig && !exact)
+ {
+ if (opterr)
+ fprintf (stderr, "%s: option `%s' is ambiguous\n",
+ argv[0], argv[optind]);
+ nextchar += strlen (nextchar);
+ optind++;
+ return '?';
+ }
+
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ optind++;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ optarg = nameend + 1;
+ else
+ {
+ if (opterr)
+ {
+ if (argv[optind - 1][1] == '-')
+ /* --option */
+ fprintf (stderr,
+ "%s: option `--%s' doesn't allow an argument\n",
+ argv[0], pfound->name);
+ else
+ /* +option or -option */
+ fprintf (stderr,
+ "%s: option `%c%s' doesn't allow an argument\n",
+ argv[0], argv[optind - 1][0], pfound->name);
+ }
+ nextchar += strlen (nextchar);
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (optind < argc)
+ optarg = argv[optind++];
+ else
+ {
+ if (opterr)
+ fprintf (stderr, "%s: option `%s' requires an argument\n",
+ argv[0], argv[optind - 1]);
+ nextchar += strlen (nextchar);
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ nextchar += strlen (nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+
+ /* Can't find it as a long option. If this is not getopt_long_only,
+ or the option starts with '--' or is not a valid short
+ option, then it's an error.
+ Otherwise interpret it as a short option. */
+ if (!long_only || argv[optind][1] == '-'
+ || my_index (optstring, *nextchar) == NULL)
+ {
+ if (opterr)
+ {
+ if (argv[optind][1] == '-')
+ /* --option */
+ fprintf (stderr, "%s: unrecognized option `--%s'\n",
+ argv[0], nextchar);
+ else
+ /* +option or -option */
+ fprintf (stderr, "%s: unrecognized option `%c%s'\n",
+ argv[0], argv[optind][0], nextchar);
+ }
+ nextchar = (char *) "";
+ optind++;
+ return '?';
+ }
+ }
+
+ /* Look at and handle the next short option-character. */
+
+ {
+ char c = *nextchar++;
+ char *temp = my_index (optstring, c);
+
+ /* Increment `optind' when we start to process its last character. */
+ if (*nextchar == '\0')
+ ++optind;
+
+ if (temp == NULL || c == ':')
+ {
+ if (opterr)
+ {
+ if (posixly_correct)
+ /* 1003.2 specifies the format of this message. */
+ fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c);
+ else
+ fprintf (stderr, "%s: invalid option -- %c\n", argv[0], c);
+ }
+ optopt = c;
+ return '?';
+ }
+ if (temp[1] == ':')
+ {
+ if (temp[2] == ':')
+ {
+ /* This is an option that accepts an argument optionally. */
+ if (*nextchar != '\0')
+ {
+ optarg = nextchar;
+ optind++;
+ }
+ else
+ optarg = NULL;
+ nextchar = NULL;
+ }
+ else
+ {
+ /* This is an option that requires an argument. */
+ if (*nextchar != '\0')
+ {
+ optarg = nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ optind++;
+ }
+ else if (optind == argc)
+ {
+ if (opterr)
+ {
+ /* 1003.2 specifies the format of this message. */
+ fprintf (stderr, "%s: option requires an argument -- %c\n",
+ argv[0], c);
+ }
+ optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ }
+ else
+ /* We already incremented `optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ optarg = argv[optind++];
+ nextchar = NULL;
+ }
+ }
+ return c;
+ }
+}
+
+int
+getopt (argc, argv, optstring)
+ int argc;
+ char *const *argv;
+ const char *optstring;
+{
+ return _getopt_internal (argc, argv, optstring,
+ (const struct option *) 0,
+ (int *) 0,
+ 0);
+}
+
+#endif /* _LIBC or not __GNU_LIBRARY__. */
+
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+ the above definition of `getopt'. */
+
+int
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+
+ c = getopt (argc, argv, "abc:d:0123456789");
+ if (c == EOF)
+ break;
+
+ switch (c)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf ("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf ("option %c\n", c);
+ break;
+
+ case 'a':
+ printf ("option a\n");
+ break;
+
+ case 'b':
+ printf ("option b\n");
+ break;
+
+ case 'c':
+ printf ("option c with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf ("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf ("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf ("%s ", argv[optind++]);
+ printf ("\n");
+ }
+
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/getopt.h b/examples/LDAP/smbldap-tools/mkntpwd/getopt.h
new file mode 100644
index 00000000000..f3696d955dc
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/getopt.h
@@ -0,0 +1,133 @@
+/* Declarations for getopt.
+ Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
+
+This file is part of the GNU C Library. Its master source is NOT part of
+the C library, however. The master source lives in /gd/gnu/lib.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#ifndef _GETOPT_H
+#define _GETOPT_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns EOF, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized. */
+
+extern int optopt;
+
+/* Describe the long-named options requested by the application.
+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ of `struct option' terminated by an element containing a name which is
+ zero.
+
+ The field `has_arg' is:
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
+
+ If the field `flag' is not NULL, it points to a variable that is set
+ to the value given in the field `val' when the option is found, but
+ left unchanged if the option is not found.
+
+ To have a long-named option do something other than set an `int' to
+ a compiled-in constant, such as set a value from `optarg', set the
+ option's `flag' field to zero and its `val' field to a nonzero
+ value (the equivalent single-letter option character, if there is
+ one). For long options that have a zero `flag' field, `getopt'
+ returns the contents of the `val' field. */
+
+struct option
+{
+#if defined (__STDC__) && __STDC__
+ const char *name;
+#else
+ char *name;
+#endif
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'. */
+
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
+
+#if defined (__STDC__) && __STDC__
+#ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+ differences in the consts, in stdlib.h. To avoid compilation
+ errors, only prototype getopt for the GNU C library. */
+extern int getopt (int argc, char *const *argv, const char *shortopts);
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* __GNU_LIBRARY__ */
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+ const struct option *longopts, int *longind);
+extern int getopt_long_only (int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind);
+
+/* Internal only. Users should not call this directly. */
+extern int _getopt_internal (int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind,
+ int long_only);
+#else /* not __STDC__ */
+extern int getopt ();
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H */
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/md4.c b/examples/LDAP/smbldap-tools/mkntpwd/md4.c
new file mode 100644
index 00000000000..1c9c2e6ecd5
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/md4.c
@@ -0,0 +1,171 @@
+/*
+ Unix SMB/Netbios implementation.
+ Version 1.9.
+ a implementation of MD4 designed for use in the SMB authentication protocol
+ Copyright (C) Andrew Tridgell 1997
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+/* NOTE: This code makes no attempt to be fast!
+
+ It assumes that a int is at least 32 bits long
+*/
+
+typedef unsigned int uint32;
+
+static uint32 A, B, C, D;
+
+static uint32 F(uint32 X, uint32 Y, uint32 Z)
+{
+ return (X&Y) | ((~X)&Z);
+}
+
+static uint32 G(uint32 X, uint32 Y, uint32 Z)
+{
+ return (X&Y) | (X&Z) | (Y&Z);
+}
+
+static uint32 H(uint32 X, uint32 Y, uint32 Z)
+{
+ return X^Y^Z;
+}
+
+static uint32 lshift(uint32 x, int s)
+{
+ x &= 0xFFFFFFFF;
+ return ((x<<s)&0xFFFFFFFF) | (x>>(32-s));
+}
+
+#define ROUND1(a,b,c,d,k,s) a = lshift(a + F(b,c,d) + X[k], s)
+#define ROUND2(a,b,c,d,k,s) a = lshift(a + G(b,c,d) + X[k] + (uint32)0x5A827999,s)
+#define ROUND3(a,b,c,d,k,s) a = lshift(a + H(b,c,d) + X[k] + (uint32)0x6ED9EBA1,s)
+
+/* this applies md4 to 64 byte chunks */
+static void mdfour64(uint32 *M)
+{
+ int j;
+ uint32 AA, BB, CC, DD;
+ uint32 X[16];
+
+ for (j=0;j<16;j++)
+ X[j] = M[j];
+
+ AA = A; BB = B; CC = C; DD = D;
+
+ ROUND1(A,B,C,D, 0, 3); ROUND1(D,A,B,C, 1, 7);
+ ROUND1(C,D,A,B, 2, 11); ROUND1(B,C,D,A, 3, 19);
+ ROUND1(A,B,C,D, 4, 3); ROUND1(D,A,B,C, 5, 7);
+ ROUND1(C,D,A,B, 6, 11); ROUND1(B,C,D,A, 7, 19);
+ ROUND1(A,B,C,D, 8, 3); ROUND1(D,A,B,C, 9, 7);
+ ROUND1(C,D,A,B, 10, 11); ROUND1(B,C,D,A, 11, 19);
+ ROUND1(A,B,C,D, 12, 3); ROUND1(D,A,B,C, 13, 7);
+ ROUND1(C,D,A,B, 14, 11); ROUND1(B,C,D,A, 15, 19);
+
+ ROUND2(A,B,C,D, 0, 3); ROUND2(D,A,B,C, 4, 5);
+ ROUND2(C,D,A,B, 8, 9); ROUND2(B,C,D,A, 12, 13);
+ ROUND2(A,B,C,D, 1, 3); ROUND2(D,A,B,C, 5, 5);
+ ROUND2(C,D,A,B, 9, 9); ROUND2(B,C,D,A, 13, 13);
+ ROUND2(A,B,C,D, 2, 3); ROUND2(D,A,B,C, 6, 5);
+ ROUND2(C,D,A,B, 10, 9); ROUND2(B,C,D,A, 14, 13);
+ ROUND2(A,B,C,D, 3, 3); ROUND2(D,A,B,C, 7, 5);
+ ROUND2(C,D,A,B, 11, 9); ROUND2(B,C,D,A, 15, 13);
+
+ ROUND3(A,B,C,D, 0, 3); ROUND3(D,A,B,C, 8, 9);
+ ROUND3(C,D,A,B, 4, 11); ROUND3(B,C,D,A, 12, 15);
+ ROUND3(A,B,C,D, 2, 3); ROUND3(D,A,B,C, 10, 9);
+ ROUND3(C,D,A,B, 6, 11); ROUND3(B,C,D,A, 14, 15);
+ ROUND3(A,B,C,D, 1, 3); ROUND3(D,A,B,C, 9, 9);
+ ROUND3(C,D,A,B, 5, 11); ROUND3(B,C,D,A, 13, 15);
+ ROUND3(A,B,C,D, 3, 3); ROUND3(D,A,B,C, 11, 9);
+ ROUND3(C,D,A,B, 7, 11); ROUND3(B,C,D,A, 15, 15);
+
+ A += AA; B += BB; C += CC; D += DD;
+
+ A &= 0xFFFFFFFF; B &= 0xFFFFFFFF;
+ C &= 0xFFFFFFFF; D &= 0xFFFFFFFF;
+
+ for (j=0;j<16;j++)
+ X[j] = 0;
+}
+
+static void copy64(uint32 *M, unsigned char *in)
+{
+ int i;
+
+ for (i=0;i<16;i++)
+ M[i] = (in[i*4+3]<<24) | (in[i*4+2]<<16) |
+ (in[i*4+1]<<8) | (in[i*4+0]<<0);
+}
+
+static void copy4(unsigned char *out,uint32 x)
+{
+ out[0] = x&0xFF;
+ out[1] = (x>>8)&0xFF;
+ out[2] = (x>>16)&0xFF;
+ out[3] = (x>>24)&0xFF;
+}
+
+/* produce a md4 message digest from data of length n bytes */
+void mdfour(unsigned char *out, unsigned char *in, int n)
+{
+ unsigned char buf[128];
+ uint32 M[16];
+ uint32 b = n * 8;
+ int i;
+
+ A = 0x67452301;
+ B = 0xefcdab89;
+ C = 0x98badcfe;
+ D = 0x10325476;
+
+ while (n > 64) {
+ copy64(M, in);
+ mdfour64(M);
+ in += 64;
+ n -= 64;
+ }
+
+ for (i=0;i<128;i++)
+ buf[i] = 0;
+ memcpy(buf, in, n);
+ buf[n] = 0x80;
+
+ if (n <= 55) {
+ copy4(buf+56, b);
+ copy64(M, buf);
+ mdfour64(M);
+ } else {
+ copy4(buf+120, b);
+ copy64(M, buf);
+ mdfour64(M);
+ copy64(M, buf+64);
+ mdfour64(M);
+ }
+
+ for (i=0;i<128;i++)
+ buf[i] = 0;
+ copy64(M, buf);
+
+ copy4(out, A);
+ copy4(out+4, B);
+ copy4(out+8, C);
+ copy4(out+12, D);
+
+ A = B = C = D = 0;
+}
+
+
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.c b/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.c
new file mode 100644
index 00000000000..0c7d61e1341
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.c
@@ -0,0 +1,253 @@
+/*
+ This code is based on work from
+ L0phtcrack 1.5 06.02.97 mudge@l0pht.com
+
+ The code also contains sources from:
+ . routines from the samba code source
+ md4.c smbdes.c
+
+ Anton Roeckseisen (anton@genua.de)
+
+*/
+
+/*
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "mkntpwd.h"
+
+void str_to_key(unsigned char *,unsigned char *);
+void usage(char *);
+int PutUniCode(char *dst,char *src);
+void printlanhash(char *tmp);
+void mdfour(unsigned char *out, unsigned char *in, int n);
+void E_P16(unsigned char *p14,unsigned char *p16);
+
+
+void main(int argc, char **argv) {
+ extern char *optarg;
+ int c;
+
+ int printlan = 0;
+ char lanpwd[LMPASSWDLEN+1];
+ int printnt = 0;
+ char inputfile[FILENAMEBUFFER+1] = "";
+ FILE* InputFilePtr;
+ int just_pwd = 0;
+ int i;
+ char hashout[17];
+
+ char ntpasswd[NTPASSWDLEN+1];
+ char *hold;
+ unsigned char *p16;
+ int uni_len;
+ char passwd[NTPASSWDLEN+1];
+
+ if (argc==1)
+ usage(argv[0]);
+
+ if (argc==2)
+ just_pwd=1;
+ else
+ just_pwd=0;
+
+ lanpwd[0] = '\0';
+ ntpasswd[0] = '\0';
+
+ while ( (c = getopt(argc, argv, "L:N:f:")) != EOF){
+ switch(c) {
+ case 'L':
+ printlan++;
+ strncpy(lanpwd,optarg,LMPASSWDLEN);
+ lanpwd[LMPASSWDLEN]='\0';
+ for (i=0;i<LMPASSWDLEN;i++)
+ lanpwd[i]=toupper(lanpwd[i]);
+ break;
+ case 'N':
+ printnt++;
+ strncpy(passwd,optarg,NTPASSWDLEN);
+ passwd[NTPASSWDLEN]='\0';
+ break;
+ case 'f':
+ strncpy(inputfile,optarg,FILENAMEBUFFER);
+ inputfile[FILENAMEBUFFER]='\0';
+ break;
+ default:
+ usage(argv[0]);
+ }
+ }
+
+ /* Get password from file or STDIN */
+ if (inputfile[0]!='\0') {
+
+ just_pwd=0; /* make sure no shit is happening... */
+
+ /* get NT-password (longer) */
+ if (strcmp(inputfile,"-")==0) {
+ fgets(passwd,NTPASSWDLEN,stdin);
+ } else {
+ if ((InputFilePtr=fopen(inputfile,"r")) == NULL)
+ fprintf(stderr,"Couldn't open passwordfile: %s",inputfile) ;
+ fgets(passwd,NTPASSWDLEN,InputFilePtr);
+ fclose(InputFilePtr);
+ }
+ while (strlen(passwd)>0 && passwd[strlen(passwd)-1]=='\n')
+ passwd[strlen(passwd)-1]='\0';
+
+ /* create LANMAN-password (shorter) */
+ strncpy(lanpwd,passwd,LMPASSWDLEN);
+ lanpwd[LMPASSWDLEN]='\0';
+ for (i=0;i<LMPASSWDLEN;i++)
+ lanpwd[i]=toupper(lanpwd[i]);
+ printlan++;
+ printnt++;
+
+ }
+
+
+ /* Assume the one and only Arg is the new password! */
+
+ if (argc>1 && just_pwd==1) {
+ strncpy(lanpwd,argv[1],LMPASSWDLEN);
+ lanpwd[LMPASSWDLEN]='\0';
+ for (i=0;i<LMPASSWDLEN;i++)
+ lanpwd[i]=toupper(lanpwd[i]);
+ printlan++;
+
+ strncpy(passwd,argv[1],NTPASSWDLEN);
+ passwd[NTPASSWDLEN]='\0';
+ printnt++;
+ }
+
+ if (printlan >0) {
+ memset(hashout,'\0',17);
+ E_P16((uchar *)lanpwd,hashout);
+ printlanhash(hashout);
+ }
+
+ if (printnt >0) {
+
+ if (printlan>0) printf(":");
+
+ memset(ntpasswd, '\0', sizeof(ntpasswd));
+
+ if (passwd[strlen(passwd)-1] == '\n') /* strip the \n - this
+ is done in LowerString for the case sensitive
+ check */
+ passwd[strlen(passwd)-1] = '\0';
+
+ hold = (char *)malloc(NTPASSWDLEN * 2); /* grab space for
+ unicode */
+ if (hold == NULL){
+ fprintf(stderr, "out of memory...crackntdialog hold\n");
+ exit(1);
+ }
+
+ uni_len = PutUniCode(hold, passwd); /* convert to
+ unicode and return correct
+ unicode length for md4 */
+
+ p16 = (unsigned char*)malloc(17); /* grab space for md4 hash */
+ if (p16 == NULL){
+ fprintf(stderr, "out of memory...crackntdialect p16\n");
+ exit(1);
+ }
+
+ memset(p16,'\0',17);
+ mdfour(p16,hold, uni_len);
+
+ printlanhash(p16);
+
+ free(p16);
+ free(hold);
+ }
+
+ printf("\n");
+
+ exit(0);
+
+}
+
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+
+void usage(char *progname){
+ char *p;
+
+ p = strrchr(progname, '\\');
+ if (p == NULL)
+ p = progname;
+ else
+ p++;
+
+ fprintf(stderr, "Usage: %s [-L lanmgrpwd] [-N ntpasswd]\n",p);
+ fprintf(stderr, " %s password\n",p);
+ fprintf(stderr, " %s -f [-] [filename]\n\n",p);
+ fprintf(stderr, " -L lanmgrpasswd LanManager cleartextpwd <= 14 chars\n");
+ fprintf(stderr, " -N ntpasswd NT cleartextpwd <=128 chars (usually <=14)\n\n");
+ fprintf(stderr, " with both options present the encrypted LanManager-Pwd is \n");
+ fprintf(stderr, " printed first, followed by a ':' and the encrypted NT-Pwd.\n\n");
+ fprintf(stderr, " The second usage behaves like %s -L pwd -N pwd\n\n",p);
+ fprintf(stderr, " The third usage reads the password from STDIN or a File. Printout\n");
+ fprintf(stderr, " is the same as second.\n\n");
+ fprintf(stderr, "anton@genua.de\n\n");
+ exit(1);
+}
+
+
+/*******************************************************************
+write a string in unicoode format
+********************************************************************/
+int PutUniCode(char *dst,char *src)
+{
+ int ret = 0;
+ while (*src) {
+ dst[ret++] = src[0];
+ dst[ret++] = 0;
+ src++;
+ }
+ dst[ret++]=0;
+ dst[ret++]=0;
+ return(ret-2); /* the way they do the md4 hash they don't represent
+ the last null. ie 'A' becomes just 0x41 0x00 - not
+ 0x41 0x00 0x00 0x00 */
+}
+
+/*
+ print binary buffer as hex-string
+*/
+void printlanhash(char *tmp) {
+
+ int i;
+ unsigned char c;
+ char outbuffer[33];
+
+
+ /* build string from binary hash */
+ for(i=0;i<16;i++) {
+ c=tmp[i];
+ sprintf(outbuffer+2*i,"%x",(c>>4) & 0x0f);
+ sprintf(outbuffer+2*i+1,"%x",c & 0x0f);
+ }
+
+ /* convert to uppercase */
+ for(i=0;i<32;i++)
+ outbuffer[i] = toupper(outbuffer[i]);
+ outbuffer[32]='\0';
+
+ /* print out hex-string */
+ printf("%s",outbuffer);
+}
+
+
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.h b/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.h
new file mode 100644
index 00000000000..9a020b8d286
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/mkntpwd.h
@@ -0,0 +1,17 @@
+#include <memory.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+
+typedef short int16;
+typedef int int32;
+typedef unsigned short uint16;
+typedef unsigned int uint32;
+typedef unsigned char uchar;
+
+#define MAX_STRING 255
+#define MAX_WORD 128
+#define LMPASSWDLEN 14
+#define NTPASSWDLEN 128
+#define FILENAMEBUFFER 128
diff --git a/examples/LDAP/smbldap-tools/mkntpwd/smbdes.c b/examples/LDAP/smbldap-tools/mkntpwd/smbdes.c
new file mode 100644
index 00000000000..e4f8280f9bc
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/mkntpwd/smbdes.c
@@ -0,0 +1,337 @@
+/*
+ Unix SMB/Netbios implementation.
+ Version 1.9.
+
+ a partial implementation of DES designed for use in the
+ SMB authentication protocol
+
+ Copyright (C) Andrew Tridgell 1997
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+/* NOTES:
+
+ This code makes no attempt to be fast! In fact, it is a very
+ slow implementation
+
+ This code is NOT a complete DES implementation. It implements only
+ the minimum necessary for SMB authentication, as used by all SMB
+ products (including every copy of Microsoft Windows95 ever sold)
+
+ In particular, it can only do a unchained forward DES pass. This
+ means it is not possible to use this code for encryption/decryption
+ of data, instead it is only useful as a "hash" algorithm.
+
+ There is no entry point into this code that allows normal DES operation.
+
+ I believe this means that this code does not come under ITAR
+ regulations but this is NOT a legal opinion. If you are concerned
+ about the applicability of ITAR regulations to this code then you
+ should confirm it for yourself (and maybe let me know if you come
+ up with a different answer to the one above)
+*/
+
+
+
+static int perm1[56] = {57, 49, 41, 33, 25, 17, 9,
+ 1, 58, 50, 42, 34, 26, 18,
+ 10, 2, 59, 51, 43, 35, 27,
+ 19, 11, 3, 60, 52, 44, 36,
+ 63, 55, 47, 39, 31, 23, 15,
+ 7, 62, 54, 46, 38, 30, 22,
+ 14, 6, 61, 53, 45, 37, 29,
+ 21, 13, 5, 28, 20, 12, 4};
+
+static int perm2[48] = {14, 17, 11, 24, 1, 5,
+ 3, 28, 15, 6, 21, 10,
+ 23, 19, 12, 4, 26, 8,
+ 16, 7, 27, 20, 13, 2,
+ 41, 52, 31, 37, 47, 55,
+ 30, 40, 51, 45, 33, 48,
+ 44, 49, 39, 56, 34, 53,
+ 46, 42, 50, 36, 29, 32};
+
+static int perm3[64] = {58, 50, 42, 34, 26, 18, 10, 2,
+ 60, 52, 44, 36, 28, 20, 12, 4,
+ 62, 54, 46, 38, 30, 22, 14, 6,
+ 64, 56, 48, 40, 32, 24, 16, 8,
+ 57, 49, 41, 33, 25, 17, 9, 1,
+ 59, 51, 43, 35, 27, 19, 11, 3,
+ 61, 53, 45, 37, 29, 21, 13, 5,
+ 63, 55, 47, 39, 31, 23, 15, 7};
+
+static int perm4[48] = { 32, 1, 2, 3, 4, 5,
+ 4, 5, 6, 7, 8, 9,
+ 8, 9, 10, 11, 12, 13,
+ 12, 13, 14, 15, 16, 17,
+ 16, 17, 18, 19, 20, 21,
+ 20, 21, 22, 23, 24, 25,
+ 24, 25, 26, 27, 28, 29,
+ 28, 29, 30, 31, 32, 1};
+
+static int perm5[32] = { 16, 7, 20, 21,
+ 29, 12, 28, 17,
+ 1, 15, 23, 26,
+ 5, 18, 31, 10,
+ 2, 8, 24, 14,
+ 32, 27, 3, 9,
+ 19, 13, 30, 6,
+ 22, 11, 4, 25};
+
+
+static int perm6[64] ={ 40, 8, 48, 16, 56, 24, 64, 32,
+ 39, 7, 47, 15, 55, 23, 63, 31,
+ 38, 6, 46, 14, 54, 22, 62, 30,
+ 37, 5, 45, 13, 53, 21, 61, 29,
+ 36, 4, 44, 12, 52, 20, 60, 28,
+ 35, 3, 43, 11, 51, 19, 59, 27,
+ 34, 2, 42, 10, 50, 18, 58, 26,
+ 33, 1, 41, 9, 49, 17, 57, 25};
+
+
+static int sc[16] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};
+
+static int sbox[8][4][16] = {
+ {{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7},
+ {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8},
+ {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0},
+ {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}},
+
+ {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10},
+ {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5},
+ {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15},
+ {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}},
+
+ {{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8},
+ {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1},
+ {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7},
+ {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}},
+
+ {{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15},
+ {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9},
+ {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4},
+ {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}},
+
+ {{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9},
+ {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6},
+ {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14},
+ {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}},
+
+ {{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11},
+ {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8},
+ {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6},
+ {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}},
+
+ {{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1},
+ {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6},
+ {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2},
+ {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}},
+
+ {{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7},
+ {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2},
+ {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8},
+ {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}};
+
+static void permute(char *out, char *in, int *p, int n)
+{
+ int i;
+ for (i=0;i<n;i++)
+ out[i] = in[p[i]-1];
+}
+
+static void lshift(char *d, int count, int n)
+{
+ char out[64];
+ int i;
+ for (i=0;i<n;i++)
+ out[i] = d[(i+count)%n];
+ for (i=0;i<n;i++)
+ d[i] = out[i];
+}
+
+static void concat(char *out, char *in1, char *in2, int l1, int l2)
+{
+ while (l1--)
+ *out++ = *in1++;
+ while (l2--)
+ *out++ = *in2++;
+}
+
+static void xor(char *out, char *in1, char *in2, int n)
+{
+ int i;
+ for (i=0;i<n;i++)
+ out[i] = in1[i] ^ in2[i];
+}
+
+static void dohash(char *out, char *in, char *key)
+{
+ int i, j, k;
+ char pk1[56];
+ char c[28];
+ char d[28];
+ char cd[56];
+ char ki[16][48];
+ char pd1[64];
+ char l[32], r[32];
+ char rl[64];
+
+ permute(pk1, key, perm1, 56);
+
+ for (i=0;i<28;i++)
+ c[i] = pk1[i];
+ for (i=0;i<28;i++)
+ d[i] = pk1[i+28];
+
+ for (i=0;i<16;i++) {
+ lshift(c, sc[i], 28);
+ lshift(d, sc[i], 28);
+
+ concat(cd, c, d, 28, 28);
+ permute(ki[i], cd, perm2, 48);
+ }
+
+ permute(pd1, in, perm3, 64);
+
+ for (j=0;j<32;j++) {
+ l[j] = pd1[j];
+ r[j] = pd1[j+32];
+ }
+
+ for (i=0;i<16;i++) {
+ char er[48];
+ char erk[48];
+ char b[8][6];
+ char cb[32];
+ char pcb[32];
+ char r2[32];
+
+ permute(er, r, perm4, 48);
+
+ xor(erk, er, ki[i], 48);
+
+ for (j=0;j<8;j++)
+ for (k=0;k<6;k++)
+ b[j][k] = erk[j*6 + k];
+
+ for (j=0;j<8;j++) {
+ int m, n;
+ m = (b[j][0]<<1) | b[j][5];
+
+ n = (b[j][1]<<3) | (b[j][2]<<2) | (b[j][3]<<1) | b[j][4];
+
+ for (k=0;k<4;k++)
+ b[j][k] = (sbox[j][m][n] & (1<<(3-k)))?1:0;
+ }
+
+ for (j=0;j<8;j++)
+ for (k=0;k<4;k++)
+ cb[j*4+k] = b[j][k];
+ permute(pcb, cb, perm5, 32);
+
+ xor(r2, l, pcb, 32);
+
+ for (j=0;j<32;j++)
+ l[j] = r[j];
+
+ for (j=0;j<32;j++)
+ r[j] = r2[j];
+ }
+
+ concat(rl, r, l, 32, 32);
+
+ permute(out, rl, perm6, 64);
+}
+
+static void str_to_key(unsigned char *str,unsigned char *key)
+{
+ int i;
+
+ key[0] = str[0]>>1;
+ key[1] = ((str[0]&0x01)<<6) | (str[1]>>2);
+ key[2] = ((str[1]&0x03)<<5) | (str[2]>>3);
+ key[3] = ((str[2]&0x07)<<4) | (str[3]>>4);
+ key[4] = ((str[3]&0x0F)<<3) | (str[4]>>5);
+ key[5] = ((str[4]&0x1F)<<2) | (str[5]>>6);
+ key[6] = ((str[5]&0x3F)<<1) | (str[6]>>7);
+ key[7] = str[6]&0x7F;
+ for (i=0;i<8;i++) {
+ key[i] = (key[i]<<1);
+ }
+}
+
+
+static void smbhash(unsigned char *out, unsigned char *in, unsigned char *key)
+{
+ int i;
+ char outb[64];
+ char inb[64];
+ char keyb[64];
+ unsigned char key2[8];
+
+ str_to_key(key, key2);
+
+ for (i=0;i<64;i++) {
+ inb[i] = (in[i/8] & (1<<(7-(i%8)))) ? 1 : 0;
+ keyb[i] = (key2[i/8] & (1<<(7-(i%8)))) ? 1 : 0;
+ outb[i] = 0;
+ }
+
+ dohash(outb, inb, keyb);
+
+ for (i=0;i<8;i++) {
+ out[i] = 0;
+ }
+
+ for (i=0;i<64;i++) {
+ if (outb[i])
+ out[i/8] |= (1<<(7-(i%8)));
+ }
+}
+
+void E_P16(unsigned char *p14,unsigned char *p16)
+{
+ unsigned char sp8[8] = {0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
+ smbhash(p16, sp8, p14);
+ smbhash(p16+8, sp8, p14+7);
+}
+
+void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24)
+{
+ smbhash(p24, c8, p21);
+ smbhash(p24+8, c8, p21+7);
+ smbhash(p24+16, c8, p21+14);
+}
+
+void cred_hash1(unsigned char *out,unsigned char *in,unsigned char *key)
+{
+ unsigned char buf[8];
+
+ smbhash(buf, in, key);
+ smbhash(out, buf, key+9);
+}
+
+void cred_hash2(unsigned char *out,unsigned char *in,unsigned char *key)
+{
+ unsigned char buf[8];
+ static unsigned char key2[8];
+
+ smbhash(buf, in, key);
+ key2[0] = key[7];
+ smbhash(out, buf, key2);
+}
+
diff --git a/examples/LDAP/smbldap-tools/smbldap-groupadd.pl b/examples/LDAP/smbldap-tools/smbldap-groupadd.pl
new file mode 100755
index 00000000000..6ced1eed2d0
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-groupadd.pl
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-groupadd.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-groupadd : group (posix) add
+
+use strict;
+use smbldap_tools;
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('og:?', \%Options);
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-go?] groupname\n";
+ print " -g gid\n";
+ print " -o gid is not unique\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+my $_groupName = $ARGV[0];
+
+if (defined(get_group_dn($_groupName))) {
+ print "$0: group $_groupName exists\n";
+ exit (6);
+}
+
+my $_groupGidNumber = $Options{'g'};
+
+if (!group_add($_groupName, $_groupGidNumber, $Options{'o'})) {
+ print "$0: error adding group $_groupName\n";
+ exit (6);
+}
+
+exit(0);
+
+########################################
+
+=head1 NAME
+
+ smbldap-groupadd.pl - Create a new group
+
+=head1 SYNOPSIS
+
+ smbldap-groupadd.pl [-g gid [-o]] group
+
+=head1 DESCRIPTION
+ The smbldap-groupadd.pl command creates a new group account using
+ the values specified on the command line and the default values
+ from the system. The new group will be entered into the system
+ files as needed. The options which apply to the groupadd command are
+
+ -g gid The numerical value of the group's ID. This value must be
+ unique, unless the -o option is used. The value must be non-
+ negative. The default is to use the smallest ID value greater
+ than 1000 and greater than every other group.
+
+=head1 SEE ALSO
+
+ groupadd(1)
+
+=cut
+
+#'
+
diff --git a/examples/LDAP/smbldap-tools/smbldap-groupdel.pl b/examples/LDAP/smbldap-tools/smbldap-groupdel.pl
new file mode 100755
index 00000000000..c5b64c3d4ef
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-groupdel.pl
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-groupdel.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-groupdel : group (posix) deletion
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+#####################
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('?', \%Options);
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 groupname\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+my $_groupName = $ARGV[0];
+
+my $dn_line;
+if (!defined($dn_line = get_group_dn($_groupName))) {
+ print "$0: group $_groupName doesn't exist\n";
+ exit (6);
+}
+
+my $dn = get_dn_from_line($dn_line);
+
+my $rc = system "$ldapdelete $dn >/dev/null";
+die "$0: error while deleting group $_groupName\n"
+ unless ($rc == 0);
+
+my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd restart > /dev/null 2>&1";
+}
+
+#if (defined($dn_line = get_group_dn($_groupName))) {
+# print "$0: failed to delete group\n";
+# exit (7);
+#}
+
+
+exit (0);
+
+############################################################
+
+=head1 NAME
+
+ smbldap-groupdel.pl - Delete a group
+
+=head1 SYNOPSIS
+
+ smbldap-groupdel.pl group
+
+=head1 DESCRIPTION
+
+ The smbldap-groupdel.pl command modifies the system account files,
+ deleting all entries that refer to group. The named group must exist.
+
+ You must manually check all filesystems to insure that no files remain
+ with the named group as the file group ID.
+
+=head1 SEE ALSO
+
+ groupdel(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-groupmod.pl b/examples/LDAP/smbldap-tools/smbldap-groupmod.pl
new file mode 100755
index 00000000000..a35e7ea898d
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-groupmod.pl
@@ -0,0 +1,213 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-groupmod.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-groupmod : group (posix) modification
+
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+
+#####################
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('og:n:m:x:?', \%Options);
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-g gid [-o]] [-n name] [-m members(,)] [-x members (,)] groupname\n";
+ print " -g new gid\n";
+ print " -o gid is not unique\n";
+ print " -n new group name\n";
+ print " -m add members (comma delimited)\n";
+ print " -x delete members (comma delimted)\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+my $groupName = $ARGV[0];
+
+if (!defined(get_group_dn($groupName))) {
+ print "$0: group $groupName doesn't exist\n";
+ exit (6);
+}
+
+my $newname = $Options{'n'};
+
+my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd restart > /dev/null 2>&1";
+}
+
+my $gid = getgrnam($groupName);
+
+my $tmp;
+if (defined($tmp = $Options{'g'}) and $tmp =~ /\d+/) {
+ if (!defined($Options{'o'})) {
+ if (defined(getgrgid($tmp))) {
+ print "$0: gid $tmp exists\n";
+ exit (6);
+ }
+ }
+ if (!($gid == $tmp)) {
+ my $tmpldif =
+"dn: cn=$groupName,$groupsdn
+changetype: modify
+replace: gidNumber
+gidNumber: $tmp
+
+";
+ die "$0: error while modifying group $groupName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+ }
+}
+
+if (defined($newname)) {
+ my $FILE="|$ldapmodrdn >/dev/null";
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+cn=$groupName,$groupsdn
+cn=$newname
+
+EOF
+ ;
+ close FILE;
+ die "$0: error while modifying group $groupName\n" if ($?);
+
+ my $tmpldif =
+"dn: cn=$newname,$groupsdn
+changetype: modify
+delete: cn
+-
+add: cn
+cn: $newname
+
+";
+ die "$0: error while modifying group $groupName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+}
+
+# Add members
+if (defined($Options{'m'})) {
+ my $members = $Options{'m'};
+ my @members = split( /,/, $members );
+ my $member;
+ foreach $member ( @members ) {
+ my $tmpldif =
+"dn: cn=$groupName,$groupsdn
+changetype: modify
+add: memberUid
+memberUid: $member
+
+";
+ die "$0: error while modifying group $groupName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+ }
+}
+
+# Delete members
+if (defined($Options{'x'})) {
+ my $members = $Options{'x'};
+ my @members = split( /,/, $members );
+ my $member;
+ foreach $member ( @members ) {
+ my $tmpldif =
+"dn: cn=$groupName,$groupsdn
+changetype: modify
+delete: memberUid
+memberUid: $member
+
+";
+ die "$0: error while modifying group $groupName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+ }
+}
+
+$nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd restart > /dev/null 2>&1";
+}
+
+exit (0);
+
+############################################################
+
+=head1 NAME
+
+ smbldap-groupmod.pl - Modify a group
+
+=head1 SYNOPSIS
+
+ smbldap-groupmod.pl [-g gid [-o]] [-n group_name ] group
+
+=head1 DESCRIPTION
+
+ The smbldap-groupmod.pl command modifies the system account files to
+ reflect the changes that are specified on the command line.
+ The options which apply to the smbldap-groupmod command are
+
+ -g gid The numerical value of the group's ID. This value must be
+ unique, unless the -o option is used. The value must be non-
+ negative. Any files which the old group ID is the file
+ group ID must have the file group ID changed manually.
+
+ -n group_name
+ The name of the group will be changed from group to group_name.
+
+ -m members
+ The members to be added to the group in comma-delimeted form.
+
+ -x members
+ The members to be removed from the group in comma-delimted form.
+
+=head1 EXAMPLES
+
+ smbldap-groupmod.pl -g 253 development
+ This will change the GID of the 'development' group to '253'.
+
+ smbldap-groupmod.pl -n Idiots Managers
+ This will change the name of the 'Managers' group to 'Idiots'.
+
+ smbldap-groupmod.pl -m "jdoe,jsmith" "Domain Admins"
+ This will add 'jdoe' and 'jsmith' to the 'Domain Admins' group.
+
+ smbldap-groupmod.pl -x "jdoe,jsmith" "Domain Admins"
+ This will remove 'jdoe' and 'jsmith' from the 'Domain Admins' group.
+
+=head1 SEE ALSO
+
+ groupmod(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-groupshow.pl b/examples/LDAP/smbldap-tools/smbldap-groupshow.pl
new file mode 100755
index 00000000000..2426b85fa83
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-groupshow.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-groupshow.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-groupshow : user (posix,shadow,samba) display
+#
+# History :
+# . originally by David Le Corfec <david.le-corfec@IDEALX.com>
+
+use strict;
+use smbldap_tools;
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('?', \%Options);
+
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-?] group\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+# Read only first @ARGV
+my $group = $ARGV[0];
+
+my $lines = read_group($group);
+if (!defined($lines)) {
+ print "$0: group $group doesn't exist\n";
+ exit (1);
+}
+
+print "$lines\n";
+
+exit(0);
+
+############################################################
+
+=head1 NAME
+
+ smbldap-groupshow.pl - Display group informations
+
+=head1 SYNOPSIS
+
+ smbldap-groupshow.pl groupname
+
+=head1 DESCRIPTION
+
+ The smbldap-groupshow.pl command displays informations
+ associated with the given group.
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-migrate-accounts.pl b/examples/LDAP/smbldap-tools/smbldap-migrate-accounts.pl
new file mode 100755
index 00000000000..dd66954c41b
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-migrate-accounts.pl
@@ -0,0 +1,236 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-migrate-accounts.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-migrate-accounts : add NT sam entries from pwdump
+# to ldap
+
+use strict;
+use Getopt::Std;
+use smbldap_tools;
+use smbldap_conf;
+
+# smbldap-migrate.pl (-? for help)
+#
+# Read pwdump entries on stdin, and add them to the ldap server.
+# Output uncreated/unmodified entries (see parameters -C -U)
+# in pwdump format to stdout.
+# Errors, debug and stats are output to stderr.
+
+sub modify_account
+{
+ my ($login, $basedn, $lmpwd, $ntpwd, $gecos, $homedir) = @_;
+
+ my $tmpldif =
+"dn: uid=$login,$basedn
+changetype: modify
+lmpassword: $lmpwd
+ntpassword: $ntpwd
+gecos: $gecos
+smbHome: $homedir
+
+";
+
+ die "$0: error while modifying user $login\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+}
+
+#####################
+
+
+my %Options;
+
+my $ok = getopts('awA:CUW:?', \%Options);
+
+if ( (!$ok) || ($Options{'?'}) ) {
+ print "Usage: $0 [-awAWCU?]\n";
+ print " -a process only people, ignore computers\n";
+ print " -w process only computers, ignore persons\n";
+ print " -A <opts> option string passed verbatim to smbldap-useradd for persons\n";
+ print " -W <opts> option string passed verbatim to smbldap-useradd for computers\n";
+ print " -C if entry not found, don't create it and log it to stdout (default: create it)\n";
+ print " -U if entry found, don't update it and log it to stdout (default: update it)\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+my %processed = ( 'user' => 0, 'machine' => 0);
+my %created = ( 'user' => 0, 'machine' => 0);
+my %updated = ( 'user' => 0, 'machine' => 0);
+my %logged = ( 'user' => 0, 'machine' => 0);
+my %errors = ( 'user' => 0, 'machine' => 0);
+my %existing = ( 'user' => 0, 'machine' => 0);
+my $specialskipped = 0;
+
+while (<>)
+{
+ my ($login, $rid, $lmpwd, $ntpwd, $gecos, $homedir, $b) = split(/:/, $_);
+ my $usertype;
+ my $userbasedn;
+
+ my $entry_type = 'user';
+
+ if ($login =~ m/.*\$$/ ) { # computer
+ $processed{'machine'}++;
+ $entry_type = 'machine';
+ if (defined($Options{'a'})) {
+ print STDERR "ignoring $login\n";
+ next;
+ }
+
+ $usertype = "-w $Options{'W'}";
+ $userbasedn = $computersdn;
+ }
+ else { # people
+ $processed{'user'}++;
+ if (defined($Options{'w'})) {
+ print STDERR "ignoring $login\n";
+ next;
+ }
+ if ($rid < 1000) {
+ $specialskipped++;
+ print STDERR "$login seems to be a special Win account (rid=$rid), skipping\n";
+ next;
+ }
+
+ $usertype = "-a $Options{'A'}";
+ $userbasedn = $usersdn;
+ }
+
+ # normalize homedir
+# uncomment to replace configured share with share from pwdump
+# if ($homedir eq "") {
+ $homedir = $_userSmbHome;
+# }
+
+ # normalize gecos
+ if (!($gecos eq "")) {
+ $gecos =~ tr/ÁÀÂÄáàâäÇçÉÈÊËÆéèêëæÍÌÏÎíìîÏÑñÓÒÔÖóòôöÚÙÜÛúùüûÝýÿ/AAAAaaaaCcEEEEEeeeeeIIIIiiiiNnOOOOooooUUUUuuuuYyy/;
+ } else {
+ $gecos = $_userGecos;
+ }
+
+ my $user_exists = is_samba_user($login);
+
+ if (!$user_exists) {
+ if (!defined($Options{'C'})) {
+ # uid doesn't exist and we want to create it
+ my $addcmd = "/usr/local/sbin/smbldap-useradd.pl $usertype $login > /dev/null";
+ print STDERR "$addcmd\n";
+ my $r = system "$addcmd";
+ if ($r != 0) {
+ print STDERR "error adding $login, skipping\n";
+ next;
+ }
+ # lem modif... a retirer si pb
+ if ($entry_type eq "user")
+ {
+ modify_account($login, $userbasedn, $lmpwd, $ntpwd, $gecos, $homedir);
+ }
+
+ $created{$entry_type}++;
+ }
+ else { # uid doesn't exist and no create => log
+ print "$_";
+ $logged{$entry_type}++;
+ }
+ }
+ else { # account exists
+ $existing{$entry_type}++;
+ if (!defined($Options{'U'})) { # exists and modify
+ modify_account($login, $userbasedn, $lmpwd, $ntpwd, $gecos, $homedir);
+ $updated{$entry_type}++;
+ }
+ else { # exists and log
+ print "$_";
+ $logged{$entry_type}++;
+ }
+ }
+}
+
+my $sum;
+
+$sum = $processed{'user'} + $processed{'machine'};
+print STDERR "processed: all=$sum user=$processed{'user'} machine=$processed{'machine'}\n";
+
+$sum = $existing{'user'} + $existing{'machine'};
+print STDERR "existing: all=$sum user=$existing{'user'} machine=$existing{'machine'}\n";
+
+$sum = $created{'user'} + $created{'machine'};
+print STDERR "created: all=$sum user=$created{'user'} machine=$created{'machine'}\n";
+
+$sum = $updated{'user'} + $updated{'machine'};
+print STDERR "updated: all=$sum user=$updated{'user'} machine=$updated{'machine'}\n";
+
+$sum = $logged{'user'} + $logged{'machine'};
+print STDERR "logged: all=$sum user=$logged{'user'} machine=$logged{'machine'}\n";
+
+print STDERR "special users skipped: $specialskipped\n";
+
+
+########################################
+
+=head1 NAME
+
+ smbldap-migrate.pl - Migrate NT accounts to LDAP
+
+=head1 SYNOPSIS
+
+ smbldap-migrate.pl [-a] [-w] [-A opts] [-W opts] [-C] [-U] [-?]
+
+=head1 DESCRIPTION
+
+ This command reads from stdin account entries as created by pwdump,
+ a tool to dump an user database on NT.
+ Depending of the options, some account entries may be output on
+ stdout. All errors and informations are sent to stderr.
+
+ -a process only people, ignore computers
+
+ -w process only computers, ignore persons
+
+ -A opts
+ a string containing arguments to pass verbatim to
+ smbldap-useradd when adding users, eg "-m -x".
+ You don't have to specify -a in this string.
+
+ -W opts
+ a string containing arguments to pass verbatim to
+ smbldap-useradd when adding computers, eg "-m -x".
+ You don't have to specify -w in this string.
+
+ -C if NT account not found in LDAP, don't create it and log it to stdout
+ (default: create it)
+
+ -U if NT account found in LDAP, don't update it and log it to stdout
+ (default: update it)
+
+ -? show the help message
+
+=cut
+
+#'
+
+# The End
+
diff --git a/examples/LDAP/smbldap-tools/smbldap-migrate-groups.pl b/examples/LDAP/smbldap-tools/smbldap-migrate-groups.pl
new file mode 100644
index 00000000000..8be0c1b72be
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-migrate-groups.pl
@@ -0,0 +1,227 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-migrate-groups.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-migrate-groups : to parse a Windows
+# group dump and populate Unix groups
+# Reads group dump on stdin
+
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+use Getopt::Std;
+
+
+
+sub process_rec_group
+{
+ my ($group, $mb) = @_;
+ my @members;
+
+ if (!(@members = group_get_members($group))) {
+ return 0;
+ }
+
+ foreach my $m (@members) {
+ if ( !($m =~ m/^\*/) ) {
+ push @{$mb}, $m;
+ } else {
+ my $gname = $m;
+ $gname =~ s/^.//;
+ if (!process_rec_group($gname, $mb)) {
+ print "recursive group not added : $gname\n";
+ }
+ }
+ }
+}
+
+
+# given a group dn and a list of members, update the group
+sub modify_group
+{
+ my ($group, $dn_line, @members, $recgroup) = @_;
+ my $m;
+ my @new_mb;
+
+ foreach $m (@members) {
+ if ( ($m =~ m/^\*/) ) {
+ my $gname = $m;
+ $gname =~ s/^.//;
+ if (!$recgroup) {
+ print "recursive group not added : $gname\n";
+ } else {
+ if (!process_rec_group($gname, \@new_mb)) {
+ print "recursive group not added : $gname\n";
+ }
+ }
+ } else {
+ push @new_mb, $m;
+ }
+ }
+
+ # new_mb contains flat members from group dump
+ # now append them to existing members
+ push @new_mb, group_get_members($group);
+ # uniq them
+ my %saw;
+ @saw{@new_mb} = ();
+ @new_mb = keys %saw;
+
+ my $nmb = $#new_mb + 1;
+ print STDERR "Group $group now has $nmb member(s)\n";
+
+ my $mbs;
+ foreach $m (@new_mb) {
+ $mbs .= "memberUid: $m\n";
+ }
+
+ my $mods="$dn_line
+changetype: modify
+replace: memberUid
+$mbs
+";
+
+ #print "$mods\n";
+ my $tmpldif =
+"$mods
+";
+
+ die "$0: error while modifying group $group\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+}
+
+sub display_group
+{
+ my ($group, @members) = @_;
+
+ print "Group name $group\n";
+ print "Members\n";
+ my $m;
+ my $i = 0;
+ foreach $m (@members) {
+ print "$m ";
+ if ($i % 5 == 0) {
+ print "\n";
+ }
+ $i++;
+ }
+}
+
+sub process_group
+{
+ my ($group, @members, $nocreate, $noupdate, $recgroup) = @_;
+
+ my $dn_line;
+ if (!defined($dn_line = get_group_dn($group))) {
+ # group not found, create it ?
+ if (!$nocreate) {
+ system "/usr/local/sbin/smbldap-groupadd.pl \"$group\"; sleep 5";
+ if (!defined($dn_line = get_group_dn($group))) {
+ return 1;
+ }
+ modify_group($group, $dn_line, @members, $recgroup);
+ } else {
+ # don't create
+ print "not created:\n";
+ display_group($group, @members);
+ }
+ } else {
+ # group found, update it ?
+ if (!$noupdate) {
+ modify_group($group, $dn_line, @members, $recgroup);
+ } else {
+ # don't update
+ print "not updated:\n";
+ display_group($group, @members);
+ }
+ }
+}
+
+###################################################
+
+my %Options;
+
+my $ok = getopts('CUr?', \%Options);
+if ( (!$ok) || ($Options{'?'}) ) {
+ print "Usage: $0 [-CUr?] < group_dump\n";
+ print " -C don't create group if it doesn't exist\n";
+ print " -U don't update group if it exists\n";
+ print " -r recursively process groups\n";
+ exit(1);
+}
+
+my $group_name;
+my $group_desc;
+my $has_members = 0;
+my @members = ();
+
+while (<>)
+{
+ my $line = $_;
+ chomp($line);
+ next if ( $line =~ m/^\s*$/ );
+
+ if ($group_name eq "") {
+ if ( $line =~ m/^Group name\s+(.+).$/ ) {
+ $group_name = $1;
+ next;
+ }
+ }
+ if ($group_desc eq "") {
+ if ( $line =~ m/^Comment\s+(.*)$/ ) {
+ $group_desc = $1;
+ next;
+ }
+ }
+ next if ( $line =~ m/^-+.$/ );
+ if (!$has_members) {
+ if ( $line =~ m/^Members/ ) {
+ $has_members = 1;
+ next;
+ }
+ } else {
+ if ( $line =~ m/^The command completed successfully/ ) {
+ last;
+ } else {
+ push(@members, split(/\s+/, $line));
+ next;
+ }
+ }
+
+ #print;
+}
+
+if ( $#members > -1) {
+ process_group($group_name, @members, $Options{'C'}, $Options{'U'}, $Options{'r'});
+}
+
+#print "gn=$group_name\n";
+#print "gd=$group_desc\n";
+#my $m;
+#foreach $m (@members)
+#{
+# print "$m ";
+#}
+#print "\n";
diff --git a/examples/LDAP/smbldap-tools/smbldap-passwd.pl b/examples/LDAP/smbldap-tools/smbldap-passwd.pl
new file mode 100755
index 00000000000..325c7718328
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-passwd.pl
@@ -0,0 +1,217 @@
+#!/usr/bin/perl
+
+# LDAP to unix password sync script for samba
+# $Id: smbldap-passwd.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose :
+# . ldap-unix passwd sync for SAMBA-2.2.2 + LDAP
+# . may also replace /bin/passwd
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+my $user;
+my $oldpass;
+my $ret;
+
+my $arg;
+
+foreach $arg (@ARGV) {
+ if ($< != 0) {
+ die "Only root can specify parameters\n";
+ } else {
+ if ( ($arg eq '-?') || ($arg eq '--help') ) {
+ print "Usage: $0 [username]\n";
+ print " -?, --help show this help message\n";
+ exit (6);
+ } elsif (substr($arg,0) ne '-') {
+ $user = $arg;
+ }
+ $oldpass = 1;
+ }
+}
+
+if (!defined($user)) {
+ $user=$ENV{"USER"};
+}
+
+# test existence of user in LDAP
+my $dn_line;
+if (!defined($dn_line = get_user_dn($user))) {
+ print "$0: user $user doesn't exist\n";
+ exit (10);
+}
+
+my $dn = get_dn_from_line($dn_line);
+
+my $samba = is_samba_user($user);
+
+print "Changing password for $user\n";
+
+# non-root user
+if (!defined($oldpass)) {
+ # prompt for current password
+ system "stty -echo";
+ print "(current) UNIX password: ";
+ chomp($oldpass=<STDIN>);
+ print "\n";
+ system "stty echo";
+
+ if (!is_user_valid($user, $dn, $oldpass)) {
+ print "Authentication failure\n";
+ exit (10);
+ }
+}
+
+# prompt for new password
+
+my $pass;
+my $pass2;
+
+system "stty -echo";
+print "New password : ";
+chomp($pass=<STDIN>);
+print "\n";
+system "stty echo";
+
+system "stty -echo";
+print "Retype new password : ";
+chomp($pass2=<STDIN>);
+print "\n";
+system "stty echo";
+
+if ($pass ne $pass2) {
+ print "New passwords don't match!\n";
+ exit (10);
+}
+
+# only modify smb passwords if smb user
+if ($samba == 1) {
+ if (!$with_smbpasswd) {
+# generate LanManager and NT clear text passwords
+ if ($mk_ntpasswd eq '') {
+ print "Either set \$with_smbpasswd = 1 or specify \$mk_ntpasswd\n";
+ exit(1);
+ }
+ my $ntpwd = `$mk_ntpasswd '$pass'`;
+ chomp(my $lmpassword = substr($ntpwd, 0, index($ntpwd, ':')));
+ chomp(my $ntpassword = substr($ntpwd, index($ntpwd, ':')+1));
+
+# change nt/lm passwords
+ my $tmpldif =
+"$dn_line
+changetype: modify
+replace: lmpassword
+lmpassword: $lmpassword
+-
+changetype: modify
+replace: ntpassword
+ntpassword: $ntpassword
+-
+
+";
+ die "$0: error while modifying password for $user\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+ }
+ else {
+ if ($< != 0) {
+ my $FILE="|$smbpasswd -s >/dev/null";
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+'$oldpass'
+'$pass'
+'$pass'
+EOF
+ ;
+ close FILE;
+ } else {
+ my $FILE="|$smbpasswd $user -s >/dev/null";
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+'$pass'
+'$pass'
+EOF
+ ;
+ close FILE;
+ }
+ }
+}
+# change unix password
+$ret = system "$ldappasswd $dn -s '$pass' > /dev/null";
+if ($ret == 0) {
+ print "all authentication tokens updated successfully\n";
+} else {
+ return $ret;
+}
+
+exit 0;
+
+
+# - The End
+
+=head1 NAME
+
+smbldap-passwd.pl - change user password
+
+=head1 SYNOPSIS
+
+ smbldap-passwd.pl [name]
+
+=head1 DESCRIPTION
+
+ smbldap-passwd.pl changes passwords for user accounts. A normal user
+ may only change the password for their own account, the super user may
+ change the password for any account.
+
+ Password Changes
+ The user is first prompted for their old password, if one is present.
+ This password is then tested against the stored password by binding
+ to the server. The user has only one chance to enter the correct pass-
+ word. The super user is permitted to bypass this step so that forgot-
+ ten passwords may be changed.
+
+ The user is then prompted for a replacement password. As a general
+ guideline, passwords should consist of 6 to 8 characters including
+ one or more from each of following sets:
+
+ Lower case alphabetics
+
+ Upper case alphabetics
+
+ Digits 0 thru 9
+
+ Punctuation marks
+
+ passwd will prompt again and compare the second entry against the first.
+ Both entries are require to match in order for the password to be
+ changed.
+
+=head1 SEE ALSO
+
+ passwd(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-populate.pl b/examples/LDAP/smbldap-tools/smbldap-populate.pl
new file mode 100755
index 00000000000..11bc599d865
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-populate.pl
@@ -0,0 +1,296 @@
+#!/usr/bin/perl
+
+# Populate a LDAP base for Samba-LDAP usage
+#
+# $Id: smbldap-populate.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose :
+# . Create an initial LDAP database suitable for Samba 2.2
+# . For lazy people, replace ldapadd (with only an ldif parameter)
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+use Getopt::Std;
+
+use vars qw(%oc);
+
+# objectclass of the suffix
+%oc = (
+ "ou" => "organizationalUnit",
+ "o" => "organization",
+ "dc" => "dcObject",
+);
+
+
+my %Options;
+
+my $ok = getopts('a:b:?', \%Options);
+if ( (!$ok) || ($Options{'?'}) ) {
+ print "Usage: $0 [-ab?] [ldif]\n";
+ print " -a administrator login name (default: Administrator)\n";
+ print " -b guest login name (default: nobody)\n";
+ print " -? show this help message\n";
+ print " ldif file to add to ldap (default: suffix, Groups,";
+ print " Users, Computers and builtin users )\n";
+ exit (1);
+}
+
+my $_ldifName;
+
+if (@ARGV >= 1) {
+ $_ldifName = $ARGV[0];
+}
+
+my $adminName = $Options{'a'};
+if (!defined($adminName)) {
+ $adminName = "Administrator";
+}
+
+my $guestName = $Options{'b'};
+if (!defined($guestName)) {
+ $guestName = "nobody";
+}
+
+if (!defined($_ldifName)) {
+ my $attr;
+ my $val;
+ my $objcl;
+
+ if ($suffix =~ m/([^=]+)=([^,]+)/) {
+ $attr = $1;
+ $val = $2;
+ $objcl = $oc{$attr} if (exists $oc{$attr});
+ if (!defined($objcl)) {
+ $objcl = "myhardcodedobjectclass";
+ }
+ } else {
+ die "can't extract first attr and value from suffix $suffix";
+ }
+ #print "$attr=$val\n";
+
+ #my $FILE="|cat";
+ my $FILE="|$ldapadd -c";
+ open (FILE, $FILE) || die "$!\n";
+
+ print FILE <<EOF;
+dn: $suffix
+objectClass: $objcl
+$attr: $val
+
+dn: $usersdn
+objectClass: organizationalUnit
+ou: $usersou
+
+dn: $groupsdn
+objectClass: organizationalUnit
+ou: $groupsou
+
+dn: $computersdn
+objectClass: organizationalUnit
+ou: $computersou
+
+dn: uid=$adminName,$usersdn
+cn: $adminName
+objectClass: sambaAccount
+objectClass: posixAccount
+gidNumber: 512
+uid: $adminName
+uidNumber: 998
+homeDirectory: $_userHomePrefix
+pwdLastSet: 0
+logonTime: 0
+logoffTime: 2147483647
+kickoffTime: 2147483647
+pwdCanChange: 0
+pwdMustChange: 2147483647
+smbHome: $_userSmbHome
+homeDrive: $_userHomeDrive
+profilePath: $_userProfile
+rid: 500
+primaryGroupID: 512
+lmPassword: XXX
+ntPassword: XXX
+acctFlags: [U ]
+loginShell: /bin/false
+gecos: Netbios Domain Administrator
+
+dn: uid=$guestName,$usersdn
+cn: $guestName
+objectClass: sambaAccount
+objectClass: posixAccount
+gidNumber: 514
+uid: $guestName
+uidNumber: 999
+homeDirectory: /dev/null
+pwdLastSet: 0
+logonTime: 0
+logoffTime: 2147483647
+kickoffTime: 2147483647
+pwdCanChange: 0
+pwdMustChange: 2147483647
+smbHome: $_userSmbHome
+homeDrive: $_userHomeDrive
+profilePath: $_userProfile
+rid: 501
+primaryGroupID: 514
+lmPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
+ntPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
+acctFlags: [NU ]
+loginShell: /bin/false
+
+dn: cn=Domain Admins,$groupsdn
+objectClass: posixGroup
+gidNumber: 512
+cn: Domain Admins
+memberUid: $adminName
+description: Netbios Domain Administrators (need smb.conf configuration)
+
+dn: cn=Domain Users,$groupsdn
+objectClass: posixGroup
+gidNumber: 513
+cn: Domain Users
+description: Netbios Domain Users (not implemented yet)
+
+dn: cn=Domain Guests,$groupsdn
+objectClass: posixGroup
+gidNumber: 514
+cn: Domain Guests
+description: Netbios Domain Guests Users (not implemented yet)
+
+dn: cn=Administrators,$groupsdn
+objectClass: posixGroup
+gidNumber: 544
+cn: Administrators
+description: Netbios Domain Members can fully administer the computer/domain (not implemented yet)
+
+dn: cn=Users,$groupsdn
+objectClass: posixGroup
+gidNumber: 545
+cn: Users
+description: Netbios Domain Ordinary users (not implemented yet)
+
+dn: cn=Guests,$groupsdn
+objectClass: posixGroup
+gidNumber: 546
+cn: Guests
+memberUid: $guestName
+description: Netbios Domain Users granted guest access to the computer/domain (not implemented yet)
+
+
+dn: cn=Power Users,$groupsdn
+objectClass: posixGroup
+gidNumber: 547
+cn: Power Users
+description: Netbios Domain Members can share directories and printers (not implemented yet)
+
+dn: cn=Account Operators,$groupsdn
+objectClass: posixGroup
+gidNumber: 548
+cn: Account Operators
+description: Netbios Domain Users to manipulate users accounts (not implemented yet)
+
+dn: cn=Server Operators,$groupsdn
+objectClass: posixGroup
+gidNumber: 549
+cn: Server Operators
+description: Netbios Domain Server Operators (need smb.conf configuration)
+
+dn: cn=Print Operators,$groupsdn
+objectClass: posixGroup
+gidNumber: 550
+cn: Print Operators
+description: Netbios Domain Print Operators (need smb.conf configuration)
+
+dn: cn=Backup Operators,$groupsdn
+objectClass: posixGroup
+gidNumber: 551
+cn: Backup Operators
+description: Netbios Domain Members can bypass file security to back up files (not implemented yet)
+
+dn: cn=Replicator,$groupsdn
+objectClass: posixGroup
+gidNumber: 552
+cn: Replicator
+description: Netbios Domain Supports file replication in a domain (not implemented yet)
+
+dn: cn=Domain Computers,$groupsdn
+objectClass: posixGroup
+gidNumber: 553
+cn: Domain Computers
+description: Netbios Domain Computers accounts
+
+EOF
+ close FILE;
+ exit($?)
+
+} else {
+ exec "$ldapadd < $_ldifName";
+}
+
+exit(0);
+
+
+########################################
+
+=head1 NAME
+
+ smbldap-populate.pl - Populate your LDAP database
+
+=head1 SYNOPSIS
+
+ smbldap-populate.pl [ldif-file]
+
+=head1 DESCRIPTION
+
+ The smbldap-populate.pl command helps to populate an LDAP server
+ by adding the necessary entries : base suffix (doesn't abort
+ if already there), organizational units for users, groups and
+ computers, builtin users : Administrator and guest, builtin
+ groups (though posixAccount only, no SambaTNG support).
+
+ -a name Your local administrator login name (default: Administrator)
+ -b name Your local guest login name (default: nobody)
+
+ If you give an extra parameter, it is assumed to be the ldif
+ file to use instead of the builtin one. Options -a and -b
+ will be ignored. This usage mode makes the command behave
+ like ldapadd(1) with extra parameters taken from the smbldap-tools
+ config (smbldap_conf.pm).
+
+=head1 FILES
+
+ /usr/lib/perl5/site-perl/smbldap_conf.pm : Global parameters.
+
+=head1 SEE ALSO
+
+ smp(1)
+
+=cut
+
+#'
+
+
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/smbldap-tools.spec b/examples/LDAP/smbldap-tools/smbldap-tools.spec
new file mode 100755
index 00000000000..7bb438cb321
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-tools.spec
@@ -0,0 +1,169 @@
+# $Source: /data/src/mirror/cvs/samba/examples/LDAP/smbldap-tools/smbldap-tools.spec,v $
+%define version 0.7
+%define release 1
+%define name smbldap-tools
+%define realname smbldap-tools
+
+Summary: User & Group administration tools for Samba-OpenLDAP
+Name: %{name}
+version: %{version}
+Release: %{release}
+Group: System Environment/Base
+License: GPL
+
+Vendor: IDEALX S.A.S.
+URL: http://samba.IDEALX.org/
+Packager: Olivier Lemaire <olivier.lemaire@IDEALX.com>
+Source0: smbldap-groupadd.pl
+Source1: smbldap-groupdel.pl
+Source2: smbldap-groupmod.pl
+Source3: smbldap-groupshow.pl
+Source4: smbldap-passwd.pl
+Source5: smbldap-useradd.pl
+Source6: smbldap-userdel.pl
+Source7: smbldap-usermod.pl
+Source8: smbldap-usershow.pl
+Source9: smbldap_conf.pm
+Source10: smbldap_tools.pm
+Source11: CONTRIBUTORS
+Source12: COPYING
+Source13: ChangeLog
+Source14: FILES
+Source15: README
+Source16: TODO
+Source17: mkntpwd.tar.gz
+Source18: smbldap-populate.pl
+Source19: smbldap-migrate-accounts.pl
+Source20: smbldap-migrate-groups.pl
+Source21: INFRA
+BuildRoot: /%{_tmppath}/%{name}
+Prefix: /usr/local
+BuildRequires: perl >= 5.6
+Requires: perl >= 5.6, openldap, openldap-clients, samba
+
+%description
+In settings with OpenLDAP and Samba-LDAP servers, this collection is
+useful to add, modify and delete users and groups, and to change
+Unix and Samba passwords. In those context they replace the system
+tools to manage users, groups and passwords.
+
+%prep
+
+%setup -c -T
+
+%build
+tar zxvf %{SOURCE17}
+cd mkntpwd
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/%{prefix}/sbin
+mkdir -p $RPM_BUILD_ROOT/%{prefix}/share
+mkdir -p $RPM_BUILD_ROOT/%{prefix}/share/doc
+mkdir -p $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools
+
+cd mkntpwd ; make PREFIX=$RPM_BUILD_ROOT/%{prefix} install
+
+install -m 550 %{SOURCE0} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-groupadd.pl
+install -m 550 %{SOURCE1} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-groupdel.pl
+install -m 550 %{SOURCE2} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-groupmod.pl
+install -m 555 %{SOURCE3} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-groupshow.pl
+install -m 555 %{SOURCE4} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-passwd.pl
+install -m 550 %{SOURCE5} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-useradd.pl
+install -m 550 %{SOURCE6} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-userdel.pl
+install -m 550 %{SOURCE7} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-usermod.pl
+install -m 555 %{SOURCE8} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-usershow.pl
+install -m 550 %{SOURCE18} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-populate.pl
+install -m 751 %{SOURCE9} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap_conf.pm
+install -m 555 %{SOURCE10} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap_tools.pm
+install -m 550 %{SOURCE19} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-migrate-accounts.pl
+install -m 550 %{SOURCE20} $RPM_BUILD_ROOT/%{prefix}/sbin/smbldap-migrate-groups.pl
+
+install -m 644 %{SOURCE11} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/CONTRIBUTORS
+install -m 644 %{SOURCE12} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/COPYING
+install -m 644 %{SOURCE13} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/ChangeLog
+install -m 644 %{SOURCE14} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/FILES
+install -m 644 %{SOURCE15} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/README
+install -m 644 %{SOURCE16} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/TODO
+install -m 644 %{SOURCE21} $RPM_BUILD_ROOT/%{prefix}/share/doc/smbldap-tools/INFRA
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+ln -sf %{prefix}/sbin/smbldap_tools.pm /usr/lib/perl5/site_perl/smbldap_tools.pm
+ln -sf %{prefix}/sbin/smbldap_conf.pm /usr/lib/perl5/site_perl/smbldap_conf.pm
+chgrp 512 %{prefix}/sbin/smbldap-useradd.pl %{prefix}/sbin/smbldap_conf.pm || echo "An error occured while changing groups of smbldap-useradd.pl and smbldap_conf.pm in /usr/local/sbin. For proper operations, please ensure that they have the same posix group as the Samba domain administrator if there's a local Samba PDC."
+perl -i -pe 's/_SLAVELDAP_/localhost/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_MASTERLDAP_/localhost/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_SUFFIX_/dc=IDEALX,dc=org/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_USERS_/Users/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_COMPUTERS_/Computers/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_GROUPS_/Groups/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_LOGINSHELL_/\/bin\/bash/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_USERHOMEPREFIX_/\/home\//' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_BINDDN_/cn=Manager,\$suffix/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_BINDPW_/secret/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_PDCNAME_/PDC-SRV/' %{prefix}/sbin/smbldap_conf.pm
+perl -i -pe 's/_HOMEDRIVE_/D/' %{prefix}/sbin/smbldap_conf.pm
+
+# FIXME: links should not be removed on upgrade
+#%postun
+#if [ $1 = 0 ] ; then
+# rm -f /usr/lib/perl5/site_perl/smbldap_tools.pm
+# rm -f /usr/lib/perl5/site_perl/smbldap_conf.pm
+#fi
+
+%files
+%defattr(-,root,root)
+%{prefix}/sbin/*.pl
+%{prefix}/sbin/smbldap_tools.pm
+%config %{prefix}/sbin/smbldap_conf.pm
+%{prefix}/sbin/mkntpwd
+%doc %{prefix}/share/doc/%{name}/TODO
+%doc %{prefix}/share/doc/%{name}/README
+%doc %{prefix}/share/doc/%{name}/CONTRIBUTORS
+%doc %{prefix}/share/doc/%{name}/FILES
+%doc %{prefix}/share/doc/%{name}/COPYING
+
+
+%changelog
+* Sat Jun 1 2002 Olivier Lemaire <olem@IDEALX.com> 0.7-1
+- some bugfixes about smbldap-populate
+- bugfixed the smbpasswd call in smbldap-useradd
+- cleaned up the smbldap_conf
+- more documentation
+
+* Tue Apr 30 2002 Brad Langhorst <brad@langhorst.com> 0.6-2
+- changed requires samba-common to samba
+- replaced /usr/local with %{prefix} to allow relocation
+
+* Tue Feb 5 2002 David Le Corfec <dlc@IDEALX.com> 0.6-1
+- v0.6
+
+* Mon Feb 4 2002 David Le Corfec <dlc@IDEALX.com> 0.5-1
+- v0.5
+
+* Mon Jan 14 2002 David Le Corfec <dlc@IDEALX.com> 0.3-4
+- internal changes
+- should upgrade smoothly from now on
+
+* Mon Jan 14 2002 David Le Corfec <dlc@IDEALX.com> 0.2-1
+- added migration scripts
+
+* Fri Dec 28 2001 David Le Corfec <dlc@IDEALX.com> 0.1-5
+- numeric group for chmod
+
+* Thu Dec 27 2001 David Le Corfec <dlc@IDEALX.com> 0.1-4
+- misc bugfixes
+
+* Mon Dec 18 2001 David Le Corfec <dlc@IDEALX.com> 0.1-3
+- changed files attrs for domain admins to add users
+- added smbldap-populate.pl
+
+* Fri Dec 14 2001 David Le Corfec <dlc@IDEALX.com>
+- added mkntpwd
+
+* Wed Dec 12 2001 Olivier Lemaire <olivier.lemaire@IDEALX.com>
+- Spec file was generated, and tested atomically.
diff --git a/examples/LDAP/smbldap-tools/smbldap-useradd.pl b/examples/LDAP/smbldap-tools/smbldap-useradd.pl
new file mode 100755
index 00000000000..9d2ca90bd29
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-useradd.pl
@@ -0,0 +1,462 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-useradd.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-useradd : user (posix,shadow,samba) add
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+
+#####################
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('axnmwPG:u:g:d:s:c:k:A:B:C:D:E:F:H:?', \%Options);
+
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-awmugdsckGPABCDEFH?] username\n";
+ print " -a is a Windows User (otherwise, Posix stuff only)\n";
+ print " -w is a Windows Workstation (otherwise, Posix stuff only)\n";
+ print " -x creates rid and primaryGroupID in hex instead of decimal\n";
+ print " -u uid\n";
+ print " -g gid\n";
+ print " -G supplementary comma-separated groups\n";
+ print " -n do not create a group\n";
+ print " -d home\n";
+ print " -s shell\n";
+ print " -c gecos\n";
+ print " -m creates home directory and copies /etc/skel\n";
+ print " -k skeleton dir (with -m)\n";
+ print " -P ends by invoking smbldap-passwd.pl\n";
+ print " -A can change password ? 0 if no, 1 if yes\n";
+ print " -B must change password ? 0 if no, 1 if yes\n";
+ print " -C smbHome (SMB home share, like '\\\\PDC-SRV\\homes')\n";
+ print " -D homeDrive (letter associated with home share, like 'H:')\n";
+ print " -E scriptPath (DOS script to execute on login)\n";
+ print " -F profilePath (profile directory, like '\\\\PDC-SRV\\profiles\\foo')\n";
+ print " -H acctFlags (samba account control bits like '[NDHTUMWSLKI]')\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+# cause problems when dealing with getpwuid because of the
+# negative ttl and ldap modification
+my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd stop > /dev/null 2>&1";
+}
+
+# Read options
+my $userUidNumber = $Options{'u'};
+if (!defined($userUidNumber)) {
+ # find first unused uid starting from $UID_START
+ while (defined(getpwuid($UID_START))) {
+ $UID_START++;
+ }
+ $userUidNumber = $UID_START;
+} elsif (getpwuid($userUidNumber)) { die "Uid already exists.\n"; }
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd start > /dev/null 2>&1";
+}
+
+
+# as rid we use 2 * uid + 1000
+my $userRid = 2 * $userUidNumber + 1000;
+if (defined($Options{'x'})) {
+ $userRid= sprint("%x", $userRid);
+}
+
+my $createGroup = 0;
+my $userGidNumber = $Options{'g'};
+# gid not specified ?
+if (!defined($userGidNumber)) {
+ # windows machine => $_defaultComputerGid
+ if (defined($Options{'w'})) {
+ $userGidNumber = $_defaultComputerGid;
+# } elsif (!defined($Options{'n'})) {
+ # create new group (redhat style)
+ # find first unused gid starting from $GID_START
+# while (defined(getgrgid($GID_START))) {
+# $GID_START++;
+# }
+# $userGidNumber = $GID_START;
+
+# $createGroup = 1;
+
+ } else {
+ # user will have gid = $_defaultUserGid
+ $userGidNumber = $_defaultUserGid;
+ }
+} else {
+ my $gid;
+ if (($gid = parse_group($userGidNumber)) < 0) {
+ print "$0: unknown group $userGidNumber\n";
+ exit (6);
+ }
+ $userGidNumber = $gid;
+}
+
+# as grouprid we use 2 * gid + 1001
+my $userGroupRid = 2 * $userGidNumber + 1001;
+if (defined($Options{'x'})) {
+ $userGroupRid = sprint("%x", $userGroupRid);
+}
+# Read only first @ARGV
+my $userName = $ARGV[0];
+
+# user must not exist in LDAP (should it be nss-wide ?)
+my ($rc, $dn) = get_user_dn2($userName);
+if ($rc and defined($dn)) {
+ print "$0: user $userName exists\n";
+ exit (9);
+} elsif (!$rc) {
+ print "$0: error in get_user_dn2\n";
+ exit(10);
+}
+
+my $userHomeDirectory;
+my $tmp;
+if (!defined($userHomeDirectory = $Options{'d'}))
+{
+ $userHomeDirectory = $_userHomePrefix.$userName;
+}
+$_userLoginShell = $tmp if (defined($tmp = $Options{'s'}));
+$_userGecos = $tmp if (defined($tmp = $Options{'c'}));
+$_skeletonDir = $tmp if (defined($tmp = $Options{'k'}));
+
+########################
+
+# MACHINE ACCOUNT
+if (defined($tmp = $Options{'w'})) {
+
+ # add a trailing dollar if missing
+ if ($userName =~ /[^\$]$/s) {
+ $userName .= "\$";
+ }
+
+ #print "About to create machine $userName:\n";
+
+ if (!add_posix_machine ($userName, $userUidNumber, $userGidNumber)) {
+ die "$0: error while adding posix account\n";
+ }
+
+ if (!$with_smbpasswd) {
+ if (!add_samba_machine_mkntpwd($userName, $userUidNumber)) {
+ die "$0: error while adding samba account\n";
+ }
+ } else {
+ if (!add_samba_machine($userName)) {
+ die "$0: error while adding samba account\n";
+ }
+
+ my $tmpldif =
+"dn: uid=$userName,$computersdn
+changetype: modify
+acctFlags: [W ]
+
+";
+ die "$0: error while modifying accountflags of $userName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+ }
+
+ exit 0;
+}
+
+#######################
+
+# USER ACCOUNT
+
+# add posix account first
+
+my $tmpldif =
+"dn: uid=$userName,$usersdn
+objectclass: top
+objectclass: account
+objectclass: posixAccount
+cn: $userName
+uid: $userName
+uidNumber: $userUidNumber
+gidNumber: $userGidNumber
+homeDirectory: $userHomeDirectory
+loginShell: $_userLoginShell
+gecos: $_userGecos
+description: $_userGecos
+userPassword: {crypt}x
+
+";
+
+die "$0: error while adding posix user $userName\n"
+ unless (do_ldapadd($tmpldif) == 0);
+
+undef $tmpldif;
+
+#if ($createGroup) {
+# group_add($userName, $userGidNumber);
+#}
+
+group_add_user($userGidNumber, $userName);
+
+my $grouplist;
+# adds to supplementary groups
+if (defined($grouplist = $Options{'G'})) {
+ add_grouplist_user($grouplist, $userName);
+}
+
+# If user was created successfully then we should create his/her home dir
+if (defined($tmp = $Options{'m'})) {
+ if ( !(-e $userHomeDirectory) ) {
+ system "mkdir $userHomeDirectory 2>/dev/null";
+ system "cp -a $_skeletonDir/.[a-z,A-Z]* $_skeletonDir/* $userHomeDirectory 2>/dev/null";
+ system "chown -R $userUidNumber:$userGidNumber $userHomeDirectory 2>/dev/null";
+ system "chmod 700 $userHomeDirectory 2>/dev/null";
+ }
+}
+
+
+# Add Samba user infos
+if (defined($Options{'a'})) {
+ if (!$with_smbpasswd) {
+
+ my $winmagic = 2147483647;
+ my $valpwdcanchange = 0;
+ my $valpwdmustchange = $winmagic;
+ my $valacctflags = "[UX]";
+
+ if (defined($tmp = $Options{'A'})) {
+ if ($tmp != 0) {
+ $valpwdcanchange = "0";
+ } else {
+ $valpwdcanchange = "$winmagic";
+ }
+ }
+
+ if (defined($tmp = $Options{'B'})) {
+ if ($tmp != 0) {
+ $valpwdmustchange = "0";
+ } else {
+ $valpwdmustchange = "$winmagic";
+ }
+ }
+
+ if (defined($tmp = $Options{'H'})) {
+ $valacctflags = "$tmp";
+ }
+
+ my $tmpldif =
+"dn: uid=$userName,$usersdn
+changetype: modify
+objectclass: top
+objectclass: account
+objectclass: posixAccount
+objectClass: sambaAccount
+pwdLastSet: 0
+logonTime: 0
+logoffTime: 2147483647
+kickoffTime: 2147483647
+pwdCanChange: $valpwdcanchange
+pwdMustChange: $valpwdmustchange
+displayName: $_userGecos
+acctFlags: $valacctflags
+rid: $userRid
+
+";
+
+ die "$0: error while adding samba account to posix user $userName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+
+ undef $tmpldif;
+ } else {
+ my $FILE="|smbpasswd -s -a $userName >/dev/null" ;
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+x
+x
+EOF
+ ;
+ close FILE;
+ if ($?) {
+ print "$0: error adding samba account\n";
+ exit (10);
+ }
+ } # with_smbpasswd
+
+ my $valscriptpath = "$userName.cmd";
+ my $valprofilepath = "$_userProfile$userName";
+ my $valsmbhome = "$_userSmbHome";
+ my $valhomedrive = "$_userHomeDrive";
+
+if (defined($tmp = $Options{'C'})) {
+ $valsmbhome = "$tmp";
+}
+
+if (defined($tmp = $Options{'D'})) {
+ $tmp = $tmp.":" unless ($tmp =~ /:/);
+ $valhomedrive = "$tmp";
+}
+
+if (defined($tmp = $Options{'E'})) {
+ $valscriptpath = "$tmp";
+}
+
+if (defined($tmp = $Options{'F'})) {
+ $valprofilepath = "$tmp";
+}
+
+ my $tmpldif =
+"dn: uid=$userName,$usersdn
+changetype: modify
+rid: $userRid
+primaryGroupID: $userGroupRid
+homeDrive: $valhomedrive
+smbHome: $valsmbhome
+profilePath: $valprofilepath
+scriptPath: $valscriptpath
+lmPassword: XXX
+ntPassword: XXX
+
+";
+
+ die "$0: error while modifying samba account of user $userName\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+}
+
+if (defined($Options{'P'})) {
+ exec "/usr/local/sbin/smbldap-passwd.pl $userName"
+}
+
+exit 0;
+
+########################################
+
+=head1 NAME
+
+ smbldap-useradd.pl - Create a new user or update default new
+ user information
+
+=head1 SYNOPSIS
+
+ smbldap-useradd.pl [-c comment] [-d home_dir]
+ [-g initial_group] [-G group[,...]]
+ [-m [-k skeleton_dir]]
+ [-s shell] [-u uid [ -o]] [-P]
+ [-A canchange] [-B mustchange] [-C smbhome]
+ [-D homedrive] [-E scriptpath] [-F profilepath]
+ [-H acctflags] login
+
+=head1 DESCRIPTION
+
+ Creating New Users
+ The smbldap-useradd.pl command creates a new user account using
+ the values specified on the command line and the default
+ values from the system.
+ The new user account will be entered into the system
+ files as needed, the home directory will be created, and
+ initial files copied, depending on the command line options.
+
+ You have to use smbldap-passwd to set the user password.
+ For Samba users, rid is 2*uidNumber+1000, and primaryGroupID
+ is 2*gidNumber+1001. Thus you may want to use
+ smbldap-useradd.pl -a -g "Domain Admins" -u 500 Administrator
+ to create a domain administrator (admin rid is 0x1F4 = 500 and
+ grouprid is 0x200 = 512)
+
+ Without any option, the account created will be an Unix (Posix)
+ account. The following options may be used to add information:
+
+ -a The user will have a Samba account (and Unix).
+
+ -w Creates an account for a Samba machine (Workstation), so that
+ it can join a domain.
+
+ -x Creates rid and primaryGroupID in hex (for Samba 2.2.2 bug). Else
+ decimal (2.2.2 patched from cvs or 2.2.x, x > 2)
+
+ -c comment
+ The new user's comment field (gecos).
+
+ -d home_dir
+ The new user will be created using home_dir as the value for the
+ user's login directory. The default is to append the login name
+ to default_home and use that as the login directory name.
+
+ -g initial_group
+ The group name or number of the user's initial login group. The
+ group name must exist. A group number must refer to an already
+ existing group. The default group number is 1.
+
+ -G group,[...]
+ A list of supplementary groups which the user is also a member
+ of. Each group is separated from the next by a comma, with no
+ intervening whitespace. The groups are subject to the same
+ restrictions as the group given with the -g option. The default
+ is for the user to belong only to the initial group.
+
+ -m The user's home directory will be created if it does not exist.
+ The files contained in skeleton_dir will be copied to the home
+ directory if the -k option is used, otherwise the files con­
+ tained in /etc/skel will be used instead. Any directories con­
+ tained in skeleton_dir or /etc/skel will be created in the
+ user's home directory as well. The -k option is only valid in
+ conjunction with the -m option. The default is to not create
+ the directory and to not copy any files.
+
+ -s shell
+ The name of the user's login shell. The default is to leave
+ this field blank, which causes the system to select the default
+ login shell.
+
+ -u uid The numerical value of the user's ID. This value must be
+ unique, unless the -o option is used. The value must be non-
+ negative. The default is to use the smallest ID value greater
+ than 1000 and greater than every other user.
+
+ -P ends by invoking smbldap-passwd.pl
+
+ -A can change password ? 0 if no, 1 if yes
+
+ -B must change password ? 0 if no, 1 if yes
+
+ -C smbHome (SMB home share, like '\\\\PDC-SRV\\homes')
+
+ -D homeDrive (letter associated with home share, like 'H:')
+
+ -E scriptPath, relative to the [netlogon] share (DOS script to execute on login, like 'foo.bat')
+
+ -F profilePath (profile directory, like '\\\\PDC-SRV\\profiles\\foo')
+
+ -H acctFlags, spaces and trailing bracket are ignored (samba account control bits like '[NDHTUMWSLKI]')
+
+=head1 SEE ALSO
+
+ useradd(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-userdel.pl b/examples/LDAP/smbldap-tools/smbldap-userdel.pl
new file mode 100755
index 00000000000..e2ad403b6d5
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-userdel.pl
@@ -0,0 +1,124 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-userdel.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-userdel : user (posix,shadow,samba) deletion
+
+use strict;
+use smbldap_tools;
+
+
+#####################
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('r?', \%Options);
+
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-r?] username\n";
+ print " -r remove home directory\n";
+ exit (1);
+}
+
+# Read only first @ARGV
+my $user = $ARGV[0];
+
+my $dn;
+# user must not exist in LDAP
+if (!defined($dn=get_user_dn($user))) {
+ print "$0: user $user does not exist\n";
+ exit (6);
+}
+
+if ($< != 0) {
+ print "You must be root to delete an user\n";
+ exit (1);
+}
+
+my $homedir;
+if (defined($Options{'r'})) {
+ $homedir=get_homedir($user);
+}
+
+# remove user from groups
+my $groups = find_groups_of $user;
+my @grplines = split(/\n/, $groups);
+
+my $grp;
+foreach $grp (@grplines) {
+ my $gname = "";
+ if ( $grp =~ /dn: cn=([^,]+),/) {
+ $gname = $1;
+ #print "xx $gname\n";
+ }
+ if ($gname ne "") {
+ group_remove_member($gname, $user);
+ }
+}
+
+# XXX
+delete_user($user);
+
+# delete dir -- be sure that homeDir is not a strange value
+if (defined($Options{'r'})) {
+ if ($homedir !~ /^\/dev/ and $homedir !~ /^\/$/) {
+ system "rm -rf $homedir";
+ }
+}
+
+my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd restart > /dev/null 2>&1";
+}
+
+exit (0);
+
+############################################################
+
+=head1 NAME
+
+ smbldap-userdel.pl - Delete a user account and related files
+
+=head1 SYNOPSIS
+
+ smbldap-userdel.pl [-r] login
+
+=head1 DESCRIPTION
+
+ The smbldap-userdel.pl command modifies the system
+ account files, deleting all entries that refer to login.
+ The named user must exist.
+
+ -r Files in the user's home directory will be removed along with
+ the home directory itself. Files located in other file
+ systems will have to be searched for and deleted manually.
+
+=head1 SEE ALSO
+
+ userdel(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-usermod.pl b/examples/LDAP/smbldap-tools/smbldap-usermod.pl
new file mode 100755
index 00000000000..dd5fcab74fd
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-usermod.pl
@@ -0,0 +1,405 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-usermod.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-usermod : user (posix,shadow,samba) modification
+
+use strict;
+use smbldap_tools;
+use smbldap_conf;
+
+
+#####################
+
+use Getopt::Std;
+my %Options;
+my $nscd_status;
+
+my $ok = getopts('A:B:C:D:E:F:H:IJxme:f:u:g:G:d:l:s:c:ok:?', \%Options);
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-awmugdsckxABCDEFGHI?] username\n";
+ print " -c gecos\n";
+ print " -d home directory\n";
+ #print " -m move home directory\n";
+ #print " -e expire date (YYYY-MM-DD)\n";
+ #print " -f inactive days\n";
+ print " -u uid\n";
+ print " -o uid can be non unique\n";
+ print " -g gid\n";
+ print " -G supplementary groups (comma separated)\n";
+ print " -l login name\n";
+ print " -s shell\n";
+ print " -x creates rid and primaryGroupID in hex instead of decimal (for Samba 2.2.2 unpatched only)\n";
+ print " -A can change password ? 0 if no, 1 if yes\n";
+ print " -B must change password ? 0 if no, 1 if yes\n";
+ print " -C smbHome (SMB home share, like '\\\\PDC-SRV\\homes')\n";
+ print " -D homeDrive (letter associated with home share, like 'H:')\n";
+ print " -E scriptPath (DOS script to execute on login)\n";
+ print " -F profilePath (profile directory, like '\\\\PDC-SRV\\profiles\\foo')\n";
+ print " -H acctFlags (samba account control bits like '[NDHTUMWSLKI]')\n";
+ print " -I disable an user. Can't be used with -H or -J\n";
+ print " -J enable an user. Can't be used with -H or -I\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+if ($< != 0) {
+ print "You must be root to modify an user\n";
+ exit (1);
+}
+
+# Read only first @ARGV
+my $user = $ARGV[0];
+
+# Read user datas
+my $lines = read_user($user);
+if (!defined($lines)) {
+ print "$0: user $user doesn't exist\n";
+ exit (1);
+}
+
+#print "$lines\n";
+my $dn_line;
+if ( $lines =~ /(^dn: .*)/ ) {
+ $dn_line = $1;
+}
+
+chomp($dn_line);
+
+my $samba = 0;
+if ($lines =~ m/objectClass: sambaAccount/) {
+ $samba = 1;
+}
+
+############
+
+my $tmp;
+my $mods;
+
+# Process options
+my $changed_uid;
+my $_userUidNumber;
+my $_userRid;
+if (defined($tmp = $Options{'u'})) {
+ if (defined($Options{'o'})) {
+ $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+ if ($nscd_status == 0) {
+ system "/etc/init.d/nscd stop > /dev/null 2>&1";
+ }
+
+ if (getpwuid($tmp)) {
+ if ($nscd_status == 0) {
+ system "/etc/init.d/nscd start > /dev/null 2>&1";
+ }
+
+ print "$0: uid number $tmp exists\n";
+ exit (6);
+ }
+ if ($nscd_status == 0) {
+ system "/etc/init.d/nscd start > /dev/null 2>&1";
+ }
+
+ }
+ $_userUidNumber = $tmp;
+ # as rid we use 2 * uid + 1000
+ my $_userRid = 2 * $_userUidNumber + 1000;
+ if (defined($Options{'x'})) {
+ $_userRid= sprint("%x", $_userRid);
+ }
+ $mods .= "uidNumber: $_userUidNumber\n";
+ if ($samba) {
+ $mods .= "rid: $_userRid\n";
+ }
+ $changed_uid = 1;
+}
+
+my $changed_gid;
+my $_userGidNumber;
+my $_userGroupRid;
+if (defined($tmp = $Options{'g'})) {
+ $_userGidNumber = parse_group($tmp);
+ if ($_userGidNumber < 0) {
+ print "$0: group $tmp doesn't exist\n";
+ exit (6);
+ }
+# as grouprid we use 2 * gid + 1001
+ my $_userGroupRid = 2 * $_userGidNumber + 1001;
+ if (defined($Options{'x'})) {
+ $_userGroupRid = sprint("%x", $_userGroupRid);
+ }
+ $mods .= "gidNumber: $_userGidNumber\n";
+ if ($samba) {
+ $mods .= "primaryGroupID: $_userGroupRid\n";
+ }
+ $changed_gid = 1;
+}
+
+my $changed_shell;
+my $_userLoginShell;
+if (defined($tmp = $Options{'s'})) {
+ $_userLoginShell = $tmp;
+ $mods .= "loginShell: $_userLoginShell\n";
+ $changed_shell = 1;
+}
+
+my $changed_gecos;
+my $_userGecos;
+if (defined($tmp = $Options{'c'})) {
+ $_userGecos = $tmp;
+ $mods .= "gecos: $_userGecos\n";
+ $changed_gecos = 1;
+}
+
+my $changed_homedir;
+my $newhomedir;
+if (defined($tmp = $Options{'d'})) {
+ $newhomedir = $tmp;
+ $mods .= "homeDirectory: $newhomedir\n";
+ $changed_homedir = 1;
+}
+
+
+if (defined($tmp = $Options{'G'})) {
+
+ # remove user from old groups
+ my $groups = find_groups_of $user;
+ my @grplines = split(/\n/, $groups);
+
+ my $grp;
+ foreach $grp (@grplines) {
+ my $gname = "";
+ if ( $grp =~ /dn: cn=([^,]+),/) {
+ $gname = $1;
+ #print "xx $gname\n";
+ }
+ if ($gname ne "") {
+ group_remove_member($gname, $user);
+ }
+ }
+
+ # add user to new groups
+ add_grouplist_user($tmp, $user);
+}
+
+#
+# A : pwdCanChange
+# B : pwdMustChange
+# C : smbHome
+# D : homeDrive
+# E : scriptPath
+# F : profilePath
+# H : acctFlags
+
+my $attr;
+my $winmagic = 2147483647;
+
+if (defined($tmp = $Options{'A'})) {
+ $attr = "pwdCanChange";
+ if ($tmp != 0) {
+ $mods .= "$attr: 0\n";
+ } else {
+ $mods .= "$attr: $winmagic\n";
+ }
+}
+
+if (defined($tmp = $Options{'B'})) {
+ $attr = "pwdMustChange";
+ if ($tmp != 0) {
+ $mods .= "$attr: 0\n";
+ } else {
+ $mods .= "$attr: $winmagic\n";
+ }
+}
+
+if (defined($tmp = $Options{'C'})) {
+ $attr = "smbHome";
+ #$tmp =~ s/\\/\\\\/g;
+ $mods .= "$attr: $tmp\n";
+}
+
+if (defined($tmp = $Options{'D'})) {
+ $attr = "homeDrive";
+ $tmp = $tmp.":" unless ($tmp =~ /:/);
+ $mods .= "$attr: $tmp\n";
+}
+
+if (defined($tmp = $Options{'E'})) {
+ $attr = "scriptPath";
+ #$tmp =~ s/\\/\\\\/g;
+ $mods .= "$attr: $tmp\n";
+}
+
+if (defined($tmp = $Options{'F'})) {
+ $attr = "profilePath";
+ #$tmp =~ s/\\/\\\\/g;
+ $mods .= "$attr: $tmp\n";
+}
+
+if (defined($tmp = $Options{'H'})) {
+ $attr = "acctFlags";
+ #$tmp =~ s/\\/\\\\/g;
+ $mods .= "$attr: $tmp\n";
+} elsif (defined($tmp = $Options{'I'})) {
+ my $flags;
+
+ if ( $lines =~ /^acctFlags: (.*)/m ) {
+ $flags = $1;
+ }
+
+ chomp($flags);
+
+ if ( !($flags =~ /D/) ) {
+ my $letters;
+ if ($flags =~ /(\w+)/) {
+ $letters = $1;
+ }
+ $mods .= "acctFlags: \[D$letters\]\n";
+ }
+} elsif (defined($tmp = $Options{'J'})) {
+ my $flags;
+
+ if ( $lines =~ /^acctFlags: (.*)/m ) {
+ $flags = $1;
+ }
+
+ chomp($flags);
+
+ if ( $flags =~ /D/ ) {
+ my $letters;
+ if ($flags =~ /(\w+)/) {
+ $letters = $1;
+ }
+ $letters =~ s/D//;
+ $mods .= "acctFlags: \[$letters\]\n";
+ }
+}
+
+if ($mods ne '') {
+ #print "----\n$dn_line\n$mods\n----\n";
+
+ my $tmpldif =
+"$dn_line
+changetype: modify
+$mods
+";
+
+ die "$0: error while modifying user $user\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+
+ undef $tmpldif;
+}
+
+$nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+if ($nscd_status == 0) {
+ system "/etc/init.d/nscd restart > /dev/null 2>&1";
+}
+
+
+############################################################
+
+=head1 NAME
+
+ smbldap-usermod.pl - Modify a user account
+
+=head1 SYNOPSIS
+
+ smbldap-usermod.pl [-c comment] [-d home_dir]
+ [-g initial_group] [-G group[,...]]
+ [-l login_name] [-p passwd]
+ [-s shell] [-u uid [ -o]] [-x]
+ [-A canchange] [-B mustchange] [-C smbhome]
+ [-D homedrive] [-E scriptpath] [-F profilepath]
+ [-H acctflags] login
+
+=head1 DESCRIPTION
+
+ The smbldap-usermod.pl command modifies the system account files
+ to reflect the changes that are specified on the command line.
+ The options which apply to the usermod command are
+
+ -c comment
+ The new value of the user's comment field (gecos).
+
+ -d home_dir
+ The user's new login directory.
+
+ -g initial_group
+ The group name or number of the user's new initial login group.
+ The group name must exist. A group number must refer to an
+ already existing group. The default group number is 1.
+
+ -G group,[...]
+ A list of supplementary groups which the user is also a member
+ of. Each group is separated from the next by a comma, with no
+ intervening whitespace. The groups are subject to the same
+ restrictions as the group given with the -g option. If the user
+ is currently a member of a group which is not listed, the user
+ will be removed from the group
+
+ -l login_name
+ The name of the user will be changed from login to login_name.
+ Nothing else is changed. In particular, the user's home direc­
+ tory name should probably be changed to reflect the new login
+ name.
+
+ -s shell
+ The name of the user's new login shell. Setting this field to
+ blank causes the system to select the default login shell.
+
+ -u uid The numerical value of the user's ID. This value must be
+ unique, unless the -o option is used. The value must be non-
+ negative. Any files which the user owns and which are
+ located in the directory tree rooted at the user's home direc­
+ tory will have the file user ID changed automatically. Files
+ outside of the user's home directory must be altered manually.
+
+ -x Creates rid and primaryGroupID in hex instead of decimal (for
+ Samba 2.2.2 unpatched only - higher versions always use decimal)
+
+ -A can change password ? 0 if no, 1 if yes
+
+ -B must change password ? 0 if no, 1 if yes
+
+ -C smbHome (SMB home share, like '\\\\PDC-SRV\\homes')
+
+ -D homeDrive (letter associated with home share, like 'H:')
+
+ -E scriptPath, relative to the [netlogon] share (DOS script to execute on login, like 'foo.bat')
+
+ -F profilePath (profile directory, like '\\\\PDC-SRV\\profiles\\foo')
+
+ -H acctFlags, spaces and trailing bracket are ignored (samba account control bits like '[NDHTUMWSLKI]')
+
+ -I disable user. Can't be used with -H or -J
+
+ -J enable user. Can't be used with -H or -I
+
+=head1 SEE ALSO
+
+ usermod(1)
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap-usershow.pl b/examples/LDAP/smbldap-tools/smbldap-usershow.pl
new file mode 100755
index 00000000000..41391a91969
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap-usershow.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+# $Id: smbldap-usershow.pl,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose of smbldap-userdisplay : user (posix,shadow,samba) display
+
+use strict;
+use smbldap_tools;
+
+use Getopt::Std;
+my %Options;
+
+my $ok = getopts('?', \%Options);
+
+if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) {
+ print "Usage: $0 [-?] username\n";
+ print " -? show this help message\n";
+ exit (1);
+}
+
+# Read only first @ARGV
+my $user = $ARGV[0];
+
+my $lines = read_user($user);
+if (!defined($lines)) {
+ print "$0: user $user doesn't exist\n";
+ exit (1);
+}
+
+print "$lines\n";
+
+exit(0);
+
+############################################################
+
+=head1 NAME
+
+ smbldap-usershow.pl - Show a user account informations
+
+=head1 SYNOPSIS
+
+ smbldap-usershow.pl login
+
+=head1 DESCRIPTION
+
+ The smbldap-usershow.pl command displays the informations
+ associated with the login. The named user must exist.
+
+=cut
+
+#'
diff --git a/examples/LDAP/smbldap-tools/smbldap_conf.pm b/examples/LDAP/smbldap-tools/smbldap_conf.pm
new file mode 100644
index 00000000000..158f2c1460e
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap_conf.pm
@@ -0,0 +1,251 @@
+#!/usr/bin/perl
+use strict;
+package smbldap_conf;
+
+# $Id: smbldap_conf.pm,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# smbldap-tools.conf : Q & D configuration file for smbldap-tools
+
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# Purpose :
+# . be the configuration file for all smbldap-tools scripts
+
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS
+$UID_START $GID_START $smbpasswd $slaveLDAP $masterLDAP
+$with_smbpasswd $mk_ntpasswd
+$ldap_path $ldap_opts $ldapsearch $ldapsearchnobind
+$ldapmodify $ldappasswd $ldapadd $ldapdelete $ldapmodrdn
+$suffix $usersdn $computersdn
+$groupsdn $scope $binddn $bindpasswd
+$slaveDN $slavePw $masterDN $masterPw
+$_userLoginShell $_userHomePrefix $_userGecos
+$_defaultUserGid $_defaultComputerGid
+$_skeletonDir $_userSmbHome
+$_userProfile $_userHomeDrive
+$_userScript $usersou $computersou $groupsou
+);
+
+use Exporter;
+$VERSION = 1.00;
+@ISA = qw(Exporter);
+
+@EXPORT = qw(
+$UID_START $GID_START $smbpasswd $slaveLDAP $masterLDAP
+$with_smbpasswd $mk_ntpasswd
+$ldap_path $ldap_opts $ldapsearch $ldapsearchnobind $ldapmodify $ldappasswd
+$ldapadd $ldapdelete $ldapmodrdn $suffix $usersdn
+$computersdn $groupsdn $scope $binddn $bindpasswd
+$slaveDN $slavePw $masterDN $masterPw
+$_userLoginShell $_userHomePrefix $_userGecos
+$_defaultUserGid $_defaultComputerGid $_skeletonDir
+$_userSmbHome $_userProfile $_userHomeDrive $_userScript
+$usersou $computersou $groupsou
+);
+
+
+##############################################################################
+#
+# General Configuration
+#
+##############################################################################
+
+#
+# UID and GID starting at...
+#
+
+$UID_START = 1000;
+$GID_START = 1000;
+
+##############################################################################
+#
+# LDAP Configuration
+#
+##############################################################################
+
+# Notes: to use to dual ldap servers backend for Samba, you must patch
+# Samba with the dual-head patch from IDEALX. If not using this patch
+# just use the same server for slaveLDAP and masterLDAP.
+#
+# Slave LDAP : needed for read operations
+#
+# Ex: $slaveLDAP = "127.0.0.1";
+$slaveLDAP = "_SLAVELDAP_";
+
+#
+# Master LDAP : needed for write operations
+#
+# Ex: $masterLDAP = "127.0.0.1";
+$masterLDAP = "_MASTERLDAP_";
+
+#
+# LDAP Suffix
+#
+# Ex: $suffix = "dc=IDEALX,dc=ORG";
+$suffix = "_SUFFIX_";
+
+#
+# Where are stored Users
+#
+# Ex: $usersdn = "ou=Users,$suffix"; for ou=Users,dc=IDEALX,dc=ORG
+$usersou = q(_USERS_);
+
+$usersdn = "ou=$usersou,$suffix";
+
+#
+# Where are stored Computers
+#
+# Ex: $computersdn = "ou=Computers,$suffix"; for ou=Computers,dc=IDEALX,dc=ORG
+$computersou = q(_COMPUTERS_);
+
+$computersdn = "ou=$computersou,$suffix";
+
+#
+# Where are stored Groups
+#
+# Ex $groupsdn = "ou=Groups,$suffix"; for ou=Groups,dc=IDEALX,dc=ORG
+$groupsou = q(_GROUPS_);
+
+$groupsdn = "ou=$groupsou,$suffix";
+
+#
+# Default scope Used
+#
+$scope = "sub";
+
+#
+# Credential Configuration
+#
+# Bind DN used
+# Ex: $binddn = "cn=Manager,$suffix"; for cn=Manager,dc=IDEALX,dc=org
+$binddn = "_BINDDN_";
+#
+# Bind DN passwd used
+# Ex: $bindpasswd = 'secret'; for 'secret'
+$bindpasswd = "_BINDPW_";
+
+#
+# Notes: if using dual ldap patch, you can specify to different configuration
+# By default, we will use the same DN (so it will work for standard Samba
+# release)
+#
+$slaveDN = $binddn;
+$slavePw = $bindpasswd;
+$masterDN = $binddn;
+$masterPw = $bindpasswd;
+
+##############################################################################
+#
+# Unix Accounts Configuration
+#
+##############################################################################
+
+# Login defs
+#
+# Default Login Shell
+#
+# Ex: $_userLoginShell = q(/bin/bash);
+$_userLoginShell = q(_LOGINSHELL_);
+
+#
+# Home directory prefix (without username)
+#
+#Ex: $_userHomePrefix = q(/home/);
+$_userHomePrefix = q(_USERHOMEPREFIX_);
+
+#
+# Gecos
+#
+$_userGecos = q(System User);
+
+#
+# Default User (POSIX and Samba) GID
+#
+$_defaultUserGid = 100;
+
+#
+# Default Computer (Samba) GID
+#
+$_defaultComputerGid = 553;
+
+#
+# Skel dir
+#
+$_skeletonDir = q(/etc/skel);
+
+##############################################################################
+#
+# SAMBA Configuration
+#
+##############################################################################
+
+#
+# The UNC path to home drives location without the username last extension
+# (will be dynamically prepended)
+# Ex: q(\\\\My-PDC-netbios-name\\homes) for \\My-PDC-netbios-name\homes
+$_userSmbHome = q(\\\\_PDCNAME_\\homes);
+
+#
+# The UNC path to profiles locations without the username last extension
+# (will be dynamically prepended)
+# Ex: q(\\\\My-PDC-netbios-name\\profiles) for \\My-PDC-netbios-name\profiles
+$_userProfile = q(\\\\_PDCNAME_\\profiles\\);
+
+#
+# The default Home Drive Letter mapping
+# (will be automatically mapped at logon time if home directory exist)
+# Ex: q(U:) for U:
+$_userHomeDrive = q(_HOMEDRIVE_:);
+
+#
+# The default user netlogon script name
+# if not used, will be automatically username.cmd
+#
+#$_userScript = q(startup.cmd); # make sure script file is edited under dos
+
+
+##############################################################################
+#
+# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
+#
+##############################################################################
+
+# Allows not to use smbpasswd (if $with_smbpasswd == 0 in smbldap_conf.pm) but
+# prefer mkntpwd... most of the time, it's a wise choice :-)
+$with_smbpasswd = 0;
+$smbpasswd = "/usr/bin/smbpasswd";
+$mk_ntpasswd = "/usr/local/sbin/mkntpwd";
+
+$ldap_path = "/usr/bin";
+$ldap_opts = "-x";
+$ldapsearch = "$ldap_path/ldapsearch $ldap_opts -h $slaveLDAP -D '$slaveDN' -w '$slavePw'";
+$ldapsearchnobind = "$ldap_path/ldapsearch $ldap_opts -h $slaveLDAP";
+$ldapmodify = "$ldap_path/ldapmodify $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+$ldappasswd = "$ldap_path/ldappasswd $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+$ldapadd = "$ldap_path/ldapadd $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+$ldapdelete = "$ldap_path/ldapdelete $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+$ldapmodrdn = "$ldap_path/ldapmodrdn $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'";
+
+
+
+1;
+
+# - The End
diff --git a/examples/LDAP/smbldap-tools/smbldap_tools.pm b/examples/LDAP/smbldap-tools/smbldap_tools.pm
new file mode 100755
index 00000000000..1f0d4d1c43b
--- /dev/null
+++ b/examples/LDAP/smbldap-tools/smbldap_tools.pm
@@ -0,0 +1,585 @@
+#! /usr/bin/perl
+use strict;
+package smbldap_tools;
+use smbldap_conf;
+
+# $Id: smbldap_tools.pm,v 1.1.4.1 2002/06/17 18:35:08 jerry Exp $
+#
+# This code was developped by IDEALX (http://IDEALX.org/) and
+# contributors (their names can be found in the CONTRIBUTORS file).
+#
+# Copyright (C) 2001-2002 IDEALX
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+
+# ugly funcs using global variables and spawning openldap clients
+
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+use Exporter;
+$VERSION = 1.00;
+@ISA = qw(Exporter);
+
+@EXPORT = qw(
+get_user_dn
+get_group_dn
+is_samba_user
+is_user_valid
+get_dn_from_line
+add_posix_machine
+add_samba_machine
+add_samba_machine_mkntpwd
+group_add_user
+add_grouplist_user
+disable_user
+delete_user
+group_add
+get_homedir
+read_user
+read_group
+find_groups_of
+parse_group
+group_remove_member
+group_get_members
+do_ldapadd
+do_ldapmodify
+get_user_dn2
+);
+
+# dn_line = get_user_dn($username)
+# where dn_line is like "dn: a=b,c=d"
+sub get_user_dn
+{
+ my $user = shift;
+ my $dn=`$ldapsearch -b '$suffix' -s '$scope' '(&(objectclass=posixAccount)(uid=$user))' | grep "^dn:"`;
+ chomp $dn;
+ if ($dn eq '') {
+ return undef;
+ }
+
+ return $dn;
+}
+
+# return (success, dn)
+sub get_user_dn2
+{
+ my $user = shift;
+
+ my $sr = `$ldapsearch -b '$suffix' -s '$scope' '(&(objectclass=posixAccount)(uid=$user))'`;
+ if ($sr eq "") {
+ print "get_user_dn2: error in ldapsearch :
+$ldapsearch -b '$suffix' -s '$scope' '(&(objectclass=posixAccount)(uid=$user))'\n";
+ return (0, undef);
+ }
+
+ my @lines = split(/\n/, $sr);
+
+ my @matches = grep(/^dn:/, @lines);
+
+ my $dn = $matches[0];
+ chomp $dn;
+ if ($dn eq '') {
+ return (1, undef);
+ }
+
+ return (1, $dn);
+}
+
+# dn_line = get_group_dn($groupname)
+# where dn_line is like "dn: a=b,c=d"
+sub get_group_dn
+{
+ my $group = shift;
+ my $dn=`$ldapsearch -b '$groupsdn' -s '$scope' '(&(objectclass=posixGroup)(|(cn=$group)(gidNumber=$group)))' | grep "^dn:"`;
+ chomp $dn;
+ if ($dn eq '') {
+ return undef;
+ }
+
+ return $dn;
+}
+
+# bool = is_samba_user($username)
+sub is_samba_user
+{
+ my $user = shift;
+ my $cmd = "$ldapsearch -b '$suffix' -s '$scope' '(&(objectClass=sambaAccount)(uid=$user))' | grep '^dn:\'";
+ my $res=`$cmd`;
+ chomp $res;
+ if ($res ne '') {
+ return 1;
+ }
+ return 0;
+}
+
+# bool = is_user_valid($username)
+# try to bind with user dn and password to validate current password
+sub is_user_valid
+{
+ my ($user, $dn, $pass) = @_;
+ my $res=`$ldapsearchnobind -b '$usersdn' -s '$scope' -D '$dn' -w '$pass' '(&(objectclass=posixAccount)(uid=$user))' 2>/dev/null | grep "^dn:"`;
+ chomp $res;
+ if ($res eq '') {
+ return 0;
+ }
+ return 1;
+}
+
+# dn = get_dn_from_line ($dn_line)
+# helper to get "a=b,c=d" from "dn: a=b,c=d"
+sub get_dn_from_line
+{
+ my $dn = shift;
+ $dn =~ s/^dn: //;
+ return $dn;
+}
+
+# success = add_posix_machine($user, $uid, $gid)
+sub add_posix_machine
+{
+ my ($user, $uid, $gid) = @_;
+
+my $tmpldif =
+"dn: uid=$user,$computersdn
+objectclass: top
+objectclass: posixAccount
+cn: $user
+uid: $user
+uidNumber: $uid
+gidNumber: $gid
+homeDirectory: /dev/null
+loginShell: /bin/false
+description: Computer
+
+";
+
+ die "$0: error while adding posix account to machine $user\n"
+ unless (do_ldapadd($tmpldif) == 0);
+
+ undef $tmpldif;
+
+ return 1;
+}
+
+# success = add_samba_machine($computername)
+sub add_samba_machine
+{
+ my $user = shift;
+ system "smbpasswd -a -m $user";
+
+ return 1;
+}
+
+sub add_samba_machine_mkntpwd
+{
+ my ($user, $uid) = @_;
+ my $rid = 2 * $uid + 1000; # Samba 2.2.2 stuff
+
+ my $name = $user;
+ $name =~ s/.$//s;
+
+ if ($mk_ntpasswd eq '') {
+ print "Either set \$with_smbpasswd = 1 or specify \$mk_ntpasswd\n";
+ return 0;
+ }
+
+ my $ntpwd = `$mk_ntpasswd '$name'`;
+ chomp(my $lmpassword = substr($ntpwd, 0, index($ntpwd, ':')));
+ chomp(my $ntpassword = substr($ntpwd, index($ntpwd, ':')+1));
+
+ my $tmpldif =
+"dn: uid=$user,$computersdn
+changetype: modify
+objectclass: top
+objectclass: posixAccount
+objectClass: sambaAccount
+pwdLastSet: 0
+logonTime: 0
+logoffTime: 2147483647
+kickoffTime: 2147483647
+pwdCanChange: 0
+pwdMustChange: 2147483647
+acctFlags: [W ]
+lmpassword: $lmpassword
+ntpassword: $ntpassword
+rid: $rid
+primaryGroupID: 0
+
+";
+
+ die "$0: error while adding samba account to $user\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+ return 1;
+}
+
+
+
+sub group_add_user
+{
+ my ($group, $userid) = @_;
+ my $dn_line;
+
+ if (!defined($dn_line = get_group_dn($group))) {
+ return 1;
+ }
+ my $dn = get_dn_from_line($dn_line);
+ my $members = `$ldapsearch -b '$dn' -s base | grep -i "^memberUid:"`;
+ chomp($members);
+ # user already member ?
+ if ($members =~ m/^memberUid: $userid/) {
+ return 2;
+ }
+ my $mods = "";
+ if ($members ne '') {
+ $mods="$dn_line
+changetype: modify
+replace: memberUid
+$members
+memberUid: $userid
+";
+ } else {
+ $mods="$dn_line
+changetype: modify
+add: memberUid
+memberUid: $userid
+";
+ }
+
+ #print "$mods\n";
+
+ my $tmpldif =
+"$mods
+";
+
+ die "$0: error while modifying group $group\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+ return 0;
+}
+
+sub add_grouplist_user
+{
+ my ($grouplist, $user) = @_;
+ my @array = split(/,/, $grouplist);
+ foreach my $group (@array) {
+ group_add_user($group, $user);
+ }
+}
+
+# XXX FIXME : acctFlags |= D, and not acctFlags = D
+sub disable_user
+{
+ my $user = shift;
+ my $dn_line;
+
+ if (!defined($dn_line = get_user_dn($user))) {
+ print "$0: user $user doesn't exist\n";
+ exit (10);
+ }
+
+ my $tmpldif =
+"dn: $dn_line
+changetype: modify
+replace: userPassword
+userPassword: {crypt}!x
+
+";
+
+ die "$0: error while modifying user $user\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+ if (is_samba_user($user)) {
+
+ my $tmpldif =
+"dn: $dn_line
+changetype: modify
+replace: acctFlags
+acctFlags: [D ]
+
+";
+
+ die "$0: error while modifying user $user\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+ }
+
+}
+
+# delete_user($user)
+sub delete_user
+{
+ my $user = shift;
+ my $dn_line;
+
+ if (!defined($dn_line = get_user_dn($user))) {
+ print "$0: user $user doesn't exist\n";
+ exit (10);
+ }
+
+ my $dn = get_dn_from_line($dn_line);
+ system "$ldapdelete $dn >/dev/null";
+}
+
+# $success = group_add($groupname, $group_gid, $force_using_existing_gid)
+sub group_add
+{
+ my ($gname, $gid, $force) = @_;
+
+ my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1";
+
+ if ($nscd_status == 0) {
+ system "/etc/init.d/nscd stop > /dev/null 2>&1";
+ }
+
+ if (!defined($gid)) {
+ while (defined(getgrgid($GID_START))) {
+ $GID_START++;
+ }
+ $gid = $GID_START;
+ } else {
+ if (!defined($force)) {
+ if (defined(getgrgid($gid))) {
+ return 0;
+ }
+ }
+ }
+
+ if ($nscd_status == 0) {
+ system "/etc/init.d/nscd start > /dev/null 2>&1";
+ }
+
+ my $tmpldif =
+"dn: cn=$gname,$groupsdn
+objectclass: posixGroup
+cn: $gname
+gidNumber: $gid
+
+";
+
+ die "$0: error while adding posix group $gname\n"
+ unless (do_ldapadd($tmpldif) == 0);
+
+ undef $tmpldif;
+
+ return 1;
+}
+
+# $homedir = get_homedir ($user)
+sub get_homedir
+{
+ my $user = shift;
+ my $homeDir=`$ldapsearch -b '$suffix' -s '$scope' '(&(objectclass=posixAccount)(uid=$user))' | grep "^homeDirectory:"`;
+ chomp $homeDir;
+ if ($homeDir eq '') {
+ return undef;
+ }
+ $homeDir =~ s/^homeDirectory: //;
+
+ return $homeDir;
+}
+
+# search for an user
+sub read_user
+{
+ my $user = shift;
+ my $lines=`$ldapsearch -b '$suffix' -s '$scope' '(&(objectclass=posixAccount)(uid=$user))' -LLL`;
+ chomp $lines;
+ if ($lines eq '') {
+ return undef;
+ }
+
+ return $lines;
+}
+
+# search for a group
+sub read_group
+{
+ my $user = shift;
+ my $lines=`$ldapsearch -b '$groupsdn' -s '$scope' '(&(objectclass=posixGroup)(cn=$user))' -LLL`;
+ chomp $lines;
+ if ($lines eq '') {
+ return undef;
+ }
+
+ return $lines;
+}
+
+# find groups of a given user
+sub find_groups_of
+{
+ my $user = shift;
+ my $lines=`$ldapsearch -b '$groupsdn' -s '$scope' '(&(objectclass=posixGroup)(memberuid=$user))' -LLL | grep "^dn: "`;
+ chomp $lines;
+ if ($lines eq '') {
+ return undef;
+ }
+
+ return $lines;
+}
+
+# return the gidnumber for a group given as name or gid
+# -1 : bad group name
+# -2 : bad gidnumber
+sub parse_group
+{
+ my $userGidNumber = shift;
+
+ if ($userGidNumber =~ /[^\d]/ ) {
+ my $gname = $userGidNumber;
+ my $gidnum = getgrnam($gname);
+ if ($gidnum !~ /\d+/) {
+ return -1;
+ } else {
+ $userGidNumber = $gidnum;
+ }
+ } elsif (!defined(getgrgid($userGidNumber))) {
+ return -2;
+ }
+ return $userGidNumber;
+}
+
+# remove $user from $group
+sub group_remove_member
+{
+ my ($group, $user) = @_;
+
+ my $grp_line = get_group_dn($group);
+ if (!defined($grp_line)) {
+ return 0;
+ }
+ my $members = `$ldapsearch -b '$groupsdn' -s '$scope' '(&(objectclass=posixgroup)(cn=$group))' | grep -i "^memberUid:"`;
+
+ #print "avant ---\n$members\n";
+ $members =~ s/memberUid: $user\n//;
+ #print "----\n$members\n---\n";
+
+ chomp($members);
+
+ my $header;
+ if ($members eq '') {
+ $header = "changetype: modify\n";
+ $header .= "delete: memberUid";
+ } else {
+ $header = "changetype: modify\n";
+ $header .= "replace: memberUid";
+ }
+
+ my $tmpldif =
+"$grp_line
+$header
+$members
+";
+ die "$0: error while modifying group $group\n"
+ unless (do_ldapmodify($tmpldif) == 0);
+ undef $tmpldif;
+
+ return 1;
+}
+
+sub group_get_members
+{
+ my ($group) = @_;
+ my @members;
+
+ my $grp_line = get_group_dn($group);
+ if (!defined($grp_line)) {
+ return 0;
+ }
+ my $members = `$ldapsearch -b '$groupsdn' -s '$scope' '(&(objectclass=posixgroup)(cn=$group))' memberUid | grep -i "^memberUid:"`;
+
+ my @lines = split (/\n/, $members);
+ foreach my $line (@lines) {
+ $line =~ s/^memberUid: //;
+ push(@members, $line);
+ }
+
+ return @members;
+}
+
+sub file_write {
+ my ($filename, $filecontent) = @_;
+ local *FILE;
+ open (FILE, "> $filename") ||
+ die "Cannot open «$filename» for writing: $!\n";
+ print FILE $filecontent;
+ close FILE;
+}
+
+# wrapper for ldapadd
+sub do_ldapadd2
+{
+ my $ldif = shift;
+
+ my $tempfile = "/tmp/smbldapadd.$$";
+ file_write($tempfile, $ldif);
+
+ my $rc = system "$ldapadd < $tempfile >/dev/null";
+ unlink($tempfile);
+ return $rc;
+}
+
+sub do_ldapadd
+{
+ my $ldif = shift;
+
+ my $FILE = "|$ldapadd >/dev/null";
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+$ldif
+EOF
+ ;
+ close FILE;
+ my $rc = $?;
+ return $rc;
+}
+
+# wrapper for ldapmodify
+sub do_ldapmodify2
+{
+ my $ldif = shift;
+
+ my $tempfile = "/tmp/smbldapmod.$$";
+ file_write($tempfile, $ldif);
+
+ my $rc = system "$ldapmodify -r < $tempfile >/dev/null";
+ unlink($tempfile);
+ return $rc;
+}
+
+sub do_ldapmodify
+{
+ my $ldif = shift;
+
+ my $FILE = "|$ldapmodify -r >/dev/null";
+ open (FILE, $FILE) || die "$!\n";
+ print FILE <<EOF;
+$ldif
+EOF
+ ;
+ close FILE;
+ my $rc = $?;
+
+ return $rc;
+}
+
+
+
+1;
+
diff --git a/examples/VFS/.cvsignore b/examples/VFS/.cvsignore
index 0b0923a496a..e3ebfe8e3d5 100644
--- a/examples/VFS/.cvsignore
+++ b/examples/VFS/.cvsignore
@@ -1,2 +1,6 @@
.libs
*.so
+Makefile
+config.status
+config.log
+config.cache
diff --git a/examples/VFS/Makefile b/examples/VFS/Makefile
deleted file mode 100644
index eaa1ffbb54e..00000000000
--- a/examples/VFS/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Makefile for samba-vfs examples
-#
-#
-
-# Variables
-
-CC = gcc
-LIBTOOL = libtool
-
-SAMBA_SRC = ../../source
-SAMBA_INCL = ../../source/include
-UBIQX_SRC = ../../source/ubiqx
-SMBWR_SRC = ../../source/smbwrapper
-CFLAGS = -I$(SAMBA_SRC) -I$(SAMBA_INCL) -I$(UBIQX_SRC) -I$(SMBWR_SRC) -Wall -g
-VFS_OBJS = audit.so skel.so recycle.so
-
-# Default target
-
-default: $(VFS_OBJS)
-
-# Pattern rules
-
-%.so: %.lo
- $(LIBTOOL) $(CC) -shared -o $@ $< $(LDFLAGS)
-
-%.lo: %.c
- $(LIBTOOL) $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
-
-# Misc targets
-
-clean:
- rm -rf .libs
- rm -f core *~ *% *.bak \
- $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo)
diff --git a/examples/VFS/Makefile.in b/examples/VFS/Makefile.in
new file mode 100644
index 00000000000..a39ab511dd1
--- /dev/null
+++ b/examples/VFS/Makefile.in
@@ -0,0 +1,31 @@
+##########################################################################
+# Makefile.in for Samba VFS modules
+###########################################################################
+
+CC=@CC@
+LIBTOOL=@LIBTOOL@
+CFLAGS=@CFLAGS@
+LDFLAGS=@LDFLAGS@
+
+VFS_OBJS=audit.so skel.so block/block.so recycle/recycle.so
+
+SHELL=/bin/sh
+
+default: $(VFS_OBJS)
+
+# Pattern rules
+
+%.so: %.lo
+ @echo Linking $<
+ @$(LIBTOOL) --mode=link $(CC) -o $@ $< $(LDFLAGS)
+
+%.lo: %.c
+ @echo Compiling $<
+ @$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
+
+# Misc targets
+
+clean:
+ rm -rf .libs */.libs
+ rm -f core *~ *% *.bak *.o */*.o *.lo $(VFS_OBJS)
+
diff --git a/examples/VFS/README b/examples/VFS/README
index d3053a48f3b..475c4ec43fe 100644
--- a/examples/VFS/README
+++ b/examples/VFS/README
@@ -17,14 +17,9 @@ construction. The following VFS modules are given:
connect/disconnect, directory opens/create/remove,
file open/close/rename/unlink/chmod.
- recycle
- Add a recycle bin facility to a samba share
- Copy this to somewhere like /usr/local/samba/lib/recycle.so
- and then add these options on a per-share basis to enable the
- recycle bin :
-
- vfs object = /usr/local/samba/lib/recycle.so
- vfs options= recycle=.recycle
+ recycle/
+ Add a recycle bin facility to a samba share.
+ see recycle/README for details
block/
diff --git a/examples/VFS/block/Makefile b/examples/VFS/block/Makefile
deleted file mode 100644
index 4887915fb4f..00000000000
--- a/examples/VFS/block/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Makefile for samba-vfs examples
-#
-#
-
-# Variables
-
-CC = gcc
-LIBTOOL = libtool
-
-SAMBA_SRC = ../../../source
-SAMBA_INCL = ${SAMBA_SRC}/include
-UBIQX_SRC = ${SAMBA_SRC}/ubiqx
-SMBWR_SRC = ${SAMBA_SRC}/smbwrapper
-CFLAGS = -I$(SAMBA_SRC) -I$(SAMBA_INCL) -I$(UBIQX_SRC) -I$(SMBWR_SRC) -Wall -g
-
-
-VFS_OBJS = block.so
-
-# Default target
-
-default: $(VFS_OBJS)
-
-# Pattern rules
-
-%.so: %.lo
- $(LIBTOOL) $(CC) -shared -o $@ $< $(LDFLAGS)
-
-%.lo: %.c
- $(LIBTOOL) $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
-
-# Misc targets
-
-clean:
- rm -rf .libs
- rm -f core *~ *% *.bak \
- $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo)
diff --git a/examples/VFS/block/block.c b/examples/VFS/block/block.c
index 8c0fa61d506..a8b17a35dd4 100644
--- a/examples/VFS/block/block.c
+++ b/examples/VFS/block/block.c
@@ -47,6 +47,7 @@
+
DIR *block_opendir(struct connection_struct *conn, const char *fname);
int block_connect(struct connection_struct *conn, const char *service, const char *user);
void block_disconnect(struct connection_struct *conn);
@@ -461,7 +462,18 @@ BOOL search(struct stat *stat_buf)
BOOL dir_search(char *link, const char *dir)
{
- char buf[PATH_MAX +1], *ext_path;
+ char *ext_path;
+
+#ifdef PATH_MAX
+ char buf[PATH_MAX +1];
+#else
+#ifdef MAXPATHLEN
+ char buf[MAXPATHLEN +1];
+#else
+ char buf[BUFSIZ];
+#endif
+#endif
+
int len = 0;
struct block_dir *tmp_pblock = pblock_dir;
diff --git a/examples/VFS/configure b/examples/VFS/configure
new file mode 100755
index 00000000000..e70d69f02d7
--- /dev/null
+++ b/examples/VFS/configure
@@ -0,0 +1,1161 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.13
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ --with-included-popt use bundled popt library, not from system"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.13"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+uname=`uname`
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:533: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:563: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_prog_rejected=no
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test -z "$CC"; then
+ case "`uname -s`" in
+ *win32* | *WIN32*)
+ # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:614: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="cl"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+ ;;
+ esac
+ fi
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:646: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 657 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:688: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:693: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.c <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+else
+ ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:721: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+else
+ ac_cv_prog_cc_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+
+
+# Extract the first word of "libtool", so it can be a program name with args.
+set dummy libtool; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:756: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_LIBTOOL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$LIBTOOL" in
+ /*)
+ ac_cv_path_LIBTOOL="$LIBTOOL" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_LIBTOOL="$LIBTOOL" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_LIBTOOL="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+LIBTOOL="$ac_cv_path_LIBTOOL"
+if test -n "$LIBTOOL"; then
+ echo "$ac_t""$LIBTOOL" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test "$LIBTOOL" = ""; then
+ echo
+ echo 'FATAL ERROR: libtool does not seem to be installed.'
+ echo $pkg_name cannot be built without a working libtool installation.
+ exit 1
+fi
+
+#
+# Config CFLAGS settings
+#
+CFLAGS="-Wall"
+
+case "$uname" in
+ AIX)
+ if test "${GCC}" = "yes"; then
+ CFLAGS="$CFLAGS -I/usr/include -D_LINUX_SOURCE_COMPAT"
+ else
+ CFLAGS="-D_LINUX_SOURCE_COMPAT"
+ fi
+ ;;
+ SunOS)
+ if test "${GCC}" = "yes"; then
+ CFLAGS="$CFLAGS"
+ else
+ CFLAGS=""
+ fi
+ ;;
+# Linux)
+# CFLAGS="-Wall"
+# ;;
+esac
+
+#
+# Config LDLAGS settings
+#
+LDFLAGS="-shared"
+
+case "$uname" in
+ AIX)
+ LDFLAGS="-Wl,-G,-bexpall,-bnoentry"
+ ;;
+ SunOS)
+ LDFLAGS="-G"
+ ;;
+# Linux)
+# echo "Linux found"
+# LDFLAGS="-shared"
+# ;;
+esac
+
+#################################################
+# Check to see if we should use the included popt
+
+# Check whether --with-included-popt or --without-included-popt was given.
+if test "${with_included_popt+set}" = set; then
+ withval="$with_included_popt"
+
+ case "$withval" in
+ yes)
+ INCLUDED_POPT=yes
+ ;;
+ no)
+ INCLUDED_POPT=no
+ ;;
+ esac
+fi
+
+if test x"$INCLUDED_POPT" != x"yes"; then
+ echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6
+echo "configure:857: checking for poptGetContext in -lpopt" >&5
+ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lpopt $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 865 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char poptGetContext();
+
+int main() {
+poptGetContext()
+; return 0; }
+EOF
+if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ INCLUDED_POPT=no
+else
+ echo "$ac_t""no" 1>&6
+INCLUDED_POPT=yes
+fi
+
+fi
+
+echo $ac_n "checking whether to use included popt""... $ac_c" 1>&6
+echo "configure:900: checking whether to use included popt" >&5
+if test x"$INCLUDED_POPT" = x"yes"; then
+ echo "$ac_t""$srcdir/popt" 1>&6
+ CFLAGS="$CFLAGS -I../../source/popt"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+CFLAGS="$CFLAGS -I../../source -I../../source/include -I../../source/ubiqx -I../../source/smbwrapper"
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+cat > conftest.defs <<\EOF
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
+s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
+s%\[%\\&%g
+s%\]%\\&%g
+s%\$%$$%g
+EOF
+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
+rm -f conftest.defs
+
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+
+trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@CC@%$CC%g
+s%@LIBTOOL@%$LIBTOOL%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
diff --git a/examples/VFS/configure.in b/examples/VFS/configure.in
new file mode 100644
index 00000000000..2afa2e1a044
--- /dev/null
+++ b/examples/VFS/configure.in
@@ -0,0 +1,92 @@
+dnl Samba VFS Modules
+
+AC_INIT
+
+uname=`uname`
+
+dnl Check programs needed
+AC_PROG_CC
+
+dnl ensure libtool is installed
+AC_PATH_PROG(LIBTOOL, libtool,,)
+if test "$LIBTOOL" = ""; then
+ echo
+ echo 'FATAL ERROR: libtool does not seem to be installed.'
+ echo $pkg_name cannot be built without a working libtool installation.
+ exit 1
+fi
+
+#
+# Config CFLAGS settings
+#
+CFLAGS="-Wall"
+
+case "$uname" in
+ AIX)
+ if test "${GCC}" = "yes"; then
+ CFLAGS="$CFLAGS -I/usr/include -D_LINUX_SOURCE_COMPAT"
+ else
+ CFLAGS="-D_LINUX_SOURCE_COMPAT"
+ fi
+ ;;
+ SunOS)
+ if test "${GCC}" = "yes"; then
+ CFLAGS="$CFLAGS"
+ else
+ CFLAGS=""
+ fi
+ ;;
+# Linux)
+# CFLAGS="-Wall"
+# ;;
+esac
+
+#
+# Config LDLAGS settings
+#
+LDFLAGS="-shared"
+
+case "$uname" in
+ AIX)
+ LDFLAGS="-Wl,-G,-bexpall,-bnoentry"
+ ;;
+ SunOS)
+ LDFLAGS="-G"
+ ;;
+# Linux)
+# echo "Linux found"
+# LDFLAGS="-shared"
+# ;;
+esac
+
+#################################################
+# Check to see if we should use the included popt
+
+AC_ARG_WITH(included-popt,
+[ --with-included-popt use bundled popt library, not from system],
+[
+ case "$withval" in
+ yes)
+ INCLUDED_POPT=yes
+ ;;
+ no)
+ INCLUDED_POPT=no
+ ;;
+ esac ],
+)
+if test x"$INCLUDED_POPT" != x"yes"; then
+ AC_CHECK_LIB(popt, poptGetContext,
+ INCLUDED_POPT=no, INCLUDED_POPT=yes)
+fi
+
+AC_MSG_CHECKING(whether to use included popt)
+if test x"$INCLUDED_POPT" = x"yes"; then
+ AC_MSG_RESULT($srcdir/popt)
+ CFLAGS="$CFLAGS -I../../source/popt"
+else
+ AC_MSG_RESULT(no)
+fi
+
+CFLAGS="$CFLAGS -I../../source -I../../source/include -I../../source/ubiqx -I../../source/smbwrapper"
+
+AC_OUTPUT([Makefile])
diff --git a/examples/VFS/recycle.c b/examples/VFS/recycle.c
deleted file mode 100644
index 74d3657895a..00000000000
--- a/examples/VFS/recycle.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Auditing VFS module for samba. Log selected file operations to syslog
- * facility.
- *
- * Copyright (C) 2001, Brandon Stone, Amherst College, <bbstone@amherst.edu>.
- * Copyright (C) 2002, Jeremy Allison - modified to make a VFS module.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#include <stdio.h>
-#include <sys/stat.h>
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#include <syslog.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <errno.h>
-#include <string.h>
-#include <includes.h>
-#include <vfs.h>
-
-/* VFS operations */
-
-extern struct vfs_ops default_vfs_ops; /* For passthrough operation */
-
-static int recycle_unlink(connection_struct *, const char *);
-static int recycle_connect(struct connection_struct *conn, const char *service, const char *user);
-static void recycle_disconnect(struct connection_struct *conn);
-
-struct vfs_ops recycle_ops = {
-
- /* Disk operations */
-
- recycle_connect, /* connect */
- recycle_disconnect, /* disconnect */
- NULL, /* disk free */
-
- /* Directory operations */
-
- NULL, /* opendir */
- NULL, /* readdir */
- NULL, /* mkdir */
- NULL, /* rmdir */
- NULL, /* closedir */
-
- /* File operations */
-
- NULL, /* open */
- NULL, /* close */
- NULL, /* read */
- NULL, /* write */
- NULL, /* lseek */
- NULL, /* rename */
- NULL, /* fsync */
- NULL, /* stat */
- NULL, /* fstat */
- NULL, /* lstat */
- recycle_unlink,
- NULL, /* chmod */
- NULL, /* fchmod */
- NULL, /* chown */
- NULL, /* fchown */
- NULL, /* chdir */
- NULL, /* getwd */
- NULL, /* utime */
- NULL, /* ftruncate */
- NULL, /* lock */
- NULL, /* symlink */
- NULL, /* readlink */
- NULL, /* link */
- NULL, /* mknod */
- NULL, /* realpath */
- NULL, /* fget_nt_acl */
- NULL, /* get_nt_acl */
- NULL, /* fset_nt_acl */
- NULL, /* set_nt_acl */
-
- NULL, /* chmod_acl */
- NULL, /* fchmod_acl */
-
- NULL, /* 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 */
- NULL, /* sys_acl_get_fd */
- NULL, /* 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 */
- NULL, /* sys_acl_set_fd */
- NULL, /* sys_acl_delete_def_file */
- NULL, /* sys_acl_get_perm */
- NULL, /* sys_acl_free_text */
- NULL, /* sys_acl_free_acl */
- NULL /* sys_acl_free_qualifier */
-};
-
-/* VFS initialisation function. Return initialised vfs_ops structure
- back to SAMBA. */
-
-struct vfs_ops *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops)
-{
- struct vfs_ops tmp_ops;
-
- *vfs_version = SMB_VFS_INTERFACE_VERSION;
- memcpy(&tmp_ops, def_vfs_ops, sizeof(struct vfs_ops));
- tmp_ops.unlink = recycle_unlink;
- tmp_ops.connect = recycle_connect;
- tmp_ops.disconnect = recycle_disconnect;
- memcpy(&recycle_ops, &tmp_ops, sizeof(struct vfs_ops));
- return &recycle_ops;
-}
-
-static int recycle_connect(struct connection_struct *conn, const char *service, const char *user)
-{
- pstring opts_str;
- fstring recycle_bin;
- char *p;
-
- DEBUG(3,("recycle_connect: called for service %s as user %s\n", service, user));
-
- pstrcpy(opts_str, (const char *)lp_vfs_options(SNUM(conn)));
- if (!*opts_str) {
- DEBUG(3,("recycle_connect: No options listed (%s).\n", lp_vfs_options(SNUM(conn)) ));
- return 0; /* No options. */
- }
-
- p = opts_str;
- if (next_token(&p,recycle_bin,"=",sizeof(recycle_bin))) {
- if (!strequal("recycle", recycle_bin)) {
- DEBUG(3,("recycle_connect: option %s is not recycle\n", recycle_bin ));
- return -1;
- }
- }
-
- if (!next_token(&p,recycle_bin," \n",sizeof(recycle_bin))) {
- DEBUG(3,("recycle_connect: no option after recycle=\n"));
- return -1;
- }
-
- DEBUG(10,("recycle_connect: recycle name is %s\n", recycle_bin ));
-
- conn->vfs_private = (void *)strdup(recycle_bin);
- return 0;
-}
-
-static void recycle_disconnect(struct connection_struct *conn)
-{
- SAFE_FREE(conn->vfs_private);
-}
-
-static BOOL recycle_XXX_exist(connection_struct *conn, const char *dname, BOOL isdir)
-{
- SMB_STRUCT_STAT st;
-
- if (default_vfs_ops.stat(conn,dname,&st) != 0)
- return(False);
-
- if (isdir)
- return S_ISDIR(st.st_mode) ? True : False;
- else
- return S_ISREG(st.st_mode) ? True : False;
-}
-
-static BOOL recycle_directory_exist(connection_struct *conn, const char *dname)
-{
- return recycle_XXX_exist(conn, dname, True);
-}
-
-static BOOL recycle_file_exist(connection_struct *conn, const char *fname)
-{
- return recycle_XXX_exist(conn, fname, False);
-}
-
-static SMB_OFF_T recycle_get_file_size(connection_struct *conn, const char *fname)
-{
- SMB_STRUCT_STAT st;
-
- if (default_vfs_ops.stat(conn,fname,&st) != 0)
- return (SMB_OFF_T)-1;
-
- return(st.st_size);
-}
-
-/********************************************************************
- Check if file should be recycled
-*********************************************************************/
-
-static int recycle_unlink(connection_struct *conn, const char *inname)
-{
- fstring recycle_bin;
- pstring fname;
- char *base, *ext;
- pstring bin;
- int i=1, len, addlen;
- int dir_mask=0770;
- SMB_BIG_UINT dfree,dsize,bsize;
-
- *recycle_bin = '\0';
- pstrcpy(fname, inname);
-
- if (conn->vfs_private)
- fstrcpy(recycle_bin, (const char *)conn->vfs_private);
-
- if(!*recycle_bin) {
- DEBUG(3, ("recycle bin: share parameter not set, purging %s...\n", fname));
- return default_vfs_ops.unlink(conn,fname);
- }
-
- if(recycle_get_file_size(conn, fname) == 0) {
- DEBUG(3, ("recycle bin: file %s is empty, purging...\n", fname));
- return default_vfs_ops.unlink(conn,fname);
- }
-
- base = strrchr(fname, '/') + 1;
- if(base == (char*)1)
- ext = strrchr(fname, '.');
- else
- ext = strrchr(base, '.');
-
- pstrcpy(bin, recycle_bin);
- pstrcat(bin, "/");
- pstrcat(bin, base);
-
- if(strcmp(fname,bin) == 0) {
- DEBUG(3, ("recycle bin: file %s exists, purging...\n", fname));
- return default_vfs_ops.unlink(conn,fname);
- }
-
- len = strlen(bin);
- addlen = sizeof(pstring)-len-1;
- while(recycle_file_exist(conn,bin)) {
- slprintf(bin+len, addlen, " (Copy #%d)", i++);
- pstrcat(bin, ext);
- }
-
- DEBUG(3, ("recycle bin: moving source=%s to dest=%s\n", fname, bin));
- default_vfs_ops.disk_free(conn,".",True,&bsize,&dfree,&dsize);
- if((unsigned int)dfree > 0) {
- int ret;
- if(!recycle_directory_exist(conn,recycle_bin)) {
- DEBUG(3, ("recycle bin: directory %s nonexistant, creating...\n", recycle_bin));
- if (default_vfs_ops.mkdir(conn,recycle_bin,dir_mask) == -1) {
- DEBUG(3, ("recycle bin: unable to create directory %s. Error was %s\n",
- recycle_bin, strerror(errno) ));
- }
- }
- DEBUG(3, ("recycle bin: move %s -> %s\n", fname, bin));
-
- ret = default_vfs_ops.rename(conn, fname, bin);
- if (ret == -1) {
- DEBUG(3, ("recycle bin: move error %d (%s)\n", errno, strerror(errno) ));
- DEBUG(3, ("recycle bin: move failed, purging...\n"));
- return default_vfs_ops.unlink(conn,fname);
- }
- return ret;
- } else {
- DEBUG(3, ("recycle bin: move failed, purging...\n"));
- return default_vfs_ops.unlink(conn,fname);
- }
-}
diff --git a/examples/VFS/recycle/README b/examples/VFS/recycle/README
new file mode 100644
index 00000000000..2b85a65925e
--- /dev/null
+++ b/examples/VFS/recycle/README
@@ -0,0 +1,83 @@
+The recycle VFS module implements a recycle bin for Samba.
+Deleted files will be moved to a special directory and
+not be deleted unless specified in the configuration file.
+It is up to the administrator/user to clean up the files
+in the recycle bin.
+
+Installation:
+
+1. Build VFS module using the GNU autoconf script and Makefile
+ in the parent directory (cd .. && ./configure && make)
+2. Install module by copying to /usr/lib/samba/vfs (or any other place you like)
+3. Install/modify recycle.conf. See below for the description
+4. Modify smb.conf to use the recycle module
+ Add the lines "vfs object = /usr/lib/samba/recycle.so"
+ and "vfs options = /etc/samba/recycle.conf".
+5. Start Samba
+
+
+Options for recycle.conf:
+name
+ name of the recycle bin at root level of the share
+ allows smb.conf substutitions like %U.
+ Example:
+ name = .recycle/%U
+
+mode
+ KEEP_DIRECTORIES : retain directory hierarchy of deleted file,
+ VERSIONS : create several versions of a file in recycle bin if
+ the file already exists in the recycle bin
+ e.g. mytext.doc
+ Copy #1 of mytext.doc
+ Copy #2 of mytext.doc
+
+ TOUCH : touch access date when moving files to the recycle bin.
+ This is useful for automatic cleanup scripts.
+ Attn: This doesn't work if you have no write permissions
+ to the file being deleted. Deletion works if you
+ have write permissions to the parent directory.
+ Example:
+ mode = KEEP_DIRECTORIES|VERSIONS|TOUCH
+
+maxsize
+ maximum size of files to be moved to recycle bin. Setting this zo
+ zero (default) moves files of any size to the recycle bin.
+ Example:
+ maxsize = 0
+
+exclude
+ exclude files from moving to recycle bin. Delete them immediately
+ Useful for temporary files. You can use the wildcards * and ?
+ Example:
+ exclude = *.tmp|*.temp|*.obj|~$*|*.$$$
+
+excludedir
+ exclude directories from the recycle bin, useful for temporary
+ directories.
+ Example
+ excludedir = /tmp|/temp|/trash
+
+noversions
+ don't create versions of files in the recycle bin. Only usefull if
+ mode = VERSIONS is set.
+ Examples:
+ noversions = *.doc|*.xls|*.ppt
+
+Example smb.conf:
+
+[homes]
+ comment = Home-directory
+ path = /home/%u
+ read only = No
+ create mask = 0750
+ vfs object = /usr/lib/samba/recycle.so
+ vfs options = /etc/samba/recycle.conf
+
+Example recycle.conf:
+
+name = .recycle/%U
+mode = KEEP_DIRECTORIES|NOVERSIONS|TOUCH
+maxsize = 0
+exclude = *.tmp|*.temp|*.o|*.obj|~$*
+excludedir = /tmp|/temp|/cache
+noversions = *.doc|*.xls|*.ppt
diff --git a/examples/VFS/recycle/cleanup_recycle.pl b/examples/VFS/recycle/cleanup_recycle.pl
new file mode 100644
index 00000000000..f614cf78708
--- /dev/null
+++ b/examples/VFS/recycle/cleanup_recycle.pl
@@ -0,0 +1,25 @@
+# !/usr/bin/perl -w
+#
+# this script looks for all files with an access date older than
+# $maxage days and deletes them.
+# Empty directories will be deleted afterwards
+#
+
+$dirpath = "/data/.recycle";
+$maxage = 2;
+
+# delete all old files
+@a=`find $dirpath -atime +$maxage`;
+foreach (@a)
+ {
+ print "deleting file: $_";
+ $r = `rm -f $_ 2> /dev/zero`;
+ }
+
+# delete all empty directories
+@a=`find $dirpath -type d | sort -r`;
+foreach (@a)
+ {
+ print "deleting directory: $_";
+ $r = `rmdir $_ 2> /dev/zero`;
+ }
diff --git a/examples/VFS/recycle/recycle.c b/examples/VFS/recycle/recycle.c
new file mode 100644
index 00000000000..3d2d5d79697
--- /dev/null
+++ b/examples/VFS/recycle/recycle.c
@@ -0,0 +1,556 @@
+/*
+ * Recycle bin VFS module for Samba.
+ *
+ * Copyright (C) 2001, Brandon Stone, Amherst College, <bbstone@amherst.edu>.
+ * Copyright (C) 2002, Jeremy Allison - modified to make a VFS module.
+ * Copyright (C) 2002, Juergen Hasch - added some options.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <sys/stat.h>
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <errno.h>
+#include <string.h>
+#include <includes.h>
+#include <vfs.h>
+
+const char delimiter = '|'; /* delimiter for options */
+
+/* One per connection */
+
+typedef struct recycle_bin_struct
+{
+ TALLOC_CTX *ctx;
+ char *recycle_bin; /* name of the recycle bin directory */
+ BOOL keep_directories; /* keep directory structure of deleted file in recycle bin */
+ BOOL versions; /* create versions of deleted files with identical name */
+ BOOL touch; /* touch access date of deleted file */
+ char *exclude; /* which files to exclude */
+ char *exclude_dir; /* which directories to exclude */
+ char *noversions; /* which files to exclude from versioning */
+ SMB_OFF_T max_size; /* maximum file size to be saved */
+} recycle_bin_struct;
+
+/* Global Variables */
+static recycle_bin_struct *current;
+
+/* VFS operations */
+
+extern struct vfs_ops default_vfs_ops; /* For passthrough operation */
+
+static int recycle_unlink(connection_struct *, const char *);
+static int recycle_connect(struct connection_struct *conn, const char *service, const char *user);
+static void recycle_disconnect(struct connection_struct *conn);
+
+BOOL checkparam(char *haystack,char *needle);
+
+struct vfs_ops recycle_ops = {
+
+ /* Disk operations */
+
+ recycle_connect, /* connect */
+ recycle_disconnect, /* disconnect */
+ NULL, /* disk free */
+
+ /* Directory operations */
+
+ NULL, /* opendir */
+ NULL, /* readdir */
+ NULL, /* mkdir */
+ NULL, /* rmdir */
+ NULL, /* closedir */
+
+ /* File operations */
+
+ NULL, /* open */
+ NULL, /* close */
+ NULL, /* read */
+ NULL, /* write */
+ NULL, /* lseek */
+ NULL, /* rename */
+ NULL, /* fsync */
+ NULL, /* stat */
+ NULL, /* fstat */
+ NULL, /* lstat */
+ recycle_unlink,
+ NULL, /* chmod */
+ NULL, /* fchmod */
+ NULL, /* chown */
+ NULL, /* fchown */
+ NULL, /* chdir */
+ NULL, /* getwd */
+ NULL, /* utime */
+ NULL, /* ftruncate */
+ NULL, /* lock */
+ NULL, /* symlink */
+ NULL, /* readlink */
+ NULL, /* link */
+ NULL, /* mknod */
+ NULL, /* realpath */
+ NULL, /* fget_nt_acl */
+ NULL, /* get_nt_acl */
+ NULL, /* fset_nt_acl */
+ NULL, /* set_nt_acl */
+
+ NULL, /* chmod_acl */
+ NULL, /* fchmod_acl */
+
+ NULL, /* 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 */
+ NULL, /* sys_acl_get_fd */
+ NULL, /* 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 */
+ NULL, /* sys_acl_set_fd */
+ NULL, /* sys_acl_delete_def_file */
+ NULL, /* sys_acl_get_perm */
+ NULL, /* sys_acl_free_text */
+ NULL, /* sys_acl_free_acl */
+ NULL /* sys_acl_free_qualifier */
+};
+
+/**
+ * Parse recycle bin configuration parameters
+ *
+ * @retval False if out of memory
+ **/
+static BOOL do_parameter(char *pszParmName, char *pszParmValue)
+{
+ if (StrCaseCmp("name",pszParmName)==0) {
+ current->recycle_bin = (char *)talloc(current->ctx,sizeof(pstring));
+ if (current->recycle_bin == NULL)
+ return False;
+ current->recycle_bin = safe_strcpy(current->recycle_bin,pszParmValue,sizeof(pstring));
+ standard_sub_basic(current->recycle_bin);
+ trim_string(current->recycle_bin,"/","/");
+ DEBUG(10, ("name=%s\n", current->recycle_bin));
+ } else if (StrCaseCmp("mode",pszParmName)==0) {
+ if (checkparam(pszParmValue,"KEEP_DIRECTORIES") == True)
+ current->keep_directories = True;
+ if (checkparam(pszParmValue,"VERSIONS") == True)
+ current->versions = True;
+ if (checkparam(pszParmValue,"TOUCH") == True)
+ current->touch = True;
+ DEBUG(10, ("mode=%s\n", pszParmValue));
+ } else if (StrCaseCmp("maxsize",pszParmName)==0) {
+ current->max_size = strtoul(pszParmValue,NULL,10);
+ DEBUG(10, ("max_size=%ld\n", (long int)current->max_size));
+ } else if (StrCaseCmp("exclude",pszParmName)==0) {
+ current->exclude = talloc_strdup(current->ctx, pszParmValue);
+ if (current->exclude == NULL)
+ return False;
+ DEBUG(10, ("exclude=%s\n", current->exclude));
+ } else if (StrCaseCmp("excludedir",pszParmName)==0) {
+ current->exclude_dir = talloc_strdup(current->ctx, pszParmValue);
+ if (current->exclude_dir == NULL)
+ return False;
+ DEBUG(10, ("exclude_dir=%s\n", current->exclude_dir));
+ } else if (StrCaseCmp("noversions",pszParmName)==0) {
+ current->noversions = talloc_strdup(current->ctx, pszParmValue);
+ if (current->noversions == NULL)
+ return False;
+ DEBUG(10, ("noversions=%s\n", current->noversions));
+ }
+ return True;
+}
+
+/**
+ * We don't care for sections in configuration file
+ *
+ **/
+static BOOL do_section(char *pszSectionName)
+{
+ return True;
+}
+
+/**
+ * VFS initialisation function.
+ *
+ * @retval initialised vfs_ops structure
+ **/
+struct vfs_ops *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops)
+{
+ struct vfs_ops tmp_ops;
+ DEBUG(3, ("Initializing VFS module recycle\n"));
+
+ *vfs_version = SMB_VFS_INTERFACE_VERSION;
+ memcpy(&tmp_ops, def_vfs_ops, sizeof(struct vfs_ops));
+ tmp_ops.unlink = recycle_unlink;
+ tmp_ops.connect = recycle_connect;
+ tmp_ops.disconnect = recycle_disconnect;
+ memcpy(&recycle_ops, &tmp_ops, sizeof(struct vfs_ops));
+ return &recycle_ops;
+}
+
+static int recycle_connect(struct connection_struct *conn, const char *service, const char *user)
+{
+ const char *p;
+ pstring conf_file;
+ int rc;
+ TALLOC_CTX *ctx=NULL;
+
+ DEBUG(3,("Called for service %s (%d) as user %s\n", service, SNUM(conn), user));
+
+ if (!(ctx = talloc_init_named("recycle bin"))) {
+ DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
+ return 0;
+ }
+
+ /* read configuration file */
+ *conf_file='\0';
+ p = (const char *)lp_vfs_options(SNUM(conn));
+ if (p != NULL && strlen(p) > 0) {
+ pstrcpy(conf_file,p);
+ DEBUG(10,("Using configuration file %s\n",conf_file));
+ }
+
+ current = talloc(ctx,sizeof(recycle_bin_struct));
+ if ( current == NULL) {
+ DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
+ return -1;
+ }
+ current->ctx = ctx;
+ /* Set defaults */
+ current->recycle_bin = talloc_strdup(ctx,".recycle");
+ current->keep_directories = False;
+ current->versions = False;
+ current->touch = False;
+ current->exclude = "";
+ current->exclude_dir = "";
+ current->noversions = "";
+ current->max_size = 0;
+ if (strlen(conf_file) > 0) {
+ rc=pm_process( conf_file, do_section, do_parameter);
+ DEBUG(10, ("pm_process returned %d\n", rc));
+ }
+ conn->vfs_private= (void *)current;
+ return 0;
+}
+
+static void recycle_disconnect(struct connection_struct *conn)
+{
+ DEBUG(3, ("Disconnecting VFS module recycle_bin\n"));
+ talloc_destroy(((recycle_bin_struct*)conn->vfs_private)->ctx);
+ default_vfs_ops.disconnect(conn);
+}
+
+static BOOL recycle_XXX_exist(connection_struct *conn, const char *dname, BOOL isdir)
+{
+ SMB_STRUCT_STAT st;
+
+ if (default_vfs_ops.stat(conn,dname,&st) != 0)
+ return(False);
+
+ if (isdir)
+ return S_ISDIR(st.st_mode) ? True : False;
+ else
+ return S_ISREG(st.st_mode) ? True : False;
+}
+
+static BOOL recycle_directory_exist(connection_struct *conn, const char *dname)
+{
+ return recycle_XXX_exist(conn, dname, True);
+}
+
+static BOOL recycle_file_exist(connection_struct *conn, const char *fname)
+{
+ return recycle_XXX_exist(conn, fname, False);
+}
+
+/**
+ * Return file size
+ * @param conn connection
+ * @param fname file name
+ * @return size in bytes
+ **/
+static SMB_OFF_T recycle_get_file_size(connection_struct *conn, const char *fname)
+{
+ SMB_STRUCT_STAT st;
+ if (default_vfs_ops.stat(conn,fname,&st) != 0) {
+ DEBUG(0,("stat for %s returned %s\n",fname,strerror(errno)));
+ return (SMB_OFF_T)0;
+ }
+ return(st.st_size);
+}
+
+/**
+ * Create directory tree
+ * @param conn connection
+ * @param dname Directory tree to be created
+ * @return Returns True for success
+ **/
+static BOOL recycle_create_dir(connection_struct *conn, const char *dname)
+{
+ char *c,*y;
+ int i;
+
+ mode_t mode;
+ pstring tempstr;
+ pstring newdir;
+
+ *newdir='\0';
+ mode=S_IREAD|S_IWRITE|S_IEXEC;
+ pstrcpy(tempstr,dname);
+ y=tempstr;
+ /* Create directory tree if neccessary */
+ while((c=strsep(&y,"/"))) {
+ pstrcat(newdir,c);
+ if (recycle_directory_exist(conn,newdir))
+ DEBUG(3, ("dir %s already exists\n",newdir));
+ else {
+ DEBUG(3, ("creating new dir %s\n",newdir));
+ i=default_vfs_ops.mkdir(conn,newdir,mode);
+ if (i) {
+ DEBUG(3,("mkdir failed for %s with error %s\n",newdir,strerror(errno)));
+ return False;
+ }
+ }
+ pstrcat(newdir,"/");
+ }
+ return True;
+}
+
+/**
+ * Check if needle is contained exactly in haystack
+ * @param haystack list of parameters separated by delimimiter character
+ * @param needle string to be matched exactly to haystack
+ * @return True if found
+ **/
+BOOL checkparam(char *haystack,char *needle)
+{
+ char *p,*c;
+ pstring str;
+ int i,len;
+
+ if (haystack==NULL || strlen(haystack)==0 || needle == NULL || strlen(needle)== 0)
+ return False;
+
+ pstrcpy(str,haystack);
+ len=strlen(str)+1;
+ p=c=str;
+
+ for (i=0; i < len; i++, p++) {
+ if (*p == delimiter || *p == '\0') {
+ *p='\0';
+ if(strncmp(c,needle,c-p) == 0)
+ return True;
+ c=p+1;
+ }
+ }
+ return False;
+}
+
+/**
+ * Check if needle is contained in haystack, * and ? patterns are resolved
+ * @param haystack list of parameters separated by delimimiter character
+ * @param needle string to be matched exectly to haystack including pattern matching
+ * @return True if found
+ **/
+BOOL matchparam(char *haystack,char *needle)
+{
+ char *p,*c;
+ pstring str;
+ int i,len;
+
+ if (haystack==NULL || strlen(haystack)==0 || needle == NULL || strlen(needle)== 0)
+ return False;
+
+ pstrcpy(str,haystack);
+ len=strlen(str)+1;
+ p=c=str;
+
+ for (i=0; i < len; i++, p++) {
+ if (*p == delimiter || *p == '\0') {
+ *p='\0';
+ if (!unix_wild_match(c,needle))
+ return True;
+ c=p+1;
+ }
+ }
+ return False;
+}
+
+/**
+ * Touch access date
+ **/
+void recycle_touch(connection_struct *conn, const char *fname)
+{
+ SMB_STRUCT_STAT st;
+ struct utimbuf tb;
+ time_t current;
+
+ if (default_vfs_ops.stat(conn,fname,&st) != 0) {
+ DEBUG(0,("stat for %s returned %s\n",fname,strerror(errno)));
+ return;
+ }
+ current = time(&current);
+ tb.actime = current;
+ tb.modtime = st.st_mtime;
+
+ if (default_vfs_ops.utime(conn, fname, &tb) == -1 )
+ DEBUG(0, ("Touching %s failed, reason = %s\n",fname,strerror(errno)));
+ }
+
+/**
+ * Check if file should be recycled
+ **/
+static int recycle_unlink(connection_struct *conn, const char *inname)
+{
+ pstring fname,fpath, bin;
+ char *base, *ext;
+ int i=1, len, addlen;
+ SMB_BIG_UINT dfree,dsize,bsize;
+ SMB_OFF_T fsize,space_avail;
+ BOOL exist;
+ int rc;
+
+ pstrcpy(fname,inname);
+ if (conn->vfs_private)
+ current = (recycle_bin_struct *)conn->vfs_private;
+ else {
+ DEBUG(0,("Recycle bin not initialized!\n"));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ if(!current->recycle_bin || !*(current->recycle_bin)) {
+ DEBUG(3, ("Recycle path not set, purging %s...\n", fname));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ /* we don't recycle the recycle bin... */
+ if (strstr(fname,current->recycle_bin)==fname) {
+ DEBUG(3, ("File is within recycling bin\n"));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ fsize = recycle_get_file_size(conn,fname);
+ if(fsize == 0) {
+ DEBUG(3, ("File %s is empty, purging...\n", fname));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ if(current->max_size > 0 && fsize > current->max_size) {
+ DEBUG(3, ("File %s exceeds maximum recycle size, purging... \n", fname));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ space_avail = default_vfs_ops.disk_free(conn,".",True,&bsize,&dfree,&dsize)*1024L;
+ DEBUG(10,("space_avail = %Lu, fsize = %Lu\n",space_avail,fsize));
+ if(space_avail < fsize) {
+ DEBUG(3, ("Not enough diskspace, purging file %s\n",fname));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ /* extract filename and path */
+ pstrcpy(fpath,"/");
+ pstrcat(fpath, fname);
+ base = strrchr(fpath, '/');
+ if (base == NULL) {
+ ext = strrchr(fname, '.');
+ base = (char *)fname;
+ pstrcpy(fpath,"/");
+ }
+ else {
+ ext = strrchr(base, '.');
+ *(base++) = '\0';
+ }
+
+ DEBUG(10, ("fname:%s\n", fname)); /* original filename with path */
+ DEBUG(10, ("fpath:%s\n", fpath)); /* original path */
+ DEBUG(10, ("base:%s\n", base)); /* filename without path */
+ DEBUG(10, ("ext:%s\n", ext)); /* filename extension */
+
+ if (matchparam(current->exclude,base)) {
+ DEBUG(3, ("file %s is excluded \n",base));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ if (checkparam(current->exclude_dir,fpath)) {
+ DEBUG(3, ("directory %s is excluded \n",fpath));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ pstrcpy(bin, current->recycle_bin);
+
+ /* see if we need to recreate the original directory structure in the recycle bin */
+ if (current->keep_directories == True)
+ pstrcat(bin, fpath);
+
+ exist=recycle_directory_exist(conn,bin);
+ if (exist)
+ DEBUG(10, ("Directory already exists\n"));
+ else {
+ DEBUG(10, ("Creating directory %s\n",bin));
+ rc=recycle_create_dir(conn,bin);
+ if (rc == False)
+ {
+ DEBUG(3, ("Could not create directory, purging %s...\n", fname));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+ }
+
+ pstrcat(bin, "/");
+ pstrcat(bin,base);
+ DEBUG(10, ("bin:%s\n", bin)); /* new filename with path */
+
+ /* check if we should delete file from recycle bin */
+ if (recycle_file_exist(conn,bin)) {
+ if (current->versions == False || matchparam(current->noversions,base) == True) {
+ DEBUG(3, ("Removing old file %s from recycle bin\n",bin));
+ default_vfs_ops.unlink(conn,bin);
+ }
+ }
+
+ /* rename file we move to recycle bin */
+ len = strlen(bin);
+ addlen = sizeof(pstring)-len-1;
+ while(recycle_file_exist(conn,bin)) {
+ slprintf(bin+len, addlen, " (Copy #%d)", i++);
+ pstrcat(bin, ext);
+ }
+
+ DEBUG(10, ("Moving source=%s to dest=%s\n", fname, bin));
+ rc = default_vfs_ops.rename(conn, fname, bin);
+ if (rc == -1) {
+ DEBUG(3, ("Move error %d (%s), purging file %s (%s)\n", errno, strerror(errno),fname,bin));
+ return default_vfs_ops.unlink(conn,fname);
+ }
+
+ /* touch access date of moved file */
+ if (current->touch == True )
+ recycle_touch(conn,bin);
+ return rc;
+}
diff --git a/examples/VFS/recycle/recycle.conf b/examples/VFS/recycle/recycle.conf
new file mode 100644
index 00000000000..00cc7982124
--- /dev/null
+++ b/examples/VFS/recycle/recycle.conf
@@ -0,0 +1,17 @@
+# name of the recycle bin at root level of share
+name = .recycle
+# mode :
+# KEEP_DIRECTORIES = retain directory hierarchy of deleted file,
+# i.e. recreate all directories in recycle bin
+# VERSIONS = create copies in case of identical file names in recycle bin
+# TOUCH = touch access date of files moved into the recycle bin
+mode = KEEP_DIRECTORIES|VERSIONS|TOUCH
+# maximum file size to be moved to the recycle bin (0 means any size)
+maxsize = 0
+# exclude file names with the following extensions:
+exclude = *.tmp|*.temp|*.o|*.obj|~$*
+# exclude directories:
+excludedir = /tmp|/temp|/cache
+# Add file extensions of files where no versioning is wanted (i.e. copy # 1...)
+# only valid when mode=VERSIONS is set
+noversions = *.doc|*.xls|*.ppt
diff --git a/examples/libsmbclient/testsmbc.c b/examples/libsmbclient/testsmbc.c
index f67c91073c6..7aae9d85616 100644
--- a/examples/libsmbclient/testsmbc.c
+++ b/examples/libsmbclient/testsmbc.c
@@ -95,10 +95,74 @@ int main(int argc, char *argv[])
if (argc > 1) {
- if ((dh1 = smbc_opendir(argv[1]))<1) {
+ /* Try to list the print jobs ... */
- fprintf(stderr, "Could not open directory: %s: %s\n",
- argv[1], strerror(errno));
+ if (smbc_list_print_jobs("smb://samba/pclp", print_list_fn) < 0) {
+
+ fprintf(stderr, "Could not list print jobs: %s, %d\n", strerror(errno), errno);
+ exit(1);
+
+ }
+
+ /* Try to delete the last job listed */
+
+ if (global_id > 0) {
+
+ fprintf(stdout, "Trying to delete print job %u\n", global_id);
+
+ if (smbc_unlink_print_job("smb://samba/pclp", global_id) < 0) {
+
+ fprintf(stderr, "Failed to unlink job id %u, %s, %u\n", global_id,
+ strerror(errno), errno);
+
+ exit(1);
+
+ }
+
+ }
+
+ /* Try to print a file ... */
+
+ if (smbc_print_file("smb://samba/public/testfile2.txt", "smb://samba/pclp") < 0) {
+
+ fprintf(stderr, "Failed to print job: %s %u\n", strerror(errno), errno);
+ exit(1);
+
+ }
+
+ /* Try to delete argv[1] as a file ... */
+
+ if (smbc_unlink(argv[1]) < 0) {
+
+ fprintf(stderr, "Could not unlink: %s, %s, %d\n",
+ argv[1], strerror(errno), errno);
+
+ exit(0);
+
+ }
+
+ if ((dh1 = smbc_opendir("smb://"))<1) {
+
+ fprintf(stderr, "Could not open directory: smb://: %s\n",
+ strerror(errno));
+
+ exit(1);
+
+ }
+
+ if ((dh2 = smbc_opendir("smb://sambanet")) < 0) {
+
+ fprintf(stderr, "Could not open directory: smb://sambanet: %s\n",
+ strerror(errno));
+
+ exit(1);
+
+ }
+
+ if ((dh3 = smbc_opendir("smb://samba")) < 0) {
+
+ fprintf(stderr, "Could not open directory: smb://samba: %s\n",
+ strerror(errno));
exit(1);
@@ -139,6 +203,62 @@ int main(int argc, char *argv[])
dirp = (char *)dirbuf;
+ if ((dirc = smbc_getdents(dh2, (struct smbc_dirent *)dirp,
+ sizeof(dirbuf))) < 0) {
+
+ fprintf(stderr, "Problems getting directory entries: %s\n",
+ strerror(errno));
+
+ exit(1);
+
+ }
+
+ /* Now, process the list of names ... */
+
+ fprintf(stdout, "\nDirectory listing, size = %u\n", dirc);
+
+ while (dirc > 0) {
+
+ dsize = ((struct smbc_dirent *)dirp)->dirlen;
+ fprintf(stdout, "Dir Ent, Type: %u, Name: %s, Comment: %s\n",
+ ((struct smbc_dirent *)dirp)->smbc_type,
+ ((struct smbc_dirent *)dirp)->name,
+ ((struct smbc_dirent *)dirp)->comment);
+
+ dirp += dsize;
+ (char *)dirc -= dsize;
+
+ }
+
+ dirp = (char *)dirbuf;
+
+ if ((dirc = smbc_getdents(dh3, (struct smbc_dirent *)dirp,
+ sizeof(dirbuf))) < 0) {
+
+ fprintf(stderr, "Problems getting directory entries: %s\n",
+ strerror(errno));
+
+ exit(1);
+
+ }
+
+ /* Now, process the list of names ... */
+
+ fprintf(stdout, "Directory listing, size = %u\n", dirc);
+
+ while (dirc > 0) {
+
+ dsize = ((struct smbc_dirent *)dirp)->dirlen;
+ fprintf(stdout, "\nDir Ent, Type: %u, Name: %s, Comment: %s\n",
+ ((struct smbc_dirent *)dirp)->smbc_type,
+ ((struct smbc_dirent *)dirp)->name,
+ ((struct smbc_dirent *)dirp)->comment);
+
+ (char *)dirp += dsize;
+ (char *)dirc -= dsize;
+
+ }
+
exit(1);
}
diff --git a/examples/smb.conf.default b/examples/smb.conf.default
index 72925cdcb92..90737b37b51 100644
--- a/examples/smb.conf.default
+++ b/examples/smb.conf.default
@@ -3,158 +3,247 @@
# here. Samba has a huge number of configurable options (perhaps too
# many!) most of which are not shown in this example
#
-# Any line which starts with a ; (semi-colon) or a # (hash)
+# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentry and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command "testparm"
-# to check that you have not many any basic syntactic errors.
+# to check that you have not many any basic syntactic errors.
#
#======================= Global Settings =====================================
[global]
-# workgroup = NT-Domain-Name or Workgroup-Name, eg: REDHAT4
- workgroup = MYGROUP
-
-# server string is the equivalent of the NT Description field
- server string = Samba Server
-
-# This option is important for security. It allows you to restrict
-# connections to machines which are on your local network. The
-# following example restricts access to two C class networks and
-# the "loopback" interface. For more examples of the syntax see
-# the smb.conf man page
-; hosts allow = 192.168.1. 192.168.2. 127.
-
-# If you want to automatically load your printer list rather
-# than setting them up individually then you'll need this
- load printers = yes
-
-# you may wish to override the location of the printcap file
-; printcap name = /etc/printcap
-
-# on SystemV system setting printcap name to lpstat should allow
-# you to automatically obtain a printer list from the SystemV spool
-# system
-; printcap name = lpstat
-
-# It should not be necessary to specify the print system type unless
-# it is non-standard. Currently supported print systems include:
-# bsd, sysv, plp, lprng, aix, hpux, qnx
-; printing = bsd
-
-# Uncomment this if you want a guest account, you must add this to /etc/passwd
-# otherwise the user "nobody" is used
-; guest account = pcguest
-
-# this tells Samba to use a separate log file for each machine
-# that connects
- log file = /usr/local/samba/var/log.%m
-
-# Put a capping on the size of the log files (in Kb).
- max log size = 50
-
-# Security mode. Most people will want user level security. See
-# security_level.txt for details.
- security = user
-
-# Use password server option only with security = server
-# The argument list may include:
-# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
-# or to auto-locate the domain controller/s
-# password server = *
-; password server = <NT-Server-Name>
-
-# Note: Do NOT use the now deprecated option of "domain controller"
-# This option is no longer implemented.
-
-# You may wish to use password encryption. Please read
-# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
-# Do not enable this option unless you have read those documents
-; encrypt passwords = yes
-
-# Using the following line enables you to customise your configuration
-# on a per machine basis. The %m gets replaced with the netbios name
-# of the machine that is connecting
-; include = /usr/local/samba/lib/smb.conf.%m
-
-# Most people will find that this option gives better performance.
-# See speed.txt and the manual pages for details
-# You may want to add the following on a Linux system:
-# SO_RCVBUF=8192 SO_SNDBUF=8192
- socket options = TCP_NODELAY
-
-# Configure Samba to use multiple interfaces
-# If you have multiple network interfaces then you must list them
-# here. See the man page for details.
-; interfaces = 192.168.12.2/24 192.168.13.2/24
-
-# Browser Control Options:
-# set local master to no if you don't want Samba to become a master
-# browser on your network. Otherwise the normal election rules apply
-; local master = no
-
-# OS Level determines the precedence of this server in master browser
-# elections. The default value should be reasonable
-; os level = 33
-
-# Domain Master specifies Samba to be the Domain Master Browser. This
-# allows Samba to collate browse lists between subnets. Don't use this
-# if you already have a Windows NT domain controller doing this job
-; domain master = yes
-
-# Preferred Master causes Samba to force a local browser election on startup
-# and gives it a slightly higher chance of winning the election
-; preferred master = yes
-
-# Enable this if you want Samba to be a domain logon server for
-# Windows95 workstations.
-; domain logons = yes
-
-# if you enable domain logons then you may want a per-machine or
-# per user logon script
-# run a specific logon batch file per workstation (machine)
-; logon script = %m.bat
-# run a specific logon batch file per username
-; logon script = %U.bat
-
-# Where to store roving profiles (only for Win95 and WinNT)
-# %L substitutes for this servers netbios name, %U is username
-# You must uncomment the [Profiles] share below
-; logon path = \\%L\Profiles\%U
-
-# Windows Internet Name Serving Support Section:
-# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
-; wins support = yes
-
-# WINS Server - Tells the NMBD components of Samba to be a WINS Client
-# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
-; wins server = w.x.y.z
-
-# WINS Proxy - Tells Samba to answer name resolution queries on
-# behalf of a non WINS capable client, for this to work there must be
-# at least one WINS Server on the network. The default is NO.
-; wins proxy = yes
-
-# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
-# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
-# this has been changed in version 1.9.18 to no.
- dns proxy = no
+##
+## Basic Server Settings
+##
+
+ # workgroup = NT-Domain-Name or Workgroup-Name, eg: REDHAT4
+ workgroup = MYGROUP
+
+ # server string is the equivalent of the NT Description field
+ server string = Samba Server
+
+ # This option is important for security. It allows you to restrict
+ # connections to machines which are on your local network. The
+ # following example restricts access to two C class networks and
+ # the "loopback" interface. For more examples of the syntax see
+ # the smb.conf man page
+ ; hosts allow = 192.168.1. 192.168.2.0./24 192.168.3.0/255.255.255.0 127.0.0.1
+
+ # Uncomment this if you want a guest account, you must add this to /etc/passwd
+ # otherwise the user "nobody" is used
+ ; guest account = pcguest
+
+ # this tells Samba to use a separate log file for each machine
+ # that connects
+ log file = /usr/local/samba/var/log.%m
+
+ # How much information do you want to see in the logs?
+ # default is only to log critical messages
+ ; log level = 1
+
+ # Put a capping on the size of the log files (in Kb).
+ max log size = 50
+
+ # Security mode. Most people will want user level security. See
+ # security_level.txt for details.
+ security = user
+
+ # Using the following line enables you to customise your configuration
+ # on a per machine basis. The %m gets replaced with the netbios name
+ # of the machine that is connecting.
+ # Note: Consider carefully the location in the configuration file of
+ # this line. The included file is read at that point.
+ ; include = /usr/local/samba/lib/smb.conf.%m
+
+ # Most people will find that this option gives better performance.
+ # See speed.txt and the manual pages for details
+ # You may want to add the following on a Linux system:
+ # SO_RCVBUF=8192 SO_SNDBUF=8192
+ ; socket options = TCP_NODELAY
+
+ # Configure Samba to use multiple interfaces
+ # If you have multiple network interfaces and want to limit smbd will
+ # use, list the ones desired here. Otherwise smbd & nmbd will bind to all
+ # active interfaces on the system. See the man page for details.
+ ; interfaces = 192.168.12.2/24 192.168.13.2/24
+
+ # Should smbd report that it has MS-DFS Capabilities? Only available
+ # if --with-msdfs was passed to ./configure
+ ; host msdfs = yes
+
+##
+## Network Browsing
+##
+ # set local master to no if you don't want Samba to become a master
+ # browser on your network. Otherwise the normal election rules apply
+ ; local master = no
+
+ # OS Level determines the precedence of this server in master browser
+ # elections. The default value (20) should be reasonable
+ ; os level = 20
+
+ # Domain Master specifies Samba to be the Domain Master Browser. This
+ # allows Samba to collate browse lists between subnets. Don't use this
+ # if you already have a Windows NT domain controller doing this job
+ ; domain master = yes
+
+ # Preferred Master causes Samba to force a local browser election on startup
+ # and gives it a slightly higher chance of winning the election
+ ; preferred master = yes
+
+
+##
+## WINS & Name Resolution
+##
+ # Windows Internet Name Serving Support Section:
+ # WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
+ ; wins support = yes
+
+ # WINS Server - Tells the NMBD components of Samba to be a WINS Client
+ # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
+ ; wins server = w.x.y.z
+
+ # WINS Proxy - Tells Samba to answer name resolution queries on
+ # behalf of a non WINS capable client, for this to work there must be
+ # at least one WINS Server on the network. The default is NO.
+ ; wins proxy = yes
+
+ # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
+ # via DNS nslookups.
+ dns proxy = no
+
+
+##
+## Passwords & Authentication
+##
+ # Use password server option only with security = server
+ # The argument list may include:
+ # password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
+ # or to auto-locate the domain controller/s
+ ; password server = *
+ ; password server = <NT-Server-Name>
+
+ # You may wish to use password encryption. Please read
+ # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
+ # Do not enable this option unless you have read those documents
+ ; encrypt passwords = yes
+
+ # Should smbd obey the session and account lines in /etc/pam.d/samba ?
+ # only available if --with-pam was used at compile time
+ ; obey pam restrictions = yes
+
+ # When using encrypted passwords, Samba can synchronize the local
+ # UNIX password as well. You will also need the "passwd chat" parameters
+ ; unix passwword sync = yes
+
+ # how should smbd talk to the local system when changing a UNIX
+ # password? See smb.conf(5) for details
+ ; passwd chat = <custom chat string>
+
+ # This is only available if you compiled Samba to include --with-pam
+ # Use PAM for changing the password
+ ; pam password change = yes
+
+##
+## Domain Control
+##
+ # Enable this if you want Samba act as a domain controller.
+ # make sure you have read the Samba-PDC-HOWTO included in the documentation
+ # before enabling this parameter
+ ; domain logons = yes
+
+ # if you enable domain logons then you may want a per-machine or
+ # per user logon script
+ # run a specific logon batch file per workstation (machine)
+ ; logon script = %m.bat
+ # run a specific logon batch file per username
+ ; logon script = %U.bat
+
+ # Where to store roving profiles (only for Win95 and WinNT)
+ # %L substitutes for this servers netbios name, %U is username
+ # You must uncomment the [Profiles] share below
+ ; logon path = \\%L\Profiles\%U
+
+ # UNC path specifying the network location of the user's home directory
+ # only used when acting as a DC for WinNT/2k/XP. Ignored by Win9x clients
+ ; logon home = \\%L\%U
+
+ # What drive should the "logon home" be mounted at upon login ?
+ # only used when acting as a DC for WinNT/2k/XP. Ignored by Win9x clients
+ ; logon drive = H:
+
+##
+## Printing
+##
+
+ # If you want to automatically load your printer list rather
+ # than setting them up individually then you'll need this
+ load printers = yes
+
+ # you may wish to override the location of the printcap file
+ ; printcap name = /etc/printcap
+
+ # on SystemV system setting printcap name to lpstat should allow
+ # you to automatically obtain a printer list from the SystemV spool
+ # system
+ ; printcap name = lpstat
+
+ # It should not be necessary to specify the print system type unless
+ # it is non-standard. Currently supported print systems include:
+ # bsd, sysv, plp, lprng, aix, hpux, qnx
+ ; printing = bsd
+
+ # Enable this to make Samba 2.2 behavior just like Samba 2.0
+ # not recommended nuless you are sure of what you are doing
+ ; disable spoolss = yes
+
+ # list of users and groups which should be able to remotely manage
+ # printer drivers installed on the server
+ ; printer admin = root, +ntadmin
+
+
+##
+## Winbind
+##
+
+ # specify the uid range which can be used by winbindd
+ # to allocate uids for Windows users as necessary
+ ; winbind uid = 10000-65000
+
+ # specify the uid range which can be used by winbindd
+ # to allocate uids for Windows users as necessary
+ ; winbind gid = 10000-65000
+
+ # Define a home directory to be given to passwd(5) style entries
+ # generated by libnss_winbind.so. You can use variables here
+ ; winbind template homedir = /home/%D/%U
+
+ # Specify a shell for all winbind user entries return by the
+ # libnss_winbind.so library.
+ ; winbind template shell = /bin/sh
+
+ # What character should be used to separate the DOMAIN and Username
+ # for a Windows user. The default is DOMAIN\user, but many people
+ # prefer DOMAIN+user
+ ; winbind separator = +
+
#============================ Share Definitions ==============================
[homes]
- comment = Home Directories
- browseable = no
- writable = yes
+ comment = Home Directories
+ browseable = no
+ writable = yes
+ valid users = %S
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
-; comment = Network Logon Service
-; path = /usr/local/samba/lib/netlogon
-; guest ok = yes
-; writable = no
-; share modes = no
+; comment = Network Logon Service
+; path = /usr/local/samba/lib/netlogon
+; guest ok = yes
+; writable = no
+; share modes = no
# Un-comment the following to provide a specific roving profile share
@@ -165,23 +254,30 @@
; guest ok = yes
-# NOTE: If you have a BSD-style print system there is no need to
+# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
-# Set public = yes to allow user 'guest account' to print
+ # Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
# This one is useful for people to share files
-;[tmp]
-; comment = Temporary file space
-; path = /tmp
-; read only = no
-; public = yes
+#[tmp]
+# comment = Temporary file space
+# path = /tmp
+# read only = no
+# public = yes
+
+
+# MS-DFS support is only available if Samba was compiled to
+# include --with-msdfs
+;[dfsroot]
+; dfs root = yes
+
# A publicly accessible directory, but read only, except for people in
# the "staff" group
@@ -193,64 +289,67 @@
; printable = no
; write list = @staff
-# Other examples.
-#
+
+##
+## Other examples.
+##
+
# A private printer, usable only by fred. Spool data will be placed in fred's
# home directory. Note that fred must have write access to the spool directory,
# wherever it is.
-;[fredsprn]
-; comment = Fred's Printer
-; valid users = fred
-; path = /homes/fred
-; printer = freds_printer
-; public = no
-; writable = no
-; printable = yes
+#[fredsprn]
+# comment = Fred's Printer
+# valid users = fred
+# path = /homes/fred
+# printer = freds_printer
+# public = no
+# writable = no
+# printable = yes
# A private directory, usable only by fred. Note that fred requires write
# access to the directory.
-;[fredsdir]
-; comment = Fred's Service
-; path = /usr/somewhere/private
-; valid users = fred
-; public = no
-; writable = yes
-; printable = no
+#[fredsdir]
+# comment = Fred's Service
+# path = /usr/somewhere/private
+# valid users = fred
+# public = no
+# writable = yes
+# printable = no
# a service which has a different directory for each machine that connects
# this allows you to tailor configurations to incoming machines. You could
# also use the %U option to tailor it by user name.
# The %m gets replaced with the machine name that is connecting.
-;[pchome]
-; comment = PC Directories
-; path = /usr/pc/%m
-; public = no
-; writable = yes
+#[pchome]
+# comment = PC Directories
+# path = /usr/pc/%m
+# public = no
+# writable = yes
# A publicly accessible directory, read/write to all users. Note that all files
# created in the directory by users will be owned by the default user, so
# any user with access can delete any other user's files. Obviously this
# directory must be writable by the default user. Another user could of course
# be specified, in which case all files would be owned by that user instead.
-;[public]
-; path = /usr/somewhere/else/public
-; public = yes
-; only guest = yes
-; writable = yes
-; printable = no
+#[public]
+# path = /usr/somewhere/else/public
+# public = yes
+# only guest = yes
+# writable = yes
+# printable = no
# The following two entries demonstrate how to share a directory so that two
# users can place files there that will be owned by the specific users. In this
# setup, the directory should be writable by both users and should have the
# sticky bit set on it to prevent abuse. Obviously this could be extended to
# as many users as required.
-;[myshare]
-; comment = Mary's and Fred's stuff
-; path = /usr/somewhere/shared
-; valid users = mary fred
-; public = no
-; writable = yes
-; printable = no
-; create mask = 0765
+#[myshare]
+# comment = Mary's and Fred's stuff
+# path = /usr/somewhere/shared
+# valid users = mary fred
+# public = no
+# writable = yes
+# printable = no
+# create mask = 0765
diff --git a/packaging/Caldera/OpenLinux/findsmb b/packaging/Caldera/OpenLinux/findsmb
index fb178f91c1c..04bc6080508 100755
--- a/packaging/Caldera/OpenLinux/findsmb
+++ b/packaging/Caldera/OpenLinux/findsmb
@@ -63,17 +63,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
# get the first <00> name
- @name = grep(/<00> - /,@nmblookup);
+ @name = grep(/<00>/,@nmblookup);
$_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
if ($_) { # we have a netbios name
if (/GROUP/) { # is it a group name
($name, $aliases, $type, $length, @addresses) =
@@ -82,13 +73,16 @@ foreach $ip (@ipaddrs) # loop through each IP address found
$name = "unknown nis name";
}
} else {
- /(\S+)/;
+# The Netbios name can contain lot of characters also '<' '>'
+# and spaces. The follwing cure inside name space but not
+# names starting or ending with spaces
+ /(.{1,15})\s+<00>\s+/;
$name = $1;
}
# do an smbclient command on the netbios name.
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
+ open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
die("Can't do smbclient command.\n");
@smb = <SMB>;
close SMB;
@@ -104,7 +98,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@info = grep(/OS=/,@smb);
$_ = @info[0];
if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
+ s/Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
} else { # no OS= string in response (WIN95 client)
@@ -112,7 +106,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@name = grep(/<00> - <GROUP>/,@nmblookup);
$_ = @name[0];
if ($_) {
- /(\S+)/;
+# Same as before for space and characters
+ /(.{1,15})\s+<00>\s+/;
$_ = "[$1]";
} else {
$_ = "Unknown Workgroup";
diff --git a/packaging/Caldera/OpenLinux/samba2.spec-lsb.tmpl b/packaging/Caldera/OpenLinux/samba2.spec-lsb.tmpl
index df0b6bff4d2..8af6974b58f 100644
--- a/packaging/Caldera/OpenLinux/samba2.spec-lsb.tmpl
+++ b/packaging/Caldera/OpenLinux/samba2.spec-lsb.tmpl
@@ -295,10 +295,15 @@ make LOGFILEBASE=/var/log/samba.d all nsswitch/libnss_wins.so debug2html bin/smb
# Now build the VFS modules
cd ../examples/VFS
-make
+CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
+ --with-fhs \
+ --prefix='$(DESTDIR)/usr' \
+ --localstatedir='$(DESTDIR)/var' \
+ --libdir='$(DESTDIR)%{EtcSamba}'
cd block
mv block.c block.c.old
-sed 's/etc\/samba/etc\/samba\.d/g' < block.c.old > block.c
+sed 's/etc\/samba/etc\/samba\.d\/vfs/g' < block.c.old > block.c
+cd ..
make
@@ -314,7 +319,7 @@ mkdir -p $DESTDIR/%{LSBservedir}/{netlogon,profiles,Public}
mkdir -p $DESTDIR/etc/skel/Samba
mkdir -p $DESTDIR/usr/share/samba/codepages/src $DESTDIR/sbin
mkdir -p $DESTDIR/%{SVIdir}
-mkdir -p $DESTDIR/usr/{include,lib/samba}
+mkdir -p $DESTDIR/usr/{include,lib/samba/vfs}
make LOGFILEBASE=/var/log/samba.d -C source install
@@ -338,10 +343,13 @@ ln -s libnss_winbind.so.2.0 $DESTDIR/lib/libnss_winbind.so.2
ln -s libnss_winbind.so.2.0 $DESTDIR/lib/libnss_winbind.so
# Adding VFS modules
-install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/recycle.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba
+install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.conf $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba/vfs
+install -m 644 examples/VFS/block/samba-block.conf $DESTDIR/etc/samba.d/samba-block.conf.example
+install -m 644 examples/VFS/block/smb.conf $DESTDIR/etc/samba.d/smb.conf.example-with-block-use
install -m 755 source/nsswitch/pam_winbind.so $DESTDIR/lib/security
install -m 755 source/bin/wbinfo $DESTDIR/usr/bin
@@ -363,7 +371,6 @@ cp -p $VVS/smbadduser $DESTDIR/usr/bin/smbadduser
#cp -p $VVS/convertsmbpasswd.perl $DESTDIR/usr/bin/convertsmbpasswd
#cp -p $VVS/updatesmbpasswd.perl $DESTDIR/usr/bin/updatesmbpasswd
-cp -p $VVS/findsmb $DESTDIR/usr/bin
cp -p $VVS/samba.daemon $DESTDIR/etc/sysconfig/daemons/samba
cp -p $VVS/winbind.daemon $DESTDIR/etc/sysconfig/daemons/winbind
cp -p $VVS/samba.pam $DESTDIR/etc/pam.d/samba
diff --git a/packaging/Caldera/OpenLinux/samba2.spec-sam.tmpl b/packaging/Caldera/OpenLinux/samba2.spec-sam.tmpl
index a46d4cac062..07b188d81be 100644
--- a/packaging/Caldera/OpenLinux/samba2.spec-sam.tmpl
+++ b/packaging/Caldera/OpenLinux/samba2.spec-sam.tmpl
@@ -1,4 +1,4 @@
-%define Version PVERSION
+%define Version PVERSIONsam
%define date PRELEASE
%define Vendor Caldera
%define Dist OpenLinux
@@ -287,16 +287,25 @@ CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
--with-syslog \
--with-vfs \
--with-msdfs \
- --with-tdbsam
+ --with-tdbsam \
+ --with-ldapsam \
+ --with-nisplussam \
+ --with-nisplushome \
+ --with-krb5=/usr/athena
make LOGFILEBASE=/var/log/samba.d everything nsswitch/libnss_wins.so
# Now build the VFS modules
cd ../examples/VFS
-make
+CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
+ --with-fhs \
+ --prefix='$(DESTDIR)/usr' \
+ --localstatedir='$(DESTDIR)/var' \
+ --libdir='$(DESTDIR)%{EtcSamba}'
cd block
mv block.c block.c.old
-sed 's/etc\/samba/etc\/samba\.d/g' < block.c.old > block.c
+sed 's/etc\/samba/etc\/samba\.d\/vfs/g' < block.c.old > block.c
+cd ..
make
@@ -313,7 +322,7 @@ mkdir -p $DESTDIR/%{LSBservedir}/{netlogon,profiles,Public}
mkdir -p $DESTDIR/etc/skel/Samba
mkdir -p $DESTDIR/usr/share/samba/codepages/src $DESTDIR/sbin
mkdir -p $DESTDIR/%{SVIdir}
-mkdir -p $DESTDIR/usr/{include,lib}
+mkdir -p $DESTDIR/usr/{include,lib/samba/vfs}
make LOGFILEBASE=/var/log/samba.d -C source install
@@ -353,16 +362,18 @@ install -m 755 source/bin/smbwrapper.so $DESTDIR/usr/bin
install -m 755 source/bin/smbtorture $DESTDIR/usr/sbin
# Adding VFS modules
-install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/recycle.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba
+install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.conf $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba/vfs
+install -m 644 examples/VFS/block/samba-block.conf $DESTDIR/etc/samba.d/samba-block.conf.example
+install -m 644 examples/VFS/block/smb.conf $DESTDIR/etc/samba.d/smb.conf.example-with-block-use
cp -p $VVS/smb.conf.sample $DESTDIR%{EtcSamba}/smb.conf.sample
cp -p $VVS/smb.conf $DESTDIR%{EtcSamba}/smb.conf
cp -p $VVS/smbusers $DESTDIR%{EtcSamba}
cp -p $VVS/smbprint $DESTDIR/usr/bin
-cp -p $VVS/findsmb $DESTDIR/usr/bin
cp -p $VVS/samba.daemon $DESTDIR/etc/sysconfig/daemons/samba
cp -p $VVS/winbind.daemon $DESTDIR/etc/sysconfig/daemons/winbind
cp -p $VVS/samba.pam $DESTDIR/etc/pam.d/samba
diff --git a/packaging/Caldera/OpenLinux/samba2.spec-team.tmpl b/packaging/Caldera/OpenLinux/samba2.spec-team.tmpl
index b4842fc3f79..216d23e6162 100644
--- a/packaging/Caldera/OpenLinux/samba2.spec-team.tmpl
+++ b/packaging/Caldera/OpenLinux/samba2.spec-team.tmpl
@@ -290,10 +290,15 @@ make LOGFILEBASE=/var/log/samba.d everything nsswitch/libnss_wins.so
# Now build the VFS modules
cd ../examples/VFS
-make
+CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
+ --with-fhs \
+ --prefix='$(DESTDIR)/usr' \
+ --localstatedir='$(DESTDIR)/var' \
+ --libdir='$(DESTDIR)%{EtcSamba}'
cd block
mv block.c block.c.old
-sed 's/etc\/samba/etc\/samba\.d/g' < block.c.old > block.c
+sed 's/etc\/samba/etc\/samba\.d\/vfs/g' < block.c.old > block.c
+cd ..
make
@@ -309,7 +314,7 @@ mkdir -p $DESTDIR/%{LSBservedir}/{netlogon,profiles,Public}
mkdir -p $DESTDIR/etc/skel/Samba
mkdir -p $DESTDIR/usr/share/samba/codepages/src $DESTDIR/sbin
mkdir -p $DESTDIR/%{SVIdir}
-mkdir -p $DESTDIR/usr/{include,lib/samba}
+mkdir -p $DESTDIR/usr/{include,lib/samba/vfs}
make LOGFILEBASE=/var/log/samba.d -C source install
@@ -350,16 +355,18 @@ install -m 755 source/bin/smbtorture $DESTDIR/usr/sbin
install -m 755 $VVS/smbadduser $DESTDIR/usr/bin
# Adding VFS modules
-install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/recycle.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba
-install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba
+install -m 755 examples/VFS/audit.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/recycle/recycle.conf $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/skel.so $DESTDIR/usr/lib/samba/vfs
+install -m 755 examples/VFS/block/block.so $DESTDIR/usr/lib/samba/vfs
+install -m 644 examples/VFS/block/samba-block.conf $DESTDIR/etc/samba.d/samba-block.conf.example
+install -m 644 examples/VFS/block/smb.conf $DESTDIR/etc/samba.d/smb.conf.example-with-block-use
cp -p $VVS/smb.conf.sample $DESTDIR%{EtcSamba}/smb.conf.sample
cp -p $VVS/smb.conf $DESTDIR%{EtcSamba}/smb.conf
cp -p $VVS/smbusers $DESTDIR%{EtcSamba}
cp -p $VVS/smbprint $DESTDIR/usr/bin
-cp -p $VVS/findsmb $DESTDIR/usr/bin
cp -p $VVS/samba.daemon $DESTDIR/etc/sysconfig/daemons/samba
cp -p $VVS/winbind.daemon $DESTDIR/etc/sysconfig/daemons/winbind
cp -p $VVS/samba.pam $DESTDIR/etc/pam.d/samba
diff --git a/packaging/Caldera/OpenLinux/samba2.spec.tmpl b/packaging/Caldera/OpenLinux/samba2.spec.tmpl
index 58dad3e9b0b..9b5299867c8 100644
--- a/packaging/Caldera/OpenLinux/samba2.spec.tmpl
+++ b/packaging/Caldera/OpenLinux/samba2.spec.tmpl
@@ -333,7 +333,6 @@ cp -p $VVS/smbadduser $DESTDIR/usr/bin/smbadduser
#cp -p $VVS/convertsmbpasswd.perl $DESTDIR/usr/bin/convertsmbpasswd
#cp -p $VVS/updatesmbpasswd.perl $DESTDIR/usr/bin/updatesmbpasswd
-cp -p $VVS/findsmb $DESTDIR/usr/bin
cp -p $VVS/samba.daemon $DESTDIR/etc/sysconfig/daemons/samba
cp -p $VVS/samba.pam $DESTDIR/etc/pam.d/samba
cp -p $VVS/samba.logrotate $DESTDIR/etc/logrotate.d/samba
diff --git a/packaging/Caldera/OpenServer/Compile b/packaging/Caldera/OpenServer/Compile
index 7628704f0d3..d3f5ed957df 100755
--- a/packaging/Caldera/OpenServer/Compile
+++ b/packaging/Caldera/OpenServer/Compile
@@ -7,10 +7,10 @@
V=
[ "$1" = "-n" ] && V=echo
-CC="gcc -I/usr/local/include -L/usr/local/lib"
-CFLAGS="-O3 -I/usr/local/include -L/usr/local/lib"
+CC="gcc"
+CFLAGS="-O3"
CXX="g++"
-CXXFLAGS="-O3 -I/usr/local/include/stl -I/usr/local/include -L/usr/local/lib"
+CXXFLAGS="-O3"
RANLIB=true
MAKE=/usr/gnu/bin/make
if [ "$V" = "echo" ]
@@ -33,12 +33,21 @@ then
echo "make all 2>&1 | tee mout-1"
echo "make smbfilter debug2html 2>&1 | tee mout-2"
echo "make bin/smbspool bin/wbinfo 2>&1 | tee mout-3"
+ echo "cd ../examples/VFS"
+ echo "rm -f mout-1"
+ echo "gmake 2>&1 | tee mout-1"
+ echo "cd block"
+ echo "rm -f mout-1"
+ echo "gmake 2>&1 | tee mout-1"
else
cd ../../../source
rm -f mout-1 mout-2 mout-3 mout-4
make all 2>&1 | tee mout-1
make smbfilter debug2html 2>&1 | tee mout-2
make bin/smbspool bin/wbinfo 2>&1 | tee mout-3
+ cd ../examples/VFS
+ rm -f mout-1
+ gmake 2>&1 | tee mout-1
fi
#
# Not building :
diff --git a/packaging/Caldera/OpenServer/Configure b/packaging/Caldera/OpenServer/Configure
index 9e303c1dd2e..0c63f7ff5b4 100755
--- a/packaging/Caldera/OpenServer/Configure
+++ b/packaging/Caldera/OpenServer/Configure
@@ -7,10 +7,11 @@
V=
[ "$1" = "-n" ] && V=echo
-CC="gcc -I/usr/local/include -L/usr/local/lib"
-CFLAGS="-O3 -I/usr/local/include -L/usr/local/lib"
+CC="gcc"
+CFLAGS="-O3"
CXX="g++"
-CXXFLAGS="-O3 -I/usr/local/include/stl -I/usr/local/include -L/usr/local/lib"
+#CXXFLAGS="-O3 -I/usr/local/include/stl -I/usr/local/include -L/usr/local/lib"
+CXXFLAGS="-O3"
RANLIB=true
MAKE=/usr/gnu/bin/make
PREFIX=/usr/lib/samba
@@ -54,6 +55,7 @@ then
--with-utmp \
--with-vfs \
--with-msdfs \
+ --with-readline=/usr \
--with-sambabook=${PREFIX}/swat/using_samba \
2>&1 | tee mout-config"
else
@@ -68,6 +70,7 @@ else
--with-utmp \
--with-vfs \
--with-msdfs \
+ --with-readline=/usr \
--with-sambabook=${PREFIX}/swat/using_samba \
2>&1 | tee mout-config
fi
@@ -81,3 +84,19 @@ EOF
sed -e "s/nobody/nouser/" include/local.h > /tmp/nouser$$
cp /tmp/nouser$$ include/local.h
rm -f /tmp/nouser$$
+
+cd ../examples/VFS
+[ -f mout-config ] && {
+ if [ "$V" = "echo" ]
+ then
+ echo "mv mout-config mout-config$$"
+ else
+ mv mout-config mout-config$$
+ fi
+}
+if [ "$V" = "echo" ]
+then
+ echo "./configure 2>&1 | tee mout-config"
+else
+ ./configure 2>&1 | tee mout-config
+fi
diff --git a/packaging/Caldera/OpenServer/Install b/packaging/Caldera/OpenServer/Install
index 8fc79bcac5c..67ea438cd0c 100755
--- a/packaging/Caldera/OpenServer/Install
+++ b/packaging/Caldera/OpenServer/Install
@@ -67,6 +67,11 @@ do
$V install -m755 -s source/bin/$i ${BLDFIX}/sbin
done
+# Install VFS libraries
+$V install -m644 -s examples/VFS/block/block.so ${BLDFIX}/lib
+$V install -m644 -s examples/VFS/audit.so ${BLDFIX}/lib
+$V install -m644 -s examples/VFS/recycle/recycle.so ${BLDFIX}/lib
+$V install -m644 -s examples/VFS/skel.so ${BLDFIX}/lib
# Install level 1 man pages
for i in *.1
@@ -124,6 +129,9 @@ $V install -m644 docs/manpages/swat.8 ${BLDFIX}/man/man.8
$V install -m644 docs/manpages/smbmount.8 ${BLDFIX}/man/man.8
$V install -m644 docs/manpages/smbmnt.8 ${BLDFIX}/man/man.8
$V install -m644 docs/manpages/smbumount.8 ${BLDFIX}/man/man.8
+$V install -m644 examples/VFS/recycle/recycle.conf ${BLDFIX}/lib
+$V install -m644 examples/VFS/block/samba-block.conf ${BUILD_ROOT}/etc/samba.d
+$V install -m644 ${PKGDIR}/example.block.smb.conf ${BUILD_ROOT}/etc/samba.d
$V install -m644 ${PKGDIR}/smb.conf $BUILD_ROOT/etc/samba.d/smb.conf.default
$V install -m644 ${PKGDIR}/smbusers $BUILD_ROOT/etc/samba.d/smbusers
$V install -m644 ${PKGDIR}/lmhosts $BUILD_ROOT/etc/samba.d/lmhosts
@@ -137,6 +145,7 @@ $V install -m644 ${PKGDIR}/docview.html $BUILD_ROOT/doc/index.html
$V install -m644 ${PKGDIR}/osr5config.html $BUILD_ROOT/doc
$V install -m644 ${PKGDIR}/callogo.gif $BUILD_ROOT/doc
$V install -m644 ${PKGDIR}/samba.desktop $BUILD_ROOT/doc
+$V install -m644 ${PKGDIR}/samba.directory $BUILD_ROOT/doc
$V install -m644 ${PKGDIR}/swat.readme ${BLDFIX}/swat/README
# The following is now done in the postinstall script
diff --git a/packaging/Caldera/OpenServer/example.block.smb.conf b/packaging/Caldera/OpenServer/example.block.smb.conf
new file mode 100644
index 00000000000..793fbeb52b1
--- /dev/null
+++ b/packaging/Caldera/OpenServer/example.block.smb.conf
@@ -0,0 +1,5 @@
+[homes]
+ comment = Home Directories
+ vfs object = /usr/lib/samba/lib/block.so
+ browseable = yes
+ writable = yes
diff --git a/packaging/Caldera/OpenServer/findsmb b/packaging/Caldera/OpenServer/findsmb
index 2e831c5f11a..08c5df11250 100755
--- a/packaging/Caldera/OpenServer/findsmb
+++ b/packaging/Caldera/OpenServer/findsmb
@@ -73,7 +73,10 @@ foreach $ip (@ipaddrs) # loop through each IP address found
$name = "unknown nis name";
}
} else {
- /(\S+)/;
+# The Netbios name can contain lot of characters also '<' '>'
+# and spaces. The follwing cure inside name space but not
+# names starting or ending with spaces
+ /(.{1,15})\s+<00>\s+/;
$name = $1;
}
@@ -103,7 +106,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@name = grep(/<00> - <GROUP>/,@nmblookup);
$_ = @name[0];
if ($_) {
- /(\S+)/;
+# Same as before for space and characters
+ /(.{1,15})\s+<00>\s+/;
$_ = "[$1]";
} else {
$_ = "Unknown Workgroup";
diff --git a/packaging/Caldera/OpenServer/pkg/cdmt.config b/packaging/Caldera/OpenServer/pkg/cdmt.config
index 9bf3f203f93..a93ac0ce18b 100644
--- a/packaging/Caldera/OpenServer/pkg/cdmt.config
+++ b/packaging/Caldera/OpenServer/pkg/cdmt.config
@@ -1,7 +1,7 @@
MACROS:
Samba_NAME = Samba File and Print Server
-Samba_VER = 2.2.4a
+Samba_VER = 2.2.5a
DEFAULT_EXEC_MODE = 0755
diff --git a/packaging/Caldera/OpenServer/pkg/cntl/packages/SambaDOC/ccs b/packaging/Caldera/OpenServer/pkg/cntl/packages/SambaDOC/ccs
index ea86e009025..36b40d681d2 100755
--- a/packaging/Caldera/OpenServer/pkg/cntl/packages/SambaDOC/ccs
+++ b/packaging/Caldera/OpenServer/pkg/cntl/packages/SambaDOC/ccs
@@ -13,14 +13,18 @@ ccs_return_value=0
PostExport()
{
if [ -x /usr/bin/doctool ]; then
- /usr/bin/doctool --add NetworkDoc/WinConnect/samba.desktop >&- 2>&-
+ /usr/bin/doctool --add NetworkDoc/WinConnect/Samba/.directory >&- 2>&-
+ /usr/bin/doctool --add \
+ NetworkDoc/WinConnect/Samba/samba.desktop >&- 2>&-
fi
}
PreUnexport()
{
if [ -x /usr/bin/doctool ]; then
- /usr/bin/doctool --remove NetworkDoc/WinConnect/samba.desktop >&- 2>&-
+ /usr/bin/doctool --remove \
+ NetworkDoc/WinConnect/Samba/samba.desktop >&- 2>&-
+ /usr/bin/doctool --remove NetworkDoc/WinConnect/Samba/.directory >&- 2>&-
fi
}
diff --git a/packaging/Caldera/OpenServer/pkg/input/Samba.pkg b/packaging/Caldera/OpenServer/pkg/input/Samba.pkg
index eabf026eb4d..d2f21b8a006 100644
--- a/packaging/Caldera/OpenServer/pkg/input/Samba.pkg
+++ b/packaging/Caldera/OpenServer/pkg/input/Samba.pkg
@@ -280,18 +280,53 @@ group = sys
flags =
exportPath = /usr/lib/samba/sbin/smbfilter
+FILE:Samba:SHARED:etc/samba.d/smb.conf.default:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /etc/samba.d/smb.conf.default
+
+FILE:Samba:SHARED:etc/samba.d/example.block.smb.conf:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /etc/samba.d/example.block.smb.conf
+
DIR:Samba:SHARED:usr/lib/samba/lib:
mode = 0755
owner = root
group = sys
flags =
-FILE:Samba:SHARED:etc/samba.d/smb.conf.default:
+FILE:Samba:SHARED:usr/lib/samba/lib/audit.so:
mode = 0644
owner = root
group = sys
flags =
-exportPath = /etc/samba.d/smb.conf.default
+exportPath = /usr/lib/samba/lib/audit.so
+
+FILE:Samba:SHARED:usr/lib/samba/lib/block.so:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /usr/lib/samba/lib/block.so
+
+FILE:Samba:SHARED:usr/lib/samba/lib/recycle.so:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /usr/lib/samba/lib/recycle.so
+
+FILE:Samba:SHARED:usr/lib/samba/lib/skel.so:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /usr/lib/samba/lib/skel.so
DIR:Samba:SHARED:usr/lib/samba/lib/codepages:
mode = 0755
diff --git a/packaging/Caldera/OpenServer/pkg/input/SambaDOC.pkg b/packaging/Caldera/OpenServer/pkg/input/SambaDOC.pkg
index 0ed9bdb72b8..abbd1e83f75 100644
--- a/packaging/Caldera/OpenServer/pkg/input/SambaDOC.pkg
+++ b/packaging/Caldera/OpenServer/pkg/input/SambaDOC.pkg
@@ -11,12 +11,19 @@ owner = root
group = sys
flags =
+FILE:SambaDOC:SHARED:doc/samba.directory:
+mode = 0644
+owner = root
+group = sys
+flags =
+exportPath = /usr/share/meta/doc/NetworkDoc/WinConnect/Samba/.directory
+
FILE:SambaDOC:SHARED:doc/samba.desktop:
mode = 0644
owner = root
group = sys
flags =
-exportPath = /usr/share/meta/doc/NetworkDoc/WinConnect/samba.desktop
+exportPath = /usr/share/meta/doc/NetworkDoc/WinConnect/Samba/samba.desktop
FILE:SambaDOC:SHARED:doc/index.html:
mode = 0644
diff --git a/packaging/Caldera/OpenServer/samba.desktop b/packaging/Caldera/OpenServer/samba.desktop
index cd34e08ac5c..33512125141 100644
--- a/packaging/Caldera/OpenServer/samba.desktop
+++ b/packaging/Caldera/OpenServer/samba.desktop
@@ -1,7 +1,4 @@
[Desktop Entry]
-Name=Samba
+Name=Samba Documentation
DocPath=/usr/share/doc/samba/help/index.html
-X-COL-Weight=2.0
-# listed in DocView under:
-# Networking group (NetworkDoc)
-# Windows Connectivity category (WinConnect)
+X-COL-Weight=1.0
diff --git a/packaging/Caldera/OpenServer/samba.directory b/packaging/Caldera/OpenServer/samba.directory
new file mode 100644
index 00000000000..bdc6fa8af41
--- /dev/null
+++ b/packaging/Caldera/OpenServer/samba.directory
@@ -0,0 +1,3 @@
+[Desktop Entry]
+Name=Samba File and Print Server
+Type=group
diff --git a/packaging/Caldera/UnixWare/findsmb b/packaging/Caldera/UnixWare/findsmb
index 4871b24ea4b..04bc6080508 100755
--- a/packaging/Caldera/UnixWare/findsmb
+++ b/packaging/Caldera/UnixWare/findsmb
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl
+#!/usr/bin/perl
#
# Prints info on all smb responding machines on a subnet.
# This script needs to be run on a machine without nmbd running and be
@@ -15,7 +15,7 @@
# that workgroup.
#
-$SAMBABIN = "/usr/local/samba/bin";
+$SAMBABIN = "/usr/bin";
for ($i = 0; $i < 2; $i++) { # test for -d option and broadcast address
$_ = shift;
@@ -63,17 +63,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
# get the first <00> name
- @name = grep(/<00> - /,@nmblookup);
+ @name = grep(/<00>/,@nmblookup);
$_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
if ($_) { # we have a netbios name
if (/GROUP/) { # is it a group name
($name, $aliases, $type, $length, @addresses) =
@@ -82,13 +73,16 @@ foreach $ip (@ipaddrs) # loop through each IP address found
$name = "unknown nis name";
}
} else {
- /(\S+)/;
+# The Netbios name can contain lot of characters also '<' '>'
+# and spaces. The follwing cure inside name space but not
+# names starting or ending with spaces
+ /(.{1,15})\s+<00>\s+/;
$name = $1;
}
# do an smbclient command on the netbios name.
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
+ open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
die("Can't do smbclient command.\n");
@smb = <SMB>;
close SMB;
@@ -104,7 +98,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@info = grep(/OS=/,@smb);
$_ = @info[0];
if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
+ s/Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
} else { # no OS= string in response (WIN95 client)
@@ -112,7 +106,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@name = grep(/<00> - <GROUP>/,@nmblookup);
$_ = @name[0];
if ($_) {
- /(\S+)/;
+# Same as before for space and characters
+ /(.{1,15})\s+<00>\s+/;
$_ = "[$1]";
} else {
$_ = "Unknown Workgroup";
diff --git a/packaging/LSB/lsb-samba.spec b/packaging/LSB/lsb-samba.spec
index c35550a3fdd..7394213d253 100644
--- a/packaging/LSB/lsb-samba.spec
+++ b/packaging/LSB/lsb-samba.spec
@@ -4,8 +4,8 @@
Summary: SAMBA
Name: lsb-samba
-Version: 2.2.1
-Release: 0
+Version: PVERSION
+Release: PRELEASE
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.samba.org/pub/samba/samba-%{version}.tar.gz
diff --git a/packaging/Mandrake/findsmb b/packaging/Mandrake/findsmb
index fb178f91c1c..04bc6080508 100755
--- a/packaging/Mandrake/findsmb
+++ b/packaging/Mandrake/findsmb
@@ -63,17 +63,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
# get the first <00> name
- @name = grep(/<00> - /,@nmblookup);
+ @name = grep(/<00>/,@nmblookup);
$_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
if ($_) { # we have a netbios name
if (/GROUP/) { # is it a group name
($name, $aliases, $type, $length, @addresses) =
@@ -82,13 +73,16 @@ foreach $ip (@ipaddrs) # loop through each IP address found
$name = "unknown nis name";
}
} else {
- /(\S+)/;
+# The Netbios name can contain lot of characters also '<' '>'
+# and spaces. The follwing cure inside name space but not
+# names starting or ending with spaces
+ /(.{1,15})\s+<00>\s+/;
$name = $1;
}
# do an smbclient command on the netbios name.
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
+ open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
die("Can't do smbclient command.\n");
@smb = <SMB>;
close SMB;
@@ -104,7 +98,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@info = grep(/OS=/,@smb);
$_ = @info[0];
if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
+ s/Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
} else { # no OS= string in response (WIN95 client)
@@ -112,7 +106,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@name = grep(/<00> - <GROUP>/,@nmblookup);
$_ = @name[0];
if ($_) {
- /(\S+)/;
+# Same as before for space and characters
+ /(.{1,15})\s+<00>\s+/;
$_ = "[$1]";
} else {
$_ = "Unknown Workgroup";
diff --git a/packaging/Mandrake/samba2.spec.tmpl b/packaging/Mandrake/samba2.spec.tmpl
index 0ba49db0833..321f075864e 100644
--- a/packaging/Mandrake/samba2.spec.tmpl
+++ b/packaging/Mandrake/samba2.spec.tmpl
@@ -335,6 +335,16 @@ CFLAGS="$RPM_OPT_FLAGS"
#make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE" all
make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" all smbfilter smbwrapper smbcacls pam_smbpass nsswitch nsswitch/libnss_wins.so debug2html
+cd ../examples/VFS
+%configure --prefix=%{prefix} \
+ --with-fhs \
+ --libdir=/etc/samba \
+ --sysconfdir=/etc/samba \
+ --localstatedir=/var
+make
+cd block
+make
+
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
@@ -353,7 +363,7 @@ mkdir -p $RPM_BUILD_ROOT/var/spool/samba
mkdir -p $RPM_BUILD_ROOT/var/lib/samba/{netlogon,profiles,printers}
mkdir -p $RPM_BUILD_ROOT/var/lib/samba/printers/{W32X86,WIN40,W32ALPHA,W32MIPS,W32PPC}
mkdir -p $RPM_BUILD_ROOT/var/lib/samba/codepages/src
-mkdir -p $RPM_BUILD_ROOT/lib/security
+mkdir -p $RPM_BUILD_ROOT/lib/{security,samba}
mkdir -p $RPM_BUILD_ROOT%prefix/lib
# Install standard binary files
@@ -465,6 +475,13 @@ done
#
install -m644 $RPM_SOURCE_DIR/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/samba
+# Install VFS Modules
+ install -m755 examples/VFS/audit.so $RPM_BUILD_ROOT/lib/samba/
+ install -m755 examples/VFS/recycle.so $RPM_BUILD_ROOT/lib/samba/
+ install -m755 examples/VFS/block/block.so $RPM_BUILD_ROOT/lib/samba/
+ install -m644 examples/VFS/block/smb-block.conf $RPM_BUILD_ROOT/etc/samba/
+ install -m644 examples/VFS/block/smb.conf $RPM_BUILD_ROOT/etc/samba/smb.conf.example-with-block
+
# Link smbmount to /sbin/mount.smb and /sbin/mount.smbfs
ln -s /%{prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
@@ -696,6 +713,8 @@ fi
%{prefix}/bin/smbstatus
%{prefix}/bin/convert_smbpasswd
%attr(755,root,root) /lib/security/pam_smbpass*
+# Samba VFS modules
+%{prefix}/lib/samba/*
#/usr/share/swat
%attr(-,root,root) %config(noreplace) /etc/samba/smbusers
%attr(-,root,root) %config /etc/rc.d/init.d/smb
@@ -811,6 +830,9 @@ fi
%endif
%changelog
+* Sun Jun 02 2002 John H Terpstra <jht@samba.org>
+- Added VFS modules
+
* Fri Apr 26 2002 Buchan Milne <bgmilne@cae.co.za> 2.2.3a-12mdk
- Final changes for 2.2.4 release
- Removed patches 4(nsl),11(smbspool-guest)
diff --git a/packaging/PHT/TurboLinux/findsmb b/packaging/PHT/TurboLinux/findsmb
index fb178f91c1c..04bc6080508 100755
--- a/packaging/PHT/TurboLinux/findsmb
+++ b/packaging/PHT/TurboLinux/findsmb
@@ -63,17 +63,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
# get the first <00> name
- @name = grep(/<00> - /,@nmblookup);
+ @name = grep(/<00>/,@nmblookup);
$_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
if ($_) { # we have a netbios name
if (/GROUP/) { # is it a group name
($name, $aliases, $type, $length, @addresses) =
@@ -82,13 +73,16 @@ foreach $ip (@ipaddrs) # loop through each IP address found
$name = "unknown nis name";
}
} else {
- /(\S+)/;
+# The Netbios name can contain lot of characters also '<' '>'
+# and spaces. The follwing cure inside name space but not
+# names starting or ending with spaces
+ /(.{1,15})\s+<00>\s+/;
$name = $1;
}
# do an smbclient command on the netbios name.
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
+ open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
die("Can't do smbclient command.\n");
@smb = <SMB>;
close SMB;
@@ -104,7 +98,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@info = grep(/OS=/,@smb);
$_ = @info[0];
if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
+ s/Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
} else { # no OS= string in response (WIN95 client)
@@ -112,7 +106,8 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@name = grep(/<00> - <GROUP>/,@nmblookup);
$_ = @name[0];
if ($_) {
- /(\S+)/;
+# Same as before for space and characters
+ /(.{1,15})\s+<00>\s+/;
$_ = "[$1]";
} else {
$_ = "Unknown Workgroup";
diff --git a/packaging/RedHat/findsmb b/packaging/RedHat/findsmb
deleted file mode 100755
index fb178f91c1c..00000000000
--- a/packaging/RedHat/findsmb
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/perl
-#
-# Prints info on all smb responding machines on a subnet.
-# This script needs to be run on a machine without nmbd running and be
-# run as root to get correct info from WIN95 clients.
-#
-# syntax:
-# findsmb [subnet broadcast address]
-#
-# with no agrument it will list machines on the current subnet
-#
-# There will be a "+" in front of the workgroup name for machines that are
-# local master browsers for that workgroup. There will be an "*" in front
-# of the workgroup name for machines that are the domain master browser for
-# that workgroup.
-#
-
-$SAMBABIN = "/usr/bin";
-
-for ($i = 0; $i < 2; $i++) { # test for -d option and broadcast address
- $_ = shift;
- if (m/-d|-D/) {
- $DEBUG = 1;
- } else {
- if ($_) {
- $BCAST = "-B $_";
- }
- }
-}
-
-sub ipsort # do numeric sort on last field of IP address
-{
- @t1 = split(/\./,$a);
- @t2 = split(/\./,$b);
- @t1[3] <=> @t2[3];
-}
-
-# look for all machines that respond to a name lookup
-
-open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*'|") ||
- die("Can't run nmblookup '*'.\n");
-
-# get rid of all lines that are not a response IP address,
-# strip everything but IP address and sort by last field in address
-
-@ipaddrs = sort ipsort grep(s/ \*<00>.*$//,<NMBLOOKUP>);
-
-# print header info
-
-print "\nIP ADDR NETBIOS NAME WORKGROUP/OS/VERSION $BCAST\n";
-print "---------------------------------------------------------------------\n";
-
-foreach $ip (@ipaddrs) # loop through each IP address found
-{
- $ip =~ s/\n//; # strip newline from IP address
-
-# find the netbios names registered by each machine
-
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
-
-# get the first <00> name
-
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
- if ($_) { # we have a netbios name
- if (/GROUP/) { # is it a group name
- ($name, $aliases, $type, $length, @addresses) =
- gethostbyaddr(pack('C4',split('\.',$ip)),2);
- if (! $name) { # could not get name
- $name = "unknown nis name";
- }
- } else {
- /(\S+)/;
- $name = $1;
- }
-
-# do an smbclient command on the netbios name.
-
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
- die("Can't do smbclient command.\n");
- @smb = <SMB>;
- close SMB;
-
- if ($DEBUG) { # if -d flag print results of nmblookup and smbclient
- print "===============================================================\n";
- print @nmblookup;
- print @smb;
- }
-
-# look for the OS= string
-
- @info = grep(/OS=/,@smb);
- $_ = @info[0];
- if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
-
- } else { # no OS= string in response (WIN95 client)
-
-# for WIN95 clients get workgroup name from nmblookup response
- @name = grep(/<00> - <GROUP>/,@nmblookup);
- $_ = @name[0];
- if ($_) {
- /(\S+)/;
- $_ = "[$1]";
- } else {
- $_ = "Unknown Workgroup";
- }
- }
-
-# see if machine registered a local master browser name
- if (grep(/<1d>/,@nmblookup)) {
- $master = '+'; # indicate local master browser
- if (grep(/<1b>/,@nmblookup)) { # how about domain master browser?
- $master = '*'; # indicate domain master browser
- }
- } else {
- $master = ' '; # not a browse master
- }
-
-# line up info in 3 columns
-
- print "$ip".' 'x(16-length($ip))."$name".' 'x(14-length($name))."$master"."$_\n";
-
- } else { # no netbios name found
-# try getting the host name
- ($name, $aliases, $type, $length, @addresses) =
- gethostbyaddr(pack('C4',split('\.',$ip)),2);
- if (! $name) { # could not get name
- $name = "unknown nis name";
- }
- if ($DEBUG) { # if -d flag print results of nmblookup
- print "===============================================================\n";
- print @nmblookup;
- }
- print "$ip".' 'x(16-length($ip))."$name\n";
- }
-}
-
diff --git a/packaging/RedHat/samba2-devel.spec.tmpl b/packaging/RedHat/samba2-devel.spec.tmpl
index d60b91ff566..5f48051d8d7 100644
--- a/packaging/RedHat/samba2-devel.spec.tmpl
+++ b/packaging/RedHat/samba2-devel.spec.tmpl
@@ -8,6 +8,8 @@ Source: ftp://samba.org/pub/samba/samba-%{version}.tar.gz
Packager: John H Terpstra [Samba-Team] <jht@samba.org>
Requires: pam >= 0.72 kernel >= 2.2.1 glibc >= 2.1.2
Prereq: chkconfig fileutils
+Provides: samba = %{version}
+Obsoletes: samba-common, samba-client, samba-swat
BuildRoot: /var/tmp/samba
Prefix: /usr
@@ -43,6 +45,13 @@ for Shadow passwords and quotas. Do NOT recompile with the
SHADOW_PWD option enabled
%changelog
+* Sun Jun 2 2002 Gerald Carter <jerry@samba.org>
+ - include audit and recycle VFS modules in /usr/lib/samba
+
+* Mon May 6 2002 Gerald Carter <jerry@samba.org>
+ - moved findsmb to a standard component in samba's
+ "make install". Removed from specfile.
+
* Sun Oct 14 2001 Andrew Bartlett <abartlet@samba.org>
- Set SBINDIR for codepage/manpage install, cope with
broken Makefile
@@ -145,6 +154,7 @@ SHADOW_PWD option enabled
%setup
%build
+## Build main Samba source
cd source
%ifarch ia64
@@ -162,6 +172,7 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
--with-codepagedir=/etc/codepages \
--with-fhs \
--with-quotas \
+ --with-msdfs \
--with-smbmount \
--with-pam \
--with-syslog \
@@ -173,6 +184,13 @@ make -j${NUMCPU} all nsswitch/libnss_wins.so
make -j${NUMCPU} debug2html
make -j${NUMCPU} bin/smbspool everything
+## Build VFS modules
+cd ../examples/VFS
+CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
+ --prefix=%{prefix} \
+ --localstatedir=/var
+make
+
%install
rm -rf $RPM_BUILD_ROOT
@@ -187,9 +205,10 @@ mkdir -p $RPM_BUILD_ROOT%{prefix}/share/swat/{images,help,include,using_samba}
mkdir -p $RPM_BUILD_ROOT%{prefix}/share/swat/using_samba/{figs,gifs}
mkdir -p $RPM_BUILD_ROOTMANDIR_MACRO
mkdir -p $RPM_BUILD_ROOT/var/cache/samba
-mkdir -p $RPM_BUILD_ROOT/var/log/samba
+mkdir -p $RPM_BUILD_ROOT/var/{log,run}/samba
mkdir -p $RPM_BUILD_ROOT/var/spool/samba
mkdir -p $RPM_BUILD_ROOT/lib/security
+mkdir -p $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
# Install standard binary files
for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
@@ -198,15 +217,15 @@ for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
do
install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/bin
done
-for i in mksmbpasswd.sh smbtar
+for i in mksmbpasswd.sh smbtar findsmb
do
-install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
+ install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
done
# Install secure binary files
for i in smbd nmbd swat smbmount smbumount smbmnt debug2html winbindd
do
-install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
+ install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
done
# we need a symlink for mount to recognise the smb and smbfs filesystem types
@@ -230,7 +249,7 @@ cd ..
# Install codepage source files
for i in source/codepages/codepage_def.* source/codepages/*.TXT
do
-install -m644 $i $RPM_BUILD_ROOT/etc/codepages/src
+ install -m644 $i $RPM_BUILD_ROOT/etc/codepages/src
done
# Install the nsswitch wins library
@@ -243,24 +262,29 @@ install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
install -m755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/lib
install -m755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security
+# Install the VFS modules
+install -m755 examples/VFS/recycle.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+install -m755 examples/VFS/audit.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+# clean out VFS directory since it will get installed as documentation later
+(cd examples/VFS; make clean)
+
# Install SWAT helper files
for i in swat/help/*.html docs/htmldocs/*.html
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
done
for i in swat/images/*.gif
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
done
for i in swat/include/*.html
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
done
# Install the miscellany
install -m644 swat/README $RPM_BUILD_ROOT%{prefix}/share/swat
install -m755 packaging/RedHat/smbprint $RPM_BUILD_ROOT%{prefix}/bin
-install -m755 packaging/RedHat/findsmb $RPM_BUILD_ROOT%{prefix}/bin
install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT/etc/rc.d/init.d/smb
install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT%{prefix}/sbin/samba
install -m644 packaging/RedHat/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/samba
@@ -467,10 +491,35 @@ fi
%doc docs
%doc swat/README
%doc examples
-%{prefix}/sbin/*
-/sbin/*
-%{prefix}/bin/*
+%{prefix}/sbin/smbd
+%{prefix}/sbin/nmbd
+%{prefix}/sbin/swat
+%{prefix}/sbin/smbmnt
+%{prefix}/sbin/smbmount
+%{prefix}/sbin/smbumount
+%{prefix}/sbin/winbindd
+/sbin/mount.smbfs
+/sbin/mount.smb
+%{prefix}/bin/mksmbpasswd.sh
+%{prefix}/bin/smbclient
+%{prefix}/bin/smbspool
+%{prefix}/bin/rpcclient
+%{prefix}/bin/testparm
+%{prefix}/bin/testprns
+%{prefix}/bin/findsmb
+%{prefix}/bin/smbstatus
+%{prefix}/bin/nmblookup
+%{prefix}/bin/make_smbcodepage
+%{prefix}/bin/make_unicodemap
+%{prefix}/bin/make_printerdef
+%{prefix}/bin/smbpasswd
+%{prefix}/bin/smbtar
+%{prefix}/bin/smbprint
+%{prefix}/bin/smbcontrol
+%{prefix}/bin/smbcacls
+%{prefix}/bin/wbinfo
%attr(755,root,root) /lib/libnss_wins.s*
+%attr(755,root,root) %{prefix}/lib/samba/*.so
%{prefix}/share/swat/help/*
%{prefix}/share/swat/images/*
%{prefix}/share/swat/include/header.html
@@ -491,6 +540,8 @@ MANDIR_MACRO/man8/*
%dir /etc/codepages/*
%attr(755,root,root) %dir /var/cache/samba
%dir /var/log/samba
+%dir /var/run/samba
%attr(1777,root,root) %dir /var/spool/samba
%attr(-,root,root) /lib/libnss_winbind.so
%attr(-,root,root) /lib/security/pam_winbind.so
+%attr(755,root,root) %{prefix}/lib/samba/*.so
diff --git a/packaging/RedHat/samba2.spec.tmpl b/packaging/RedHat/samba2.spec.tmpl
index 88dbe9204b7..61a00e5f7e5 100644
--- a/packaging/RedHat/samba2.spec.tmpl
+++ b/packaging/RedHat/samba2.spec.tmpl
@@ -8,7 +8,8 @@ Source: ftp://samba.org/pub/samba/samba-%{version}.tar.gz
Packager: John H Terpstra [Samba-Team] <jht@samba.org>
Requires: pam >= 0.72 kernel >= 2.2.1 glibc >= 2.1.2
Prereq: chkconfig fileutils
-Provides: samba = %{version}, samba-common = %{version}, samba-client = %{version}, samba-swat = %{version}
+Provides: samba = %{version}
+Obsoletes: samba-common, samba-client, samba-swat
BuildRoot: /var/tmp/samba
Prefix: /usr
@@ -44,6 +45,17 @@ for Shadow passwords and quotas. Do NOT recompile with the
SHADOW_PWD option enabled
%changelog
+* Thu Jun 6 2002 Gerald Carter <jerry@samba.org>
+ - add separate winbindd init script
+ - build and install libsmbclient
+
+* Sun Jun 2 2002 Gerald Carter <jerry@samba.org>
+ - include audit and recycle VFS modules in /usr/lib/samba
+
+* Mon May 6 2002 Gerald Carter <jerry@samba.org>
+ - moved findsmb to a standard component in samba's
+ "make install". Removed from specfile.
+
* Sun Oct 14 2001 Andrew Bartlett <abartlet@samba.org>
- Set SBINDIR for codepage/manpage install, cope with
broken Makefile
@@ -146,6 +158,7 @@ SHADOW_PWD option enabled
%setup
%build
+## Build main Samba source
cd source
%ifarch ia64
@@ -163,17 +176,28 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
--with-codepagedir=/etc/codepages \
--with-fhs \
--with-quotas \
+ --with-msdfs \
--with-smbmount \
--with-pam \
+ --with-pam_smbpass \
--with-syslog \
--with-utmp \
--with-sambabook=%{prefix}/share/swat/using_samba \
- --with-swatdir=%{prefix}/share/swat
+ --with-swatdir=%{prefix}/share/swat \
+ --with-libsmbclient
make -j${NUMCPU} proto
make -j${NUMCPU} all nsswitch/libnss_wins.so
make -j${NUMCPU} debug2html
make -j${NUMCPU} bin/smbspool
+## Build VFS modules
+cd ../examples/VFS
+CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
+ --prefix=%{prefix} \
+ --localstatedir=/var
+make
+
+
%install
rm -rf $RPM_BUILD_ROOT
@@ -191,6 +215,8 @@ mkdir -p $RPM_BUILD_ROOT/var/cache/samba
mkdir -p $RPM_BUILD_ROOT/var/{log,run}/samba
mkdir -p $RPM_BUILD_ROOT/var/spool/samba
mkdir -p $RPM_BUILD_ROOT/lib/security
+mkdir -p $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+mkdir -p $RPM_BUILD_ROOT%{prefix}/{lib,include}
# Install standard binary files
for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
@@ -199,15 +225,15 @@ for i in nmblookup smbclient smbpasswd smbstatus testparm testprns \
do
install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/bin
done
-for i in mksmbpasswd.sh smbtar
+for i in mksmbpasswd.sh smbtar findsmb
do
-install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
+ install -m755 source/script/$i $RPM_BUILD_ROOT%{prefix}/bin
done
# Install secure binary files
for i in smbd nmbd swat smbmount smbumount smbmnt debug2html winbindd
do
-install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
+ install -m755 source/bin/$i $RPM_BUILD_ROOT%{prefix}/sbin
done
# we need a symlink for mount to recognise the smb and smbfs filesystem types
@@ -219,6 +245,7 @@ ln -sf %{prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
cd source
make BASEDIR=$RPM_BUILD_ROOT/usr \
LIBDIR=$RPM_BUILD_ROOT/etc/samba \
+ VARDIR=$RPM_BUILD_ROOT/var \
SBINDIR=$RPM_BUILD_ROOT%{prefix}/sbin \
BINDIR=$RPM_BUILD_ROOT%{prefix}/bin \
MANDIR=$RPM_BUILD_ROOTMANDIR_MACRO \
@@ -231,7 +258,7 @@ cd ..
# Install codepage source files
for i in source/codepages/codepage_def.* source/codepages/*.TXT
do
-install -m644 $i $RPM_BUILD_ROOT/etc/codepages/src
+ install -m644 $i $RPM_BUILD_ROOT/etc/codepages/src
done
# Install the nsswitch wins library
@@ -244,25 +271,43 @@ install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
install -m755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/lib
install -m755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security
+# Install pam_smbpass.so
+install -m755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/lib/security
+
+# Install the VFS modules
+install -m755 examples/VFS/recycle/recycle.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+install -m644 examples/VFS/recycle/recycle.conf $RPM_BUILD_ROOT/etc/samba/
+install -m755 examples/VFS/block/block.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+install -m644 examples/VFS/block/samba-block.conf $RPM_BUILD_ROOT/etc/samba/
+install -m755 examples/VFS/audit.so $RPM_BUILD_ROOT%{prefix}/lib/samba/vfs
+
+# clean out VFS directory since it will get installed as documentation later
+(cd examples/VFS; make clean)
+
+# libsmbclient
+install -m 755 source/bin/libsmbclient.so $RPM_BUILD_ROOT%{prefix}/lib/
+install -m 755 source/bin/libsmbclient.a $RPM_BUILD_ROOT%{prefix}/lib/
+install -m 644 source/include/libsmbclient.h $RPM_BUILD_ROOT%{prefix}/include/
+
# Install SWAT helper files
for i in swat/help/*.html docs/htmldocs/*.html
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/help
done
for i in swat/images/*.gif
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/images
done
for i in swat/include/*.html
do
-install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
+ install -m644 $i $RPM_BUILD_ROOT%{prefix}/share/swat/include
done
# Install the miscellany
install -m644 swat/README $RPM_BUILD_ROOT%{prefix}/share/swat
install -m755 packaging/RedHat/smbprint $RPM_BUILD_ROOT%{prefix}/bin
-install -m755 packaging/RedHat/findsmb $RPM_BUILD_ROOT%{prefix}/bin
install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT/etc/rc.d/init.d/smb
+install -m755 packaging/RedHat/winbind.init $RPM_BUILD_ROOT/etc/rc.d/init.d/winbind
install -m755 packaging/RedHat/smb.init $RPM_BUILD_ROOT%{prefix}/sbin/samba
install -m644 packaging/RedHat/samba.log $RPM_BUILD_ROOT/etc/logrotate.d/samba
install -m644 packaging/RedHat/smb.conf $RPM_BUILD_ROOT/etc/samba/smb.conf
@@ -277,7 +322,9 @@ rm -rf $RPM_BUILD_ROOT
%post
/sbin/chkconfig --add smb
+/sbin/chkconfig --add winbind
/sbin/chkconfig smb off
+/sbin/chkconfig winbind off
echo "Looking for old /etc/smb.conf..."
if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then
@@ -496,6 +543,10 @@ fi
%{prefix}/bin/smbcacls
%{prefix}/bin/wbinfo
%attr(755,root,root) /lib/libnss_wins.s*
+%attr(755,root,root) %{prefix}/lib/samba/vfs/*.so
+%{prefix}/include/libsmbclient.h
+%{prefix}/lib/libsmbclient.a
+%{prefix}/lib/libsmbclient.so
%{prefix}/share/swat/help/*
%{prefix}/share/swat/images/*
%{prefix}/share/swat/include/header.html
@@ -503,10 +554,13 @@ fi
%{prefix}/share/swat/using_samba/*
%config(noreplace) /etc/samba/lmhosts
%config(noreplace) /etc/samba/smb.conf
+%config(noreplace) /etc/samba/recycle.conf
+%config(noreplace) /etc/samba/samba-block.conf
%config(noreplace) /etc/samba/smbusers
/etc/samba/samba.stack
/etc/samba/samba.xinetd
/etc/rc.d/init.d/smb
+/etc/rc.d/init.d/winbind
/etc/logrotate.d/samba
%config(noreplace) /etc/pam.d/samba
MANDIR_MACRO/man1/*
@@ -520,3 +574,4 @@ MANDIR_MACRO/man8/*
%attr(1777,root,root) %dir /var/spool/samba
%attr(-,root,root) /lib/libnss_winbind.so
%attr(-,root,root) /lib/security/pam_winbind.so
+%attr(-,root,root) /lib/security/pam_smbpass.so
diff --git a/packaging/RedHat/smb.init b/packaging/RedHat/smb.init
index 260439281a3..f50da2c6b2a 100755
--- a/packaging/RedHat/smb.init
+++ b/packaging/RedHat/smb.init
@@ -13,8 +13,10 @@
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
+CONFIG=/etc/samba/smb.conf
+
# Check that smb.conf exists.
-[ -f /etc/samba/smb.conf ] || exit 0
+[ -f $CONFIG ] || exit 0
# See how we were called.
case "$1" in
@@ -27,8 +29,16 @@ case "$1" in
;;
stop)
echo -n "Shutting down SMB services: "
- killproc smbd
- killproc nmbd
+
+ ## we have to get all the smbd process here instead of just the
+ ## main parent (i.e. killproc) because it can take a long time
+ ## for an individual process to process a TERM signal
+ smbdpids=`ps guax | grep smbd | grep -v grep | awk '{print $2}'`
+ for pid in $smbdpids; do
+ kill -TERM $pid
+ done
+ ## nmbd is ok to kill using killproc()
+ killproc nmbd -TERM
rm -f /var/lock/subsys/smb
echo ""
;;
diff --git a/packaging/RedHat/winbind.init b/packaging/RedHat/winbind.init
new file mode 100644
index 00000000000..291c351df3a
--- /dev/null
+++ b/packaging/RedHat/winbind.init
@@ -0,0 +1,91 @@
+#!/bin/sh
+#
+# chkconfig: 345 81 45
+# description: Starts and stops the Samba winbind daemon to provide \
+# user and group information from a domain controller to linux.
+
+# Source function library.
+if [ -f /etc/init.d/functions ] ; then
+ . /etc/init.d/functions
+elif [ -f /etc/rc.d/init.d/functions ] ; then
+ . /etc/rc.d/init.d/functions
+else
+ exit 0
+fi
+
+# Source networking configuration.
+. /etc/sysconfig/network
+
+# Check that networking is up.
+[ ${NETWORKING} = "no" ] && exit 0
+
+# Check that smb.conf exists.
+[ -f /etc/samba/smb.conf ] || exit 0
+
+RETVAL=0
+
+
+start() {
+ echo -n "Starting Winbind services: "
+ RETVAL=1
+ if [ "`grep -i 'winbind uid' /etc/samba/smb.conf | egrep -v [\#\;]`" ]; then
+ daemon winbindd
+ RETVAL=$?
+ fi
+ echo
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/winbind || \
+ RETVAL=1
+ return $RETVAL
+}
+stop() {
+ echo -n "Shutting down Winbind services: "
+ RETVAL=1
+ if [ "`grep -i 'winbind uid' /etc/samba/smb.conf | egrep -v [\#\;]`" ]; then
+ killproc winbindd
+ RETVAL=$?
+ fi
+ echo
+ [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/winbind
+ return $RETVAL
+}
+restart() {
+ stop
+ start
+}
+reload() {
+ export TMPDIR="/var/tmp"
+ echo -n "Checking domain trusts: "
+ killproc winbindd -HUP
+ RETVAL=$?
+ echo
+ return $RETVAL
+}
+mdkstatus() {
+ status winbindd
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ reload)
+ reload
+ ;;
+ status)
+ mdkstatus
+ ;;
+ condrestart)
+ [ -f /var/lock/subsys/winbindd ] && restart || :
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status|condrestart}"
+ exit 1
+esac
+
+exit $?
diff --git a/packaging/SGI/findsmb b/packaging/SGI/findsmb
deleted file mode 100755
index c71837e3757..00000000000
--- a/packaging/SGI/findsmb
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/bin/perl
-#
-# Prints info on all smb responding machines on a subnet.
-# This script needs to be run on a machine without nmbd running and be
-# run as root to get correct info from WIN95 clients.
-#
-# syntax:
-# findsmb [subnet broadcast address]
-#
-# with no agrument it will list machines on the current subnet
-#
-# There will be a "+" in front of the workgroup name for machines that are
-# local master browsers for that workgroup. There will be an "*" in front
-# of the workgroup name for machines that are the domain master browser for
-# that workgroup.
-#
-
-$SAMBABIN = "/usr/samba/bin";
-
-for ($i = 0; $i < 2; $i++) { # test for -d option and broadcast address
- $_ = shift;
- if (m/-d|-D/) {
- $DEBUG = 1;
- } else {
- if ($_) {
- $BCAST = "-B $_";
- }
- }
-}
-
-sub ipsort # do numeric sort on last field of IP address
-{
- @t1 = split(/\./,$a);
- @t2 = split(/\./,$b);
- @t1[3] <=> @t2[3];
-}
-
-# look for all machines that respond to a name lookup
-
-open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*'|") ||
- die("Can't run nmblookup '*'.\n");
-
-# get rid of all lines that are not a response IP address,
-# strip everything but IP address and sort by last field in address
-
-@ipaddrs = sort ipsort grep(s/ \*<00>.*$//,<NMBLOOKUP>);
-
-# print header info
-
-print "\n *=DMB\n";
-print " +=LMB\n";
-print "IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION $BCAST\n";
-print "---------------------------------------------------------------------\n";
-
-foreach $ip (@ipaddrs) # loop through each IP address found
-{
- $ip =~ s/\n//; # strip newline from IP address
-
-# find the netbios names registered by each machine
-
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
-
-# get the first non group <00> name
-
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- if (not $_) {
-# try without the -r option
- open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
- die("Can't get nmb name list.\n");
- @nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
- @name = grep(/<00> - /,@nmblookup);
- $_ = @name[0];
- }
- /(\S+)/;
- $name = $1;
-
- if (not $name) { # no netbios name found
-# try getting the host name
- ($name, $aliases, $type, $length, @addresses) =
- gethostbyaddr(pack('C4',split('\.',$ip)),2);
- if (! $name) { # could not get name
- $name = "unknown name";
- }
- if (length($name) > 15) {
- $name = substr($name,0,15);
- }
-# do an smbclient command on the ip address
-
- open(SMB,"$SAMBABIN/smbclient -N -L '$ip' -I $ip -U% |") ||
- die("Can't do smbclient command.\n");
- @smb = <SMB>;
- close SMB;
- } else { # netbios name found
-
-# do an smbclient command on the netbios name.
-
- open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
- die("Can't do smbclient command.\n");
- @smb = <SMB>;
- close SMB;
- }
- {
- if ($DEBUG) { # if -d flag print results of nmblookup and smbclient
- print "===============================================================\n";
- print @nmblookup;
- print @smb;
- }
-
-# look for the OS= string
-
- @info = grep(/OS=/,@smb);
- $_ = @info[0];
- if ($_) { # we found response
- s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
-
- } else { # no OS= string in response (WIN95 client)
-
-# for WIN95 clients get workgroup name from nmblookup response
- @name = grep(/<00> - <GROUP>/,@nmblookup);
- $_ = @name[0];
- if ($_) {
- /(\S+)/;
- $_ = "[$1]";
- } else {
- $_ = "Unknown Workgroup";
- }
- }
-
-# see if machine registered a local master browser name
- if (grep(/<1d>/,@nmblookup)) {
- $master = '+'; # indicate local master browser
- if (grep(/<1b>/,@nmblookup)) { # how about domain master browser?
- $master = '*'; # indicate domain master browser
- }
- } else {
- $master = ' '; # not a browse master
- }
-
-# line up info in 3 columns
-
- print "$ip".' 'x(16-length($ip))."$name".' 'x(16-length($name))."$master"."$_\n";
-
- }
-}
-
diff --git a/packaging/SGI/idb.pl b/packaging/SGI/idb.pl
index 0c903ea93f5..6b4785a2ac3 100755
--- a/packaging/SGI/idb.pl
+++ b/packaging/SGI/idb.pl
@@ -111,7 +111,7 @@ system("cp -f ../swat/README ../packaging/SGI/swat");
chdir $curdir;
# add my local files to the list of binaries to install
-@bins = sort byfilename (@sprogs,@progs,@progs1,@progs2,@mprogs,@scripts,@winbind_progs,@winbind_sprogs,("/findsmb","/sambalp","/smbprint"));
+@bins = sort byfilename (@sprogs,@progs,@progs1,@progs2,@mprogs,@scripts,@winbind_progs,@winbind_sprogs,("/sambalp","/smbprint"));
@nsswitch = sort byfilename (@winbind_lprogs,@winbind_pam_progs);
@@ -178,9 +178,6 @@ while(@bins) {
if ($filename eq "smbpasswd") {
print IDB "f 0755 root sys usr/samba/bin/$filename $SRCPFX/source/$nextfile $PKG.sw.base \n";
}
- elsif ($filename eq "findsmb") {
- print IDB "f 0755 root sys usr/samba/bin/$filename $SRCPFX/packaging/SGI/$filename $PKG.sw.base\n";
- }
elsif ($filename eq "swat") {
print IDB "f 4755 root sys usr/samba/bin/$filename $SRCPFX/source/$nextfile $PKG.sw.base preop(\"chroot \$rbase /etc/init.d/samba stop; exit 0\") exitop(\"chroot \$rbase /usr/samba/scripts/startswat.sh; exit 0\") removeop(\"chroot \$rbase /sbin/cp /etc/inetd.conf /etc/inetd.conf.O ; chroot \$rbase /sbin/sed -e '/^swat/D' -e '/^#SWAT/D' /etc/inetd.conf.O >/etc/inetd.conf; /etc/killall -HUP inetd || true; exit 0\")\n";
}
diff --git a/packaging/Solaris/i.swat b/packaging/Solaris/i.swat
index 047f0e17200..d07d2798d85 100644
--- a/packaging/Solaris/i.swat
+++ b/packaging/Solaris/i.swat
@@ -33,7 +33,7 @@ EOF
if [ ! -z "$PKG_INSTALL_ROOT" ]
then
- CAT <<EOF
+ cat <<EOF
The SWAT settings will not take effect till you send a hangup (HUP) signal
to inetd on the target system.
diff --git a/packaging/SuSE/8.0/samba.spec b/packaging/SuSE/8.0/samba.spec
index b0ebfaad942..37a3aeb9e24 100644
--- a/packaging/SuSE/8.0/samba.spec
+++ b/packaging/SuSE/8.0/samba.spec
@@ -153,6 +153,7 @@ make \
PIDDIR=%{PIDDIR}
make nsswitch
make nsswitch/libnss_wins.so
+( cd ../example/VFS; ./configure --prefix=%{_prefix} --libdir=%{LIBDIR} --sbindir=%{_sbindir} )
make -C ../examples/VFS
make -C ../examples/VFS/block
diff --git a/source/Makefile.in b/source/Makefile.in
index d991907fa21..f3589fb6c1d 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -9,6 +9,7 @@ mandir=@mandir@
sysconfdir=@sysconfdir@
LIBS=@LIBS@
+LDAPLIBS=@LDAPLIBS@
CC=@CC@
SHLD=@SHLD@
CFLAGS=@CFLAGS@
@@ -51,7 +52,7 @@ LOGFILEBASE = @logfilebase@
CONFIGFILE = $(CONFIGDIR)/smb.conf
LMHOSTSFILE = $(CONFIGDIR)/lmhosts
DRIVERFILE = $(CONFIGDIR)/printers.def
-PASSWD_PROGRAM = /bin/passwd
+PASSWD_PROGRAM = @passwd_program@
# This is where smbpasswd et al go
PRIVATEDIR = @privatedir@
@@ -102,7 +103,7 @@ PROGS = $(PROGS1) $(PROGS2) $(MPROGS) bin/nmblookup
TORTURE_PROGS = bin/smbtorture bin/msgtest bin/masktest bin/locktest bin/locktest2
SHLIBS = libsmbclient
-SCRIPTS = $(srcdir)/script/smbtar
+SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/findsmb
QUOTAOBJS=@QUOTAOBJS@
@@ -188,8 +189,8 @@ NOTIFY_OBJ = smbd/notify.o smbd/notify_hash.o smbd/notify_kernel.o
SMBD_OBJ1 = smbd/server.o smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/utmp.o smbd/session.o \
smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \
- smbd/ipc.o smbd/lanman.o smbd/mangle.o smbd/negprot.o \
- smbd/message.o smbd/nttrans.o smbd/pipes.o \
+ smbd/ipc.o smbd/lanman.o smbd/mangle.o smbd/mangle_hash2.o smbd/mangle_hash.o \
+ smbd/mangle_map.o smbd/negprot.o smbd/message.o smbd/nttrans.o smbd/pipes.o \
smbd/reply.o smbd/trans2.o smbd/uid.o \
smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \
smbd/blocking.o smbd/sec_ctx.o \
@@ -505,7 +506,7 @@ bin/.dummy:
bin/smbd: $(SMBD_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAPLIBS)
bin/nmbd: $(NMBD_OBJ) bin/.dummy
@echo Linking $@
@@ -513,11 +514,11 @@ bin/nmbd: $(NMBD_OBJ) bin/.dummy
bin/swat: $(SWAT_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAPLIBS)
bin/rpcclient: $(RPCCLIENT_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(RPCCLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(RPCCLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) $(LDAPLIBS)
bin/smbclient: $(CLIENT_OBJ) bin/.dummy
@echo Linking $@
@@ -557,11 +558,11 @@ bin/smbcontrol: $(SMBCONTROL_OBJ) bin/.dummy
bin/smbpasswd: $(SMBPASSWD_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAPLIBS)
bin/pdbedit: $(PDBEDIT_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAPLIBS)
bin/make_smbcodepage: $(MAKE_SMBCODEPAGE_OBJ) bin/.dummy
@echo Linking $@
@@ -593,7 +594,7 @@ bin/msgtest: $(MSGTEST_OBJ) bin/.dummy
bin/smbcacls: $(SMBCACLS_OBJ) bin/.dummy
@echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBCACLS_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
+ @$(CC) $(FLAGS) -o $@ $(SMBCACLS_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(LDAPLIBS)
bin/locktest: $(LOCKTEST_OBJ) bin/.dummy
@echo Linking $@
@@ -635,7 +636,7 @@ bin/smbwrapper.@SHLIBEXT@: $(PICOBJS) bin/.dummy
bin/smbwrapper.32.@SHLIBEXT@: $(PICOBJS32) bin/.dummy
@echo Linking shared library $@
- @$(SHLD) -32 @LDSHFLAGS@ -o $@ $(PICOBJS32) $(LIBS) \
+ @$(SHLD) -32 @LDSHFLAGS@ -o $@ $(PICOBJS32) $(LDFLAGS) $(LIBS) \
@SONAMEFLAG@`basename $@`
bin/libsmbclient.@SHLIBEXT@: $(LIBSMBCLIENT_PICOBJS) bin/.dummy
@@ -649,7 +650,7 @@ bin/libsmbclient.a: $(LIBSMBCLIENT_PICOBJS) bin/.dummy
bin/pam_smbpass.@SHLIBEXT@: $(PAM_SMBPASS_OBJ) bin/.dummy
@echo Linking shared library $@
- $(SHLD) @LDSHFLAGS@ -symbolic -o $@ $(PAM_SMBPASS_OBJ) $(LDFLAGS) -lpam $(DYNEXP) $(LIBS) -lc \
+ $(SHLD) @LDSHFLAGS@ -o $@ $(PAM_SMBPASS_OBJ) $(LDFLAGS) -lpam $(DYNEXP) $(LIBS) -lc \
@SONAMEFLAG@`basename $@`
nsswitch/libnss_wins.so: $(NSS_OBJ)
@@ -659,9 +660,14 @@ nsswitch/libnss_wins.so: $(NSS_OBJ)
bin/winbindd: $(WINBINDD_OBJ) bin/.dummy
@echo Linking $@
- @$(LINK) -o $@ $(WINBINDD_OBJ) $(DYNEXP) $(LIBS)
+ @$(LINK) -o $@ $(WINBINDD_OBJ) $(DYNEXP) $(LIBS) $(LDAPLIBS)
-@WINBIND_LTARGETS@: $(WINBIND_NSS_PICOBJS)
+nsswitch/libns_winbind.so: $(WINBIND_NSS_PICOBJS)
+ @echo "Linking $@"
+ @$(SHLD) @LDSHFLAGS@ -o $@ $(WINBIND_NSS_PICOBJS) @WINBIND_NSS_EXTRA_LIBS@ \
+ @SONAMEFLAG@`basename $@`
+
+nsswitch/libnss_winbind.so: $(WINBIND_NSS_PICOBJS)
@echo "Linking $@"
@$(SHLD) @LDSHFLAGS@ -o $@ $(WINBIND_NSS_PICOBJS) @WINBIND_NSS_EXTRA_LIBS@ \
@SONAMEFLAG@`basename $@`
diff --git a/source/acconfig.h b/source/acconfig.h
index 0b8c71038a9..b27c556d9bd 100644
--- a/source/acconfig.h
+++ b/source/acconfig.h
@@ -72,6 +72,7 @@
#undef REPLACE_INET_NTOA
#undef HAVE_FILE_MACRO
#undef HAVE_FUNCTION_MACRO
+#undef HAVE_VA_COPY
#undef HAVE_SETRESUID_DECL
#undef HAVE_SETRESUID
#undef WITH_NETATALK
@@ -177,6 +178,8 @@
#undef HAVE_DEVICE_MINOR_FN
#undef HAVE_MAKEDEV_FN
#undef HAVE_GETGROUPS_TOO_MANY_EGIDS
+#undef HAVE_PASSWD_PW_COMMENT
+#undef HAVE_PASSWD_PW_AGE
/*
* Add these definitions to allow VFS modules to
* see the CPPFLAGS defines.
diff --git a/source/client/client.c b/source/client/client.c
index 745aec73970..600906e8edd 100644
--- a/source/client/client.c
+++ b/source/client/client.c
@@ -1995,6 +1995,14 @@ static void process_command_string(char *cmd)
pstring line;
char *ptr;
+ /* establish the connection if not already */
+
+ if (!cli) {
+ cli = do_connect(desthost, service);
+ if (!cli)
+ return;
+ }
+
while (cmd[0] != '\0') {
char *p;
fstring tok;
@@ -2394,9 +2402,13 @@ handle a tar operation
static int do_tar_op(char *base_directory)
{
int ret;
- cli = do_connect(desthost, service);
- if (!cli)
- return 1;
+
+ /* do we already have a connection? */
+ if (!cli) {
+ cli = do_connect(desthost, service);
+ if (!cli)
+ return 1;
+ }
recurse=True;
diff --git a/source/configure b/source/configure
index ba0b567b24a..1619dd1542f 100755
--- a/source/configure
+++ b/source/configure
@@ -1,156 +1,101 @@
#! /bin/sh
+
# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.
+# Generated automatically using autoconf version 2.13
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-# Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
+# Defaults:
+ac_help=
ac_default_prefix=/usr/local
-cross_compiling=no
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-ac_unique_file="include/includes.h"
+# Any additions from configure.in:
ac_default_prefix=/usr/local/samba
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#if HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
+ac_help="$ac_help
+ --with-fhs Use FHS-compliant paths (default=no)"
+ac_help="$ac_help
+ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)"
+ac_help="$ac_help
+ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)"
+ac_help="$ac_help
+ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)"
+ac_help="$ac_help
+ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)"
+ac_help="$ac_help
+ --with-configdir=DIR Where to put configuration files (\$libdir)"
+ac_help="$ac_help
+ --with-codepagedir=DIR Where to put codepage files (\$libdir/codepages)"
+ac_help="$ac_help
+ --with-logfilebase=DIR Where to put log files (\$(VARDIR))"
+ac_help="$ac_help
+ --enable-debug Turn on compiler debugging information (default=no)"
+ac_help="$ac_help
+ --enable-cups Turn on CUPS support (default=auto)"
+ac_help="$ac_help
+ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto)"
+ac_help="$ac_help
+ --with-smbwrapper Include SMB wrapper support (default=no)"
+ac_help="$ac_help
+ --with-afs Include AFS support (default=no)"
+ac_help="$ac_help
+ --with-dce-dfs Include DCE/DFS support (default=no)"
+ac_help="$ac_help
+ --with-krb4=base-dir Include Kerberos IV support (default=no)"
+ac_help="$ac_help
+ --with-krb5=base-dir Include Kerberos 5 support (default=no)"
+ac_help="$ac_help
+ --with-automount Include AUTOMOUNT support (default=no)"
+ac_help="$ac_help
+ --with-smbmount Include SMBMOUNT (Linux only) support (default=no)"
+ac_help="$ac_help
+ --with-pam Include PAM password database support (default=no)"
+ac_help="$ac_help
+ --with-pam_smbpass Include the smbpass PAM module (default=no)"
+ac_help="$ac_help
+ --with-tdbsam Include experimental TDB SAM support (default=no)"
+ac_help="$ac_help
+ --with-ldapsam Include experimental LDAP SAM support (default=no)"
+ac_help="$ac_help
+ --with-nisplussam Include NISPLUS SAM support (default=no)"
+ac_help="$ac_help
+ --with-nisplus-home Include NISPLUS_HOME support (default=no)"
+ac_help="$ac_help
+ --with-ssl Include SSL support (default=no)
+ --with-sslinc=DIR Where the SSL includes are (defaults to /usr/local/ssl/include)
+ --with-ssllib=DIR Where the SSL libraries are (defaults to /usr/local/ssl/lib)"
+ac_help="$ac_help
+ --with-syslog Include experimental SYSLOG support (default=no)"
+ac_help="$ac_help
+ --with-profiling-data Include gathering source code profile information (default=no)"
+ac_help="$ac_help
+ --with-quotas Include experimental disk-quota support (default=no)"
+ac_help="$ac_help
+ --with-utmp Include experimental utmp accounting (default=no)"
+ac_help="$ac_help
+ --with-msdfs Include MS Dfs support (default=no)"
+ac_help="$ac_help
+ --with-libsmbclient Build the libsmbclient shared library (default=no)"
+ac_help="$ac_help
+ --with-spinlocks Use spin locks instead of fcntl locks (default=no)"
+ac_help="$ac_help
+ --with-acl-support Include ACL support (default=no)"
+ac_help="$ac_help
+ --with-winbind Build winbind (default, if supported by OS)"
+ac_help="$ac_help
+ --with-winbind-auth-challenge Enable winbindd_pam_auth_crap() functionality (default no)"
+ac_help="$ac_help
+ --with-included-popt use bundled popt library, not from system"
# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
# The variables have the same names as the options, with
# dashes changed to underlines.
-cache_file=/dev/null
+build=NONE
+cache_file=./config.cache
exec_prefix=NONE
+host=NONE
no_create=
+nonopt=NONE
no_recursion=
prefix=NONE
program_prefix=NONE
@@ -159,15 +104,10 @@ program_transform_name=s,x,x,
silent=
site=
srcdir=
+target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
@@ -181,16 +121,17 @@ oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
ac_prev=
for ac_option
do
+
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval "$ac_prev=\$ac_option"
@@ -198,59 +139,59 @@ do
continue
fi
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
# Accept the important Cygnus configure options, so we can diagnose typos.
- case $ac_option in
+ case "$ac_option" in
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
+ bindir="$ac_optarg" ;;
-build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
+ ac_prev=build ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
+ build="$ac_optarg" ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
+ cache_file="$ac_optarg" ;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
- datadir=$ac_optarg ;;
+ datadir="$ac_optarg" ;;
-disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
-enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
*) ac_optarg=yes ;;
esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -259,47 +200,95 @@ do
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
+ exec_prefix="$ac_optarg" ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
-host | --host | --hos | --ho)
- ac_prev=host_alias ;;
+ ac_prev=host ;;
-host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
+ host="$ac_optarg" ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
+ includedir="$ac_optarg" ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
+ infodir="$ac_optarg" ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
+ libdir="$ac_optarg" ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
+ libexecdir="$ac_optarg" ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst \
@@ -308,12 +297,12 @@ do
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
+ localstatedir="$ac_optarg" ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
+ mandir="$ac_optarg" ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
@@ -334,26 +323,26 @@ do
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
+ oldincludedir="$ac_optarg" ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
+ prefix="$ac_optarg" ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
+ program_prefix="$ac_optarg" ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
+ program_suffix="$ac_optarg" ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
@@ -370,7 +359,7 @@ do
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
+ program_transform_name="$ac_optarg" ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
@@ -380,7 +369,7 @@ do
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
+ sbindir="$ac_optarg" ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
@@ -391,57 +380,58 @@ do
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
+ sharedstatedir="$ac_optarg" ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
+ site="$ac_optarg" ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
+ srcdir="$ac_optarg" ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
+ sysconfdir="$ac_optarg" ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
+ ac_prev=target ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
+ target="$ac_optarg" ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.13"
+ exit 0 ;;
-with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ case "$ac_option" in
+ *=*) ;;
*) ac_optarg=yes ;;
esac
- eval "with_$ac_package='$ac_optarg'" ;;
+ eval "with_${ac_package}='$ac_optarg'" ;;
-without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
--x)
# Obsolete; use --with-x.
@@ -452,98 +442,98 @@ do
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
+ x_includes="$ac_optarg" ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
+ x_libraries="$ac_optarg" ;;
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
;;
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
*)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
;;
esac
done
if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
fi
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
esac
done
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: should be removed in autoconf 3.0.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
-test "$silent" = yes && exec 6>/dev/null
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=include/includes.h
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then its parent.
ac_prog=$0
- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
if test ! -r $srcdir/$ac_unique_file; then
@@ -554,344 +544,13 @@ else
fi
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
else
- { echo "$as_me: error: cannot find sources in $srcdir" >&2
- { (exit 1); exit 1; }; }
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
fi
fi
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<EOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-EOF
-
- cat <<EOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-EOF
-
- cat <<\EOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
-EOF
-fi
-
-if test -n "$ac_init_help"; then
-
- cat <<\EOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-debug Turn on compiler debugging information (default=no)
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-fhs Use FHS-compliant paths (default=no)
- --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)
- --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)
- --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)
- --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)
- --with-configdir=DIR Where to put configuration files (\$libdir)
- --with-codepagedir=DIR Where to put codepage files (\$libdir/codepages)
- --with-logfilebase=DIR Where to put log files (\$(VARDIR))
- --with-readline=DIR Look for readline include/libs in DIR (default=auto)
- --with-smbwrapper Include SMB wrapper support (default=no)
- --with-afs Include AFS support (default=no)
- --with-dce-dfs Include DCE/DFS support (default=no)
- --with-krb4=base-dir Include Kerberos IV support (default=no)
- --with-krb5=base-dir Include Kerberos 5 support (default=no)
- --with-automount Include AUTOMOUNT support (default=no)
- --with-smbmount Include SMBMOUNT (Linux only) support (default=no)
- --with-pam Include PAM password database support (default=no)
- --with-pam_smbpass Include the smbpass PAM module (default=no)
- --with-tdbsam Include experimental TDB SAM support (default=no)
- --with-ldapsam Include experimental LDAP SAM support (default=no)
- --with-nisplussam Include NISPLUS SAM support (default=no)
- --with-nisplus-home Include NISPLUS_HOME support (default=no)
- --with-ssl Include SSL support (default=no)
- --with-sslinc=DIR Where the SSL includes are (defaults to /usr/local/ssl/include)
- --with-ssllib=DIR Where the SSL libraries are (defaults to /usr/local/ssl/lib)
- --with-syslog Include experimental SYSLOG support (default=no)
- --with-profiling-data Include gathering source code profile information (default=no)
- --with-quotas Include experimental disk-quota support (default=no)
- --with-utmp Include experimental utmp accounting (default=no)
- --with-msdfs Include MS Dfs support (default=no)
- --with-libsmbclient Build the libsmbclient shared library (default=no)
- --with-spinlocks Use spin locks instead of fcntl locks (default=no)
- --with-acl-support Include ACL support (default=no)
- --with-winbind Build winbind (default, if supported by OS)
- --with-included-popt use bundled popt library, not from system
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-EOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
- cd $ac_subdir
- # A "../" for each directory in /$ac_subdir.
- ac_dots=`echo $ac_subdir |
- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
-
- case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_subdir ;;
- *) # Relative path.
- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure.gnu; then
- echo
- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
- elif test -f $ac_sub_srcdir/configure; then
- echo
- $SHELL $ac_sub_srcdir/configure --help=recursive
- elif test -f $ac_sub_srcdir/configure.ac ||
- test -f $ac_sub_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\EOF
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-EOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<EOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.52. Invocation command line was
-
- $ $0 $@
-
-EOF
-{
-cat <<_ASUNAME
-## ---------- ##
-## Platform. ##
-## ---------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-PATH = $PATH
-
-_ASUNAME
-} >&5
-
-cat >&5 <<EOF
-## ------------ ##
-## Core tests. ##
-## ------------ ##
-
-EOF
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell meta-characters.
-ac_configure_args=
-ac_sep=
-for ac_arg
-do
- case $ac_arg in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- ac_sep=" " ;;
- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
- ac_sep=" " ;;
- esac
- # Get rid of the leading space.
-done
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- echo >&5
- echo "## ----------------- ##" >&5
- echo "## Cache variables. ##" >&5
- echo "## ----------------- ##" >&5
- echo >&5
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} >&5
- sed "/^$/d" confdefs.h >conftest.log
- if test -s conftest.log; then
- echo >&5
- echo "## ------------ ##" >&5
- echo "## confdefs.h. ##" >&5
- echo "## ------------ ##" >&5
- echo >&5
- cat conftest.log >&5
- fi
- (echo; echo) >&5
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal" >&5
- echo "$as_me: exit $exit_status" >&5
- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-# Let the site file select an alternate cache file if it wants to.
# Prefer explicitly selected file to automatically selected ones.
if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
@@ -902,115 +561,49 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- { echo "$as_me:905: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- cat "$ac_site_file" >&5
+ echo "loading site script $ac_site_file"
. "$ac_site_file"
fi
done
if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:916: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
+ echo "loading cache $cache_file"
+ . $cache_file
else
- { echo "$as_me:924: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:940: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:944: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:950: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:952: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:954: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status. It doesn't matter if
- # we pass some twice (in addition to the command line arguments).
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
- ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:973: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:975: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
+ echo "creating cache $cache_file"
+ > $cache_file
fi
ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-echo "#! $SHELL" >conftest.sh
-echo "exit 0" >>conftest.sh
-chmod +x conftest.sh
-if { (echo "$as_me:995: PATH=\".;.\"; conftest.sh") >&5
- (PATH=".;."; conftest.sh) 2>&5
- ac_status=$?
- echo "$as_me:998: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- ac_path_separator=';'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
else
- ac_path_separator=:
+ ac_n= ac_c='\c' ac_t=
fi
-PATH_SEPARATOR="$ac_path_separator"
-rm -f conftest.sh
-ac_config_headers="$ac_config_headers include/config.h"
+
+
#################################################
# Directory handling stuff to support both the
# legacy SAMBA directories and FHS compliant
# ones...
+
# Check whether --with-fhs or --without-fhs was given.
if test "${with_fhs+set}" = set; then
withval="$with_fhs"
@@ -1029,11 +622,11 @@ else
piddir="\$(VARDIR)/locks"
privatedir="\${prefix}/private"
swatdir="\${prefix}/swat"
-fi;
+fi
+
#################################################
# set private directory location
-
# Check whether --with-privatedir or --without-privatedir was given.
if test "${with_privatedir+set}" = set; then
withval="$with_privatedir"
@@ -1042,18 +635,17 @@ if test "${with_privatedir+set}" = set; then
#
# Just in case anybody calls it without argument
#
- { echo "$as_me:1045: WARNING: --with-privatedir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-privatedir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-privatedir called without argument - will use default" 1>&2
;;
* )
privatedir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set lock directory location
-
# Check whether --with-lockdir or --without-lockdir was given.
if test "${with_lockdir+set}" = set; then
withval="$with_lockdir"
@@ -1062,18 +654,17 @@ if test "${with_lockdir+set}" = set; then
#
# Just in case anybody calls it without argument
#
- { echo "$as_me:1065: WARNING: --with-lockdir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-lockdir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-lockdir called without argument - will use default" 1>&2
;;
* )
lockdir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set pid directory location
-
# Check whether --with-piddir or --without-piddir was given.
if test "${with_piddir+set}" = set; then
withval="$with_piddir"
@@ -1082,18 +673,17 @@ if test "${with_piddir+set}" = set; then
#
# Just in case anybody calls it without argument
#
- { echo "$as_me:1085: WARNING: --with-piddir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-piddir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-piddir called without argument - will use default" 1>&2
;;
* )
piddir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set SWAT directory location
-
# Check whether --with-swatdir or --without-swatdir was given.
if test "${with_swatdir+set}" = set; then
withval="$with_swatdir"
@@ -1102,18 +692,17 @@ if test "${with_swatdir+set}" = set; then
#
# Just in case anybody does it
#
- { echo "$as_me:1105: WARNING: --with-swatdir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-swatdir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-swatdir called without argument - will use default" 1>&2
;;
* )
swatdir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set configuration directory location
-
# Check whether --with-configdir or --without-configdir was given.
if test "${with_configdir+set}" = set; then
withval="$with_configdir"
@@ -1122,18 +711,17 @@ if test "${with_configdir+set}" = set; then
#
# Just in case anybody does it
#
- { echo "$as_me:1125: WARNING: --with-configdir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-configdir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-configdir called without argument - will use default" 1>&2
;;
* )
configdir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set codepage directory location
-
# Check whether --with-codepagedir or --without-codepagedir was given.
if test "${with_codepagedir+set}" = set; then
withval="$with_codepagedir"
@@ -1142,18 +730,17 @@ if test "${with_codepagedir+set}" = set; then
#
# Just in case anybody does it
#
- { echo "$as_me:1145: WARNING: --with-codepagedir called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-codepagedir called without argument - will use default" >&2;}
+ echo "configure: warning: --with-codepagedir called without argument - will use default" 1>&2
;;
* )
codepagedir="$withval"
;;
esac
-fi;
+fi
+
#################################################
# set log directory location
-
# Check whether --with-logfilebase or --without-logfilebase was given.
if test "${with_logfilebase+set}" = set; then
withval="$with_logfilebase"
@@ -1162,14 +749,43 @@ if test "${with_logfilebase+set}" = set; then
#
# Just in case anybody does it
#
- { echo "$as_me:1165: WARNING: --with-logfilebase called without argument - will use default" >&5
-echo "$as_me: WARNING: --with-logfilebase called without argument - will use default" >&2;}
+ echo "configure: warning: --with-logfilebase called without argument - will use default" 1>&2
;;
* )
logfilebase="$withval"
;;
esac
-fi;
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# compile with optimization and without debugging by default
CFLAGS="-O ${CFLAGS}"
@@ -1180,580 +796,219 @@ if test "${enable_debug+set}" = set; then
if eval "test x$enable_debug = xyes"; then
CFLAGS="${CFLAGS} -g"
fi
-fi;
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1193: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1208: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1216: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1219: result: no" >&5
-echo "${ECHO_T}no" >&6
fi
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo "$as_me:1228: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1243: found $ac_dir/$ac_word" >&5
-break
-done
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1251: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1254: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1267: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:808: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1282: found $ac_dir/$ac_word" >&5
-break
-done
-
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
fi
fi
-CC=$ac_cv_prog_CC
+CC="$ac_cv_prog_CC"
if test -n "$CC"; then
- echo "$as_me:1290: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1293: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1302: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1317: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1325: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+ echo "$ac_t""$CC" 1>&6
else
- echo "$as_me:1328: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-echo "$as_me:1341: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:838: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_prog_rejected=no
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
-fi
-ac_cv_prog_CC="cc"
-echo "$as_me:1361: found $ac_dir/$ac_word" >&5
-break
-done
-
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
- if test $# != 0; then
+ if test $# -gt 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- set dummy "$ac_dir/$ac_word" ${1+"$@"}
+ set dummy "$ac_dir/$ac_word" "$@"
shift
ac_cv_prog_CC="$@"
fi
fi
fi
fi
-CC=$ac_cv_prog_CC
+CC="$ac_cv_prog_CC"
if test -n "$CC"; then
- echo "$as_me:1383: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+ echo "$ac_t""$CC" 1>&6
else
- echo "$as_me:1386: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1397: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ if test -z "$CC"; then
+ case "`uname -s`" in
+ *win32* | *WIN32*)
+ # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:889: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1412: found $ac_dir/$ac_word" >&5
-break
-done
-
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="cl"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
fi
fi
-CC=$ac_cv_prog_CC
+CC="$ac_cv_prog_CC"
if test -n "$CC"; then
- echo "$as_me:1420: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+ echo "$ac_t""$CC" 1>&6
else
- echo "$as_me:1423: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
-
- test -n "$CC" && break
- done
+ ;;
+ esac
+ fi
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:1436: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1451: found $ac_dir/$ac_word" >&5
-break
-done
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1459: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1462: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
- test -n "$ac_ct_CC" && break
-done
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
- CC=$ac_ct_CC
-fi
-
-fi
-
-test -z "$CC" && { { echo "$as_me:1474: error: no acceptable cc found in \$PATH" >&5
-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:1479:" \
- "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1482: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1485: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1487: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1490: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1492: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1495: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 1499 "configure"
-#include "confdefs.h"
+cat > conftest.$ac_ext << EOF
-int
-main ()
-{
+#line 932 "configure"
+#include "confdefs.h"
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-echo "$as_me:1515: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1518: \"$ac_link_default\"") >&5
- (eval $ac_link_default) 2>&5
- ac_status=$?
- echo "$as_me:1521: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Find the output, starting from the most likely. This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-for ac_file in `ls a.exe conftest.exe 2>/dev/null;
- ls a.out conftest 2>/dev/null;
- ls a.* conftest.* 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- a.out ) # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1544: error: C compiler cannot create executables" >&5
-echo "$as_me: error: C compiler cannot create executables" >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:1550: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1555: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (eval echo "$as_me:1561: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1564: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
+main(){return(0);}
+EOF
+if { (eval echo configure:937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:1571: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&2;}
- { (exit 1); exit 1; }; }
- fi
+ ac_cv_prog_cc_cross=yes
fi
-fi
-echo "$as_me:1579: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1586: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1588: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:1591: checking for executable suffix" >&5
-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1593: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:1596: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
else
- { { echo "$as_me:1612: error: cannot compute EXEEXT: cannot compile and link" >&5
-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
- { (exit 1); exit 1; }; }
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
fi
+rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
-rm -f conftest$ac_cv_exeext
-echo "$as_me:1618: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:963: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-echo "$as_me:1624: checking for object suffix" >&5
-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:968: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1630 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1642: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1645: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
+ cat > conftest.c <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1657: error: cannot compute OBJEXT: cannot compile" >&5
-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
- { (exit 1); exit 1; }; }
+ ac_cv_prog_gcc=no
fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-echo "$as_me:1664: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:1668: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1674 "configure"
-#include "confdefs.h"
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1689: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1692: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1695: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1698: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_compiler_gnu=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:1710: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:1716: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1722 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+else
+ GCC=
+fi
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1734: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1737: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1740: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1743: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:996: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
ac_cv_prog_cc_g=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_prog_cc_g=no
+ ac_cv_prog_cc_g=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
+
fi
-echo "$as_me:1753: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
+ CFLAGS="$ac_save_CFLAGS"
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
CFLAGS="-g -O2"
@@ -1767,116 +1022,6 @@ else
CFLAGS=
fi
fi
-# Some people use a C++ compiler to compile C. Since we use `exit',
-# in C++ we need to declare it. In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
- choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1780: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1783: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1786: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1789: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-#line 1801 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1814: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1817: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1820: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1823: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-continue
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-#line 1833 "configure"
-#include "confdefs.h"
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1845: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1848: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1851: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1854: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
@@ -1888,20 +1033,14 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
- elif test -f $ac_dir/shtool; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:1898: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
- { (exit 1); exit 1; }; }
+ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -1910,39 +1049,31 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:1918: checking for a BSD compatible install" >&5
-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:1058: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
for ac_dir in $PATH; do
- IFS=$ac_save_IFS
# Account for people who put trailing slashes in PATH elements.
- case $ac_dir/ in
- / | ./ | .// | /cC/* \
- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
- | /usr/ucb/* ) ;;
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
# Don't use installbsd from OSF since it installs stuff as root
# by default.
for ac_prog in ginstall scoinst install; do
- if $as_executable_p "$ac_dir/$ac_prog"; then
+ if test -f $ac_dir/$ac_prog; then
if test $ac_prog = install &&
- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
- elif test $ac_prog = install &&
- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
else
ac_cv_path_install="$ac_dir/$ac_prog -c"
break 2
@@ -1952,125 +1083,144 @@ else
;;
esac
done
+ IFS="$ac_save_IFS"
fi
if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
+ INSTALL="$ac_cv_path_install"
else
# As a last resort, use the slow shell script. We don't cache a
# path for INSTALL within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the path is relative.
- INSTALL=$ac_install_sh
+ INSTALL="$ac_install_sh"
fi
fi
-echo "$as_me:1967: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
+echo "$ac_t""$INSTALL" 1>&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
+# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:1982: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AWK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1115: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:1997: found $ac_dir/$ac_word" >&5
-break
-done
-
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AWK="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
fi
fi
-AWK=$ac_cv_prog_AWK
+AWK="$ac_cv_prog_AWK"
if test -n "$AWK"; then
- echo "$as_me:2005: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6
+ echo "$ac_t""$AWK" 1>&6
else
- echo "$as_me:2008: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
- test -n "$AWK" && break
+test -n "$AWK" && break
done
-if test "x$CC" != xcc; then
- echo "$as_me:2016: checking whether $CC and cc understand -c and -o together" >&5
-echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6
+LD=ld
+echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+echo "configure:1146: checking if the linker ($LD) is GNU ld" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+ ac_cv_prog_gnu_ld=yes
else
- echo "$as_me:2019: checking whether cc understands -c and -o together" >&5
-echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6
+ ac_cv_prog_gnu_ld=no
fi
-set dummy $CC; ac_cc=`echo $2 |
- sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+
+echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+
+# Extract the first word of "passwd", so it can be a program name with args.
+set dummy passwd; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1163: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_passwd_program'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2028 "configure"
-#include "confdefs.h"
+ case "$passwd_program" in
+ /*)
+ ac_cv_path_passwd_program="$passwd_program" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_passwd_program="$passwd_program" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_passwd_program="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_passwd_program" && ac_cv_path_passwd_program="/bin/passwd"
+ ;;
+esac
+fi
+passwd_program="$ac_cv_path_passwd_program"
+if test -n "$passwd_program"; then
+ echo "$ac_t""$passwd_program" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-int
-main ()
-{
- ;
- return 0;
-}
-_ACEOF
+
+if test "x$CC" != xcc; then
+ echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
+echo "configure:1200: checking whether $CC and cc understand -c and -o together" >&5
+else
+ echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
+echo "configure:1203: checking whether cc understands -c and -o together" >&5
+fi
+set dummy $CC; ac_cc="`echo $2 |
+ sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
+if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'foo(){}' > conftest.c
# Make sure it works both with $CC and with simple cc.
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5'
-if { (eval echo "$as_me:2043: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2046: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- test -f conftest.$ac_objext && { (eval echo "$as_me:2048: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2051: \$? = $ac_status" >&5
- (exit $ac_status); };
+ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
+if { (eval echo configure:1215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
eval ac_cv_prog_cc_${ac_cc}_c_o=yes
if test "x$CC" != xcc; then
# Test first that cc exists at all.
- if { ac_try='cc -c conftest.$ac_ext >&5'
- { (eval echo "$as_me:2058: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2061: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5'
- if { (eval echo "$as_me:2064: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2067: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- test -f conftest.$ac_objext && { (eval echo "$as_me:2069: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2072: \$? = $ac_status" >&5
- (exit $ac_status); };
+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ ac_try='cc -c conftest.c -o conftest.o 1>&5'
+ if { (eval echo configure:1223: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
# cc works too.
:
@@ -2087,13 +1237,10 @@ rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
- echo "$as_me:2090: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
else
- echo "$as_me:2093: result: no" >&5
-echo "${ECHO_T}no" >&6
-
-cat >>confdefs.h <<\EOF
+ echo "$ac_t""no" 1>&6
+ cat >> confdefs.h <<\EOF
#define NO_MINUS_C_MINUS_O 1
EOF
@@ -2105,133 +1252,133 @@ else
BROKEN_CC=#
fi
-echo "$as_me:2108: checking that the C compiler understands volatile" >&5
-echo $ECHO_N "checking that the C compiler understands volatile... $ECHO_C" >&6
-if test "${samba_cv_volatile+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-cat >conftest.$ac_ext <<_ACEOF
-#line 2115 "configure"
+echo $ac_n "checking that the C compiler understands volatile""... $ac_c" 1>&6
+echo "configure:1258: checking that the C compiler understands volatile" >&5
+if eval "test \"`echo '$''{'samba_cv_volatile'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 1264 "configure"
#include "confdefs.h"
#include <sys/types.h>
-int
-main ()
-{
+int main() {
volatile int i = 0
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2127: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2130: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2133: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2136: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:1271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_volatile=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_volatile=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_volatile=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:2146: result: $samba_cv_volatile" >&5
-echo "${ECHO_T}$samba_cv_volatile" >&6
+
+echo "$ac_t""$samba_cv_volatile" 1>&6
if test x"$samba_cv_volatile" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_VOLATILE 1
EOF
fi
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:2157: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:2161: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:2170: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:2174: error: $ac_config_sub $ac_cv_build_alias failed." >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:2179: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-echo "$as_me:2186: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:2195: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:2200: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-echo "$as_me:2207: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
- ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:2216: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:2221: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+# configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+# same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+# as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
# The aliases save the names the user supplied, while $host etc.
# will get canonicalized.
-test -n "$target_alias" &&
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+esac
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:1321: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking target system type""... $ac_c" 1>&6
+echo "configure:1342: checking target system type" >&5
+
+target_alias=$target
+case "$target_alias" in
+NONE)
+ case $nonopt in
+ NONE) target_alias=$host_alias ;;
+ *) target_alias=$nonopt ;;
+ esac ;;
+esac
+
+target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$target" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:1360: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+ case $nonopt in
+ NONE) build_alias=$host_alias ;;
+ *) build_alias=$nonopt ;;
+ esac ;;
+esac
+
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
+test "$host_alias" != "$target_alias" &&
test "$program_prefix$program_suffix$program_transform_name" = \
NONENONEs,x,x, &&
program_prefix=${target_alias}-
+
case "$host_os" in
*irix6*) cat >> confdefs.h <<\EOF
#include <standards.h>
@@ -2240,27 +1387,26 @@ EOF
;;
esac
- echo "$as_me:2243: checking config.cache system type" >&5
-echo $ECHO_N "checking config.cache system type... $ECHO_C" >&6
+
+
+ echo $ac_n "checking config.cache system type""... $ac_c" 1>&6
+echo "configure:1394: checking config.cache system type" >&5
if { test x"${ac_cv_host_system_type+set}" = x"set" &&
test x"$ac_cv_host_system_type" != x"$host"; } ||
{ test x"${ac_cv_build_system_type+set}" = x"set" &&
test x"$ac_cv_build_system_type" != x"$build"; } ||
{ test x"${ac_cv_target_system_type+set}" = x"set" &&
test x"$ac_cv_target_system_type" != x"$target"; }; then
- echo "$as_me:2251: result: different" >&5
-echo "${ECHO_T}different" >&6
- { { echo "$as_me:2253: error: \"you must remove config.cache and restart configure\"" >&5
-echo "$as_me: error: \"you must remove config.cache and restart configure\"" >&2;}
- { (exit 1); exit 1; }; }
+ echo "$ac_t""different" 1>&6
+ { echo "configure: error: "you must remove config.cache and restart configure"" 1>&2; exit 1; }
else
- echo "$as_me:2257: result: same" >&5
-echo "${ECHO_T}same" >&6
+ echo "$ac_t""same" 1>&6
fi
ac_cv_host_system_type="$host"
ac_cv_build_system_type="$build"
ac_cv_target_system_type="$target"
+
DYNEXP=
#
@@ -2270,10 +1416,10 @@ DYNEXP=
case "$host_os" in
# Try to work out if this is the native HPUX compiler that uses the -Ae flag.
*hpux*)
- echo "$as_me:2273: checking whether ${CC-cc} accepts -Ae" >&5
-echo $ECHO_N "checking whether ${CC-cc} accepts -Ae... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_Ae+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking whether ${CC-cc} accepts -Ae""... $ac_c" 1>&6
+echo "configure:1421: checking whether ${CC-cc} accepts -Ae" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_Ae'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -Ae -c conftest.c 2>&1`"; then
@@ -2284,10 +1430,10 @@ fi
rm -f conftest*
fi
-echo "$as_me:2287: result: $ac_cv_prog_cc_Ae" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_Ae" >&6
+
+echo "$ac_t""$ac_cv_prog_cc_Ae" 1>&6
# mmap on HPUX is completely broken...
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define MMAP_BLACKLIST 1
EOF
@@ -2302,50 +1448,50 @@ EOF
case `uname -r` in
*9*|*10*)
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define USE_BOTH_CRYPT_CALLS 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _HPUX_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _ALIGNMENT_REQUIRED 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _MAX_ALIGNMENT 4
EOF
;;
*11*)
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _HPUX_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _ALIGNMENT_REQUIRED 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _MAX_ALIGNMENT 4
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define USE_BOTH_CRYPT_CALLS 1
EOF
@@ -2354,11 +1500,11 @@ EOF
DYNEXP="-Wl,-E"
;;
+
#
# CRAY Unicos has broken const handling
*unicos*)
- echo "$as_me:2360: result: disabling const" >&5
-echo "${ECHO_T}disabling const" >&6
+ echo "$ac_t""disabling const" 1>&6
CPPFLAGS="$CPPFLAGS -Dconst="
;;
@@ -2367,14 +1513,13 @@ echo "${ECHO_T}disabling const" >&6
# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
#
*aix4*)
- echo "$as_me:2370: result: enabling large file support" >&5
-echo "${ECHO_T}enabling large file support" >&6
+ echo "$ac_t""enabling large file support" 1>&6
CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGE_FILES 1
EOF
- ;;
+ ;;
#
# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
# to the existance of large files..
@@ -2386,44 +1531,41 @@ EOF
*solaris*)
case `uname -r` in
5.0*|5.1*|5.2*|5.3*|5.5*)
- echo "$as_me:2389: result: no large file support" >&5
-echo "${ECHO_T}no large file support" >&6
+ echo "$ac_t""no large file support" 1>&6
;;
5.*)
- echo "$as_me:2393: result: enabling large file support" >&5
-echo "${ECHO_T}enabling large file support" >&6
- if test "$ac_cv_c_compiler_gnu" = yes; then
+ echo "$ac_t""enabling large file support" 1>&6
+ if test "$ac_cv_prog_gcc" = yes; then
${CC-cc} -v >conftest.c 2>&1
ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
rm -fr conftest.c
case "$ac_cv_gcc_compiler_version_number" in
*"gcc version 2.6"*|*"gcc version 2.7"*)
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
;;
*)
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _FILE_OFFSET_BITS 64
EOF
;;
esac
else
- DYNEXP="-dc -dp"
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _FILE_OFFSET_BITS 64
EOF
@@ -2436,15 +1578,15 @@ EOF
#
*sysv4*)
if test $host = mips-sni-sysv4 ; then
- echo "$as_me:2439: checking for LFS support" >&5
-echo $ECHO_N "checking for LFS support... $ECHO_C" >&6
+ echo $ac_n "checking for LFS support""... $ac_c" 1>&6
+echo "configure:1583: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
SINIX_LFS_SUPPORT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2447 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1590 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -2455,31 +1597,23 @@ exit(0);
exit(1);
#endif
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:2460: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:2463: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:2465: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2468: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:1602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
SINIX_LFS_SUPPORT=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-SINIX_LFS_SUPPORT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ SINIX_LFS_SUPPORT=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
CPPFLAGS="$old_CPPFLAGS"
if test x$SINIX_LFS_SUPPORT = xyes ; then
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
@@ -2487,23 +1621,22 @@ EOF
LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
LIBS="`getconf LFS64_LIBS` $LIBS"
fi
- echo "$as_me:2490: result: $SINIX_LFS_SUPPORT" >&5
-echo "${ECHO_T}$SINIX_LFS_SUPPORT" >&6
+ echo "$ac_t""$SINIX_LFS_SUPPORT" 1>&6
fi
;;
# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
#
*linux*)
- echo "$as_me:2498: checking for LFS support" >&5
-echo $ECHO_N "checking for LFS support... $ECHO_C" >&6
+ echo $ac_n "checking for LFS support""... $ac_c" 1>&6
+echo "configure:1633: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
LINUX_LFS_SUPPORT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2506 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1640 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -2540,57 +1673,48 @@ main() {
#endif
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:2545: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:2548: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:2550: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2553: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:1678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
LINUX_LFS_SUPPORT=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-LINUX_LFS_SUPPORT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ LINUX_LFS_SUPPORT=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
CPPFLAGS="$old_CPPFLAGS"
if test x$LINUX_LFS_SUPPORT = xyes ; then
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _FILE_OFFSET_BITS 64
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _GNU_SOURCE 1
EOF
fi
- echo "$as_me:2580: result: $LINUX_LFS_SUPPORT" >&5
-echo "${ECHO_T}$LINUX_LFS_SUPPORT" >&6
+ echo "$ac_t""$LINUX_LFS_SUPPORT" 1>&6
;;
*hurd*)
- echo "$as_me:2585: checking for LFS support" >&5
-echo $ECHO_N "checking for LFS support... $ECHO_C" >&6
+ echo $ac_n "checking for LFS support""... $ac_c" 1>&6
+echo "configure:1711: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
GLIBC_LFS_SUPPORT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2593 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1718 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -2601,439 +1725,196 @@ exit(0);
exit(1);
#endif
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:2606: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:2609: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:2611: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2614: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:1730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
GLIBC_LFS_SUPPORT=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-GLIBC_LFS_SUPPORT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ GLIBC_LFS_SUPPORT=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
CPPFLAGS="$old_CPPFLAGS"
if test x$GLIBC_LFS_SUPPORT = xyes ; then
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define _GNU_SOURCE 1
EOF
fi
- echo "$as_me:2637: result: $GLIBC_LFS_SUPPORT" >&5
-echo "${ECHO_T}$GLIBC_LFS_SUPPORT" >&6
+ echo "$ac_t""$GLIBC_LFS_SUPPORT" 1>&6
;;
esac
-echo "$as_me:2643: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-#line 2651 "configure"
-#include "confdefs.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2700: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2703: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2706: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2709: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_stdc=$ac_arg
-break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:2726: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:2729: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
- CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-echo "$as_me:2734: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6
-if test "${ac_cv_c_inline+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:1760: checking for inline" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 2742 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1767 "configure"
#include "confdefs.h"
-#ifndef __cplusplus
-static $ac_kw int static_foo () {return 0; }
-$ac_kw int foo () {return 0; }
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2751: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2754: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2757: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2760: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:1774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
done
fi
-echo "$as_me:2771: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6
-case $ac_cv_c_inline in
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
inline | yes) ;;
- no)
-cat >>confdefs.h <<\EOF
-#define inline
+ no) cat >> confdefs.h <<\EOF
+#define inline
EOF
;;
- *) cat >>confdefs.h <<EOF
+ *) cat >> confdefs.h <<EOF
#define inline $ac_cv_c_inline
EOF
;;
esac
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:2791: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1800: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -E"
# On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2812 "configure"
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+#line 1815 "configure"
#include "confdefs.h"
#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:2817: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2823: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
:
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2846 "configure"
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+#line 1832 "configure"
#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:2850: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2856: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:2893: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2903 "configure"
+ rm -rf conftest*
+ CPP="${CC-cc} -nologo -E"
+ cat > conftest.$ac_ext <<EOF
+#line 1849 "configure"
#include "confdefs.h"
#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:2908: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2914: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
:
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
+ rm -rf conftest*
+ CPP=/lib/cpp
fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2937 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:2941: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2947: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
+rm -f conftest*
fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
+rm -f conftest*
fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
+rm -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
else
- { { echo "$as_me:2975: error: C preprocessor \"$CPP\" fails sanity check" >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
+ ac_cv_prog_CPP="$CPP"
fi
+echo "$ac_t""$CPP" 1>&6
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-echo "$as_me:2986: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+echo "configure:1880: checking for ANSI C header files" >&5
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2992 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1885 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:3000: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3006: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
ac_cv_header_stdc=yes
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
+ rm -rf conftest*
ac_cv_header_stdc=no
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 3028 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 1910 "configure"
#include "confdefs.h"
#include <string.h>
-
-_ACEOF
+EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "memchr" >/dev/null 2>&1; then
:
else
+ rm -rf conftest*
ac_cv_header_stdc=no
fi
rm -f conftest*
@@ -3042,16 +1923,16 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 3046 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 1928 "configure"
#include "confdefs.h"
#include <stdlib.h>
-
-_ACEOF
+EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "free" >/dev/null 2>&1; then
:
else
+ rm -rf conftest*
ac_cv_header_stdc=no
fi
rm -f conftest*
@@ -3060,2153 +1941,1256 @@ fi
if test $ac_cv_header_stdc = yes; then
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
+if test "$cross_compiling" = yes; then
:
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3067 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 1949 "configure"
#include "confdefs.h"
#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3093: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3096: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3098: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3101: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
:
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_stdc=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_header_stdc=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
fi
-echo "$as_me:3114: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-cat >>confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+ cat >> confdefs.h <<\EOF
#define STDC_HEADERS 1
EOF
fi
ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:3127: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3133 "configure"
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
+echo "configure:1988: checking for $ac_hdr that defines DIR" >&5
+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1993 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3148: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3151: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3154: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3157: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
+int main() {
+DIR *dirp = 0;
+; return 0; }
+EOF
+if { (eval echo configure:2001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ eval "ac_cv_header_dirent_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_dirent_$ac_safe=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3167: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
-ac_header_dirent=$ac_hdr; break
+ ac_header_dirent=$ac_hdr; break
+else
+ echo "$ac_t""no" 1>&6
fi
-
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- echo "$as_me:3180: checking for opendir in -ldir" >&5
-echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
-if test "${ac_cv_lib_dir_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
+echo "configure:2026: checking for opendir in -ldir" >&5
+ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3188 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 2034 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3207: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3210: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3213: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3216: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dir_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dir_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3227: result: $ac_cv_lib_dir_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
-if test $ac_cv_lib_dir_opendir = yes; then
+ builtin and then its argument prototype would still apply. */
+char opendir();
+
+int main() {
+opendir()
+; return 0; }
+EOF
+if { (eval echo configure:2045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -ldir"
+else
+ echo "$ac_t""no" 1>&6
fi
else
- echo "$as_me:3234: checking for opendir in -lx" >&5
-echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
-if test "${ac_cv_lib_x_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
+echo "configure:2067: checking for opendir in -lx" >&5
+ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 3242 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 2075 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char opendir ();
-int
-main ()
-{
-opendir ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3261: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3264: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3267: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3270: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_x_opendir=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_x_opendir=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:3281: result: $ac_cv_lib_x_opendir" >&5
-echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
-if test $ac_cv_lib_x_opendir = yes; then
+ builtin and then its argument prototype would still apply. */
+char opendir();
+
+int main() {
+opendir()
+; return 0; }
+EOF
+if { (eval echo configure:2086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -lx"
+else
+ echo "$ac_t""no" 1>&6
fi
fi
-echo "$as_me:3289: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-if test "${ac_cv_header_time+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+echo "configure:2109: checking whether time.h and sys/time.h may both be included" >&5
+if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3295 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2114 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3311: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3314: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3317: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3320: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+int main() {
+struct tm *tp;
+; return 0; }
+EOF
+if { (eval echo configure:2123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_header_time=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_time=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_time=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3330: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6
-if test $ac_cv_header_time = yes; then
-cat >>confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_header_time" 1>&6
+if test $ac_cv_header_time = yes; then
+ cat >> confdefs.h <<\EOF
#define TIME_WITH_SYS_TIME 1
EOF
fi
-echo "$as_me:3340: checking for sys/wait.h that is POSIX.1 compatible" >&5
-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
+echo "configure:2144: checking for sys/wait.h that is POSIX.1 compatible" >&5
+if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3346 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2149 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
+#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
#endif
#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
#endif
-
-int
-main ()
-{
- int s;
- wait (&s);
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3368: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3371: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3374: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3377: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+int main() {
+int s;
+wait (&s);
+s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+; return 0; }
+EOF
+if { (eval echo configure:2165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_sys_wait_h=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_sys_wait_h=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3387: result: $ac_cv_header_sys_wait_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
-if test $ac_cv_header_sys_wait_h = yes; then
-cat >>confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6
+if test $ac_cv_header_sys_wait_h = yes; then
+ cat >> confdefs.h <<\EOF
#define HAVE_SYS_WAIT_H 1
EOF
fi
-for ac_header in arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h
+for ac_hdr in arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3400: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2189: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3406 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2194 "configure"
#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3410: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3416: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2199: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3435: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h
+for ac_hdr in unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3448: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3454 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3458: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3464: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2229: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2234 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3483: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h
+for ac_hdr in compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3496: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3502 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3506: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3512: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2269: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2274 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3531: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h
+for ac_hdr in stdlib.h string.h strings.h syslog.h sys/file.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3544: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3550 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3554: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3560: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2309: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2314 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3579: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h
+for ac_hdr in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3592: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3598 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3602: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3608: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2349: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2354 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3627: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in syslog.h sys/syslog.h sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h
+for ac_hdr in sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3640: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3646 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3650: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3656: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2389: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2394 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3675: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h
+for ac_hdr in syslog.h sys/syslog.h sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3688: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3694 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3698: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3704: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2429: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2434 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3723: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h
+for ac_hdr in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3736: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3742 "configure"
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2469: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2474 "configure"
#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3746: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3752: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+
else
- ac_cpp_err=yes
+ echo "$ac_t""no" 1>&6
fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+done
+
+for ac_hdr in security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2509: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2514 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3771: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
+
#
# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
# This causes configure to fail to detect it. Check for shadow separately on HPUX.
#
case "$host_os" in
*hpux*)
- cat >conftest.$ac_ext <<_ACEOF
-#line 3788 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2553 "configure"
#include "confdefs.h"
#include <shadow.h>
-int
-main ()
-{
+int main() {
struct spwd testme
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3800: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3803: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3806: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3809: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:2560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_header_shadow_h=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_shadow_h=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_shadow_h=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
if test x"$ac_cv_header_shadow_h" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SHADOW_H 1
EOF
fi
;;
esac
-
-for ac_header in shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h
+for ac_hdr in shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3830: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3836 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3840: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3846: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2582: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2587 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2592: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3865: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h
+for ac_hdr in nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3878: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3884 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3888: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3894: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2622: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2627 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3913: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in stropts.h poll.h
+for ac_hdr in stropts.h poll.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3926: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3932 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3936: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3942: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2662: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2667 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:3961: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in sys/capability.h syscall.h sys/syscall.h
+for ac_hdr in sys/capability.h syscall.h sys/syscall.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3974: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3980 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3984: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3990: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2702: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2707 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:4009: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in sys/acl.h sys/cdefs.h glob.h
+for ac_hdr in sys/acl.h sys/cdefs.h glob.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4022: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4028 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4032: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4038: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2742: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2747 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:4057: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-# For experimental utmp support (lastlog on some BSD-like systems)
-for ac_header in utmp.h utmpx.h lastlog.h
+# For experimental utmp support (lastlog on some BSD-like systems)
+for ac_hdr in utmp.h utmpx.h lastlog.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4072: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2784: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4078 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2789 "configure"
#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4082: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4088: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2794: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:4107: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
+
# For quotas on Veritas VxFS filesystems
-
-for ac_header in sys/fs/vx_quota.h
+for ac_hdr in sys/fs/vx_quota.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4122: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4128 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4132: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4138: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2826: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2831 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2836: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:4157: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-# For quotas on Linux XFS filesystems
-for ac_header in linux/xqm.h
+# For quotas on Linux XFS filesystems
+for ac_hdr in linux/xqm.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4172: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4178 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4182: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4188: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2868: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 2873 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:4207: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4223: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4229 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4235: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4238: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4241: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4244: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:4254: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-fi
-done
-
-echo "$as_me:4264: checking for int" >&5
-echo $ECHO_N "checking for int... $ECHO_C" >&6
-if test "${ac_cv_type_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking size of int""... $ac_c" 1>&6
+echo "configure:2906: checking size of int" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4270 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((int *) 0)
- return 0;
-if (sizeof (int))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4285: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4288: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4291: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4294: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_int=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_int=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:4304: result: $ac_cv_type_int" >&5
-echo "${ECHO_T}$ac_cv_type_int" >&6
-
-echo "$as_me:4307: checking size of int" >&5
-echo $ECHO_N "checking size of int... $ECHO_C" >&6
-if test "${ac_cv_sizeof_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_int" = yes; then
if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-#line 4316 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (int)) >= 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4328: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4331: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4334: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4337: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4342 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4354: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4357: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4360: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4363: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4379 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (int)) >= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4391: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4394: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4397: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4400: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-#line 4416 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4428: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4431: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4434: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4437: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-ac_cv_sizeof_int=$ac_lo
+ ac_cv_sizeof_int=cross
else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:4450: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4455 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2914 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
+#include <stdio.h>
+main()
{
-FILE *f = fopen ("conftest.val", "w");
-if (!f)
- exit (1);
-fprintf (f, "%d", (sizeof (int)));
-fclose (f);
- ;
- return 0;
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof(int));
+ exit(0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4471: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4474: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4476: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4479: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_int=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
+EOF
+if { (eval echo configure:2925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_sizeof_int=`cat conftestval`
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
ac_cv_sizeof_int=0
fi
+rm -fr conftest*
fi
-echo "$as_me:4495: result: $ac_cv_sizeof_int" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int" >&6
-cat >>confdefs.h <<EOF
+
+fi
+echo "$ac_t""$ac_cv_sizeof_int" 1>&6
+cat >> confdefs.h <<EOF
#define SIZEOF_INT $ac_cv_sizeof_int
EOF
-echo "$as_me:4501: checking for long" >&5
-echo $ECHO_N "checking for long... $ECHO_C" >&6
-if test "${ac_cv_type_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4507 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((long *) 0)
- return 0;
-if (sizeof (long))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4522: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4525: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4528: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4531: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_long=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_long=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:4541: result: $ac_cv_type_long" >&5
-echo "${ECHO_T}$ac_cv_type_long" >&6
-
-echo "$as_me:4544: checking size of long" >&5
-echo $ECHO_N "checking size of long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_long" = yes; then
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-#line 4553 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (long)) >= 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4565: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4568: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4571: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4574: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4579 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4591: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4594: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4597: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4600: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4616 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (long)) >= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4628: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4631: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4634: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4637: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-#line 4653 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4665: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4668: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4671: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4674: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-ac_cv_sizeof_long=$ac_lo
+
+echo $ac_n "checking size of long""... $ac_c" 1>&6
+echo "configure:2945: checking size of long" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:4687: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
+ ac_cv_sizeof_long=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4692 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2953 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
+#include <stdio.h>
+main()
{
-FILE *f = fopen ("conftest.val", "w");
-if (!f)
- exit (1);
-fprintf (f, "%d", (sizeof (long)));
-fclose (f);
- ;
- return 0;
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof(long));
+ exit(0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4708: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4711: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4713: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4716: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_long=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
+EOF
+if { (eval echo configure:2964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_sizeof_long=`cat conftestval`
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
ac_cv_sizeof_long=0
fi
+rm -fr conftest*
fi
-echo "$as_me:4732: result: $ac_cv_sizeof_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long" >&6
-cat >>confdefs.h <<EOF
+
+fi
+echo "$ac_t""$ac_cv_sizeof_long" 1>&6
+cat >> confdefs.h <<EOF
#define SIZEOF_LONG $ac_cv_sizeof_long
EOF
-echo "$as_me:4738: checking for short" >&5
-echo $ECHO_N "checking for short... $ECHO_C" >&6
-if test "${ac_cv_type_short+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4744 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((short *) 0)
- return 0;
-if (sizeof (short))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4759: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4762: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4765: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4768: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_short=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_short=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:4778: result: $ac_cv_type_short" >&5
-echo "${ECHO_T}$ac_cv_type_short" >&6
-
-echo "$as_me:4781: checking size of short" >&5
-echo $ECHO_N "checking size of short... $ECHO_C" >&6
-if test "${ac_cv_sizeof_short+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_short" = yes; then
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-#line 4790 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (short)) >= 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4802: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4805: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4808: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4811: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4816 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (short)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4828: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4831: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4834: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4837: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4853 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (short)) >= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4865: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4868: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4871: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4874: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-#line 4890 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (short)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4902: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4905: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4908: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4911: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-ac_cv_sizeof_short=$ac_lo
+
+echo $ac_n "checking size of short""... $ac_c" 1>&6
+echo "configure:2984: checking size of short" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:4924: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
+ ac_cv_sizeof_short=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4929 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 2992 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
+#include <stdio.h>
+main()
{
-FILE *f = fopen ("conftest.val", "w");
-if (!f)
- exit (1);
-fprintf (f, "%d", (sizeof (short)));
-fclose (f);
- ;
- return 0;
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof(short));
+ exit(0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4945: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4948: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4950: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4953: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_short=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
+EOF
+if { (eval echo configure:3003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_sizeof_short=`cat conftestval`
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
ac_cv_sizeof_short=0
fi
+rm -fr conftest*
fi
-echo "$as_me:4969: result: $ac_cv_sizeof_short" >&5
-echo "${ECHO_T}$ac_cv_sizeof_short" >&6
-cat >>confdefs.h <<EOF
+
+fi
+echo "$ac_t""$ac_cv_sizeof_short" 1>&6
+cat >> confdefs.h <<EOF
#define SIZEOF_SHORT $ac_cv_sizeof_short
EOF
-echo "$as_me:4975: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:3024: checking for working const" >&5
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4981 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3029 "configure"
#include "confdefs.h"
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- }
-#endif
+int main() {
- ;
- return 0;
+/* Ultrix mips cc rejects this. */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this. */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this. */
+struct point {int x, y;};
+static struct point const zero = {0,0};
+/* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in an arm
+ of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5039: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5042: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5045: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5048: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+{ /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:3078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_c_const=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_const=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_c_const=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:5058: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-cat >>confdefs.h <<\EOF
-#define const
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+ cat >> confdefs.h <<\EOF
+#define const
EOF
fi
-echo "$as_me:5068: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6
-if test "${ac_cv_c_inline+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:3099: checking for inline" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 5076 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3106 "configure"
#include "confdefs.h"
-#ifndef __cplusplus
-static $ac_kw int static_foo () {return 0; }
-$ac_kw int foo () {return 0; }
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5085: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5088: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5091: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5094: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:3113: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
done
fi
-echo "$as_me:5105: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6
-case $ac_cv_c_inline in
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
inline | yes) ;;
- no)
-cat >>confdefs.h <<\EOF
-#define inline
+ no) cat >> confdefs.h <<\EOF
+#define inline
EOF
;;
- *) cat >>confdefs.h <<EOF
+ *) cat >> confdefs.h <<EOF
#define inline $ac_cv_c_inline
EOF
;;
esac
-echo "$as_me:5120: checking whether byte ordering is bigendian" >&5
-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
-if test "${ac_cv_c_bigendian+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+echo "configure:3139: checking whether byte ordering is bigendian" >&5
+if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
-cat >conftest.$ac_ext <<_ACEOF
-#line 5128 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 3146 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
+int main() {
-int
-main ()
-{
#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
bogus endian macros
#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5145: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5148: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5151: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5154: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
-cat >conftest.$ac_ext <<_ACEOF
-#line 5158 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 3161 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
+int main() {
-int
-main ()
-{
#if BYTE_ORDER != BIG_ENDIAN
not big endian
#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5175: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5178: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5181: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5184: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_c_bigendian=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_bigendian=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_c_bigendian=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
if test $ac_cv_c_bigendian = unknown; then
if test "$cross_compiling" = yes; then
- { { echo "$as_me:5200: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
+ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5205 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3192 "configure"
#include "confdefs.h"
-int
-main ()
-{
+main () {
/* Are we little or big endian? From Harbison&Steele. */
union
{
@@ -5216,97 +3200,106 @@ main ()
u.l = 1;
exit (u.c[sizeof (long) - 1] == 1);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:5221: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5224: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:5226: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5229: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:3205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
ac_cv_c_bigendian=no
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_bigendian=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_c_bigendian=yes
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
fi
-echo "$as_me:5242: result: $ac_cv_c_bigendian" >&5
-echo "${ECHO_T}$ac_cv_c_bigendian" >&6
-if test $ac_cv_c_bigendian = yes; then
-cat >>confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_c_bigendian" 1>&6
+if test $ac_cv_c_bigendian = yes; then
+ cat >> confdefs.h <<\EOF
#define WORDS_BIGENDIAN 1
EOF
fi
-echo "$as_me:5252: checking whether char is unsigned" >&5
-echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6
-if test "${ac_cv_c_char_unsigned+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
+echo "configure:3229: checking whether char is unsigned" >&5
+if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5258 "configure"
+ if test "$GCC" = yes; then
+ # GCC predefines this symbol on systems where it applies.
+cat > conftest.$ac_ext <<EOF
+#line 3236 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !(((char) -1) < 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5270: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5273: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5276: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5279: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#ifdef __CHAR_UNSIGNED__
+ yes
+#endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ rm -rf conftest*
+ ac_cv_c_char_unsigned=yes
+else
+ rm -rf conftest*
ac_cv_c_char_unsigned=no
+fi
+rm -f conftest*
+
+else
+if test "$cross_compiling" = yes; then
+ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3258 "configure"
+#include "confdefs.h"
+/* volatile prevents gcc2 from optimizing the test away on sparcs. */
+#if !defined(__STDC__) || __STDC__ != 1
+#define volatile
+#endif
+main() {
+ volatile char c = 255; exit(c < 0);
+}
+EOF
+if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_c_char_unsigned=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_char_unsigned=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_c_char_unsigned=no
+fi
+rm -fr conftest*
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+
fi
-echo "$as_me:5289: result: $ac_cv_c_char_unsigned" >&5
-echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
+fi
+
+echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6
if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define __CHAR_UNSIGNED__ 1
EOF
fi
-echo "$as_me:5298: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+echo "configure:3293: checking return type of signal handlers" >&5
+if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5304 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3298 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
#ifdef signal
-# undef signal
+#undef signal
#endif
#ifdef __cplusplus
extern "C" void (*signal (int, void (*)(int)))(int);
@@ -5314,896 +3307,588 @@ extern "C" void (*signal (int, void (*)(int)))(int);
void (*signal ()) ();
#endif
-int
-main ()
-{
+int main() {
int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5326: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5329: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5332: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5335: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_type_signal=void
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_signal=int
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_type_signal=int
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:5345: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
-cat >>confdefs.h <<EOF
+echo "$ac_t""$ac_cv_type_signal" 1>&6
+cat >> confdefs.h <<EOF
#define RETSIGTYPE $ac_cv_type_signal
EOF
-echo "$as_me:5352: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-if test "${ac_cv_type_uid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+
+echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
+echo "configure:3334: checking for uid_t in sys/types.h" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5358 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3339 "configure"
#include "confdefs.h"
#include <sys/types.h>
-
-_ACEOF
+EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "uid_t" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_uid_t=yes
else
+ rm -rf conftest*
ac_cv_type_uid_t=no
fi
rm -f conftest*
fi
-echo "$as_me:5372: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6
-if test $ac_cv_type_uid_t = no; then
-cat >>confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_type_uid_t" 1>&6
+if test $ac_cv_type_uid_t = no; then
+ cat >> confdefs.h <<\EOF
#define uid_t int
EOF
-cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define gid_t int
EOF
fi
-echo "$as_me:5386: checking for mode_t" >&5
-echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
-if test "${ac_cv_type_mode_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for mode_t""... $ac_c" 1>&6
+echo "configure:3368: checking for mode_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5392 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3373 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((mode_t *) 0)
- return 0;
-if (sizeof (mode_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5407: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5410: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5413: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5416: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_mode_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_mode_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_mode_t=no
fi
-echo "$as_me:5426: result: $ac_cv_type_mode_t" >&5
-echo "${ECHO_T}$ac_cv_type_mode_t" >&6
-if test $ac_cv_type_mode_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_mode_t" 1>&6
+if test $ac_cv_type_mode_t = no; then
+ cat >> confdefs.h <<\EOF
#define mode_t int
EOF
fi
-echo "$as_me:5438: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for off_t""... $ac_c" 1>&6
+echo "configure:3401: checking for off_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5444 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3406 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((off_t *) 0)
- return 0;
-if (sizeof (off_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5459: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5462: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5465: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5468: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_off_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_off_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_off_t=no
fi
-echo "$as_me:5478: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-if test $ac_cv_type_off_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_off_t" 1>&6
+if test $ac_cv_type_off_t = no; then
+ cat >> confdefs.h <<\EOF
#define off_t long
EOF
fi
-echo "$as_me:5490: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for size_t""... $ac_c" 1>&6
+echo "configure:3434: checking for size_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5496 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3439 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((size_t *) 0)
- return 0;
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5511: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5514: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5517: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5520: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_size_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_size_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_size_t=no
fi
-echo "$as_me:5530: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-if test $ac_cv_type_size_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_size_t" 1>&6
+if test $ac_cv_type_size_t = no; then
+ cat >> confdefs.h <<\EOF
#define size_t unsigned
EOF
fi
-echo "$as_me:5542: checking for pid_t" >&5
-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-if test "${ac_cv_type_pid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for pid_t""... $ac_c" 1>&6
+echo "configure:3467: checking for pid_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5548 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3472 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((pid_t *) 0)
- return 0;
-if (sizeof (pid_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5563: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5566: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5569: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5572: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_pid_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_pid_t=no
+ rm -rf conftest*
+ ac_cv_type_pid_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:5582: result: $ac_cv_type_pid_t" >&5
-echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-if test $ac_cv_type_pid_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_pid_t" 1>&6
+if test $ac_cv_type_pid_t = no; then
+ cat >> confdefs.h <<\EOF
#define pid_t int
EOF
fi
-echo "$as_me:5594: checking for struct stat.st_rdev" >&5
-echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6
-if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
+echo "configure:3500: checking for st_rdev in struct stat" >&5
+if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5600 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3505 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-static struct stat ac_aggr;
-if (ac_aggr.st_rdev)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5614: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5617: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5620: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5623: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_member_struct_stat_st_rdev=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_member_struct_stat_st_rdev=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:5633: result: $ac_cv_member_struct_stat_st_rdev" >&5
-echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6
-if test $ac_cv_member_struct_stat_st_rdev = yes; then
-
-cat >>confdefs.h <<EOF
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-EOF
-
-cat >>confdefs.h <<\EOF
+#include <sys/types.h>
+#include <sys/stat.h>
+int main() {
+struct stat s; s.st_rdev;
+; return 0; }
+EOF
+if { (eval echo configure:3513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_struct_st_rdev=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_struct_st_rdev=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_struct_st_rdev" 1>&6
+if test $ac_cv_struct_st_rdev = yes; then
+ cat >> confdefs.h <<\EOF
#define HAVE_ST_RDEV 1
EOF
fi
-echo "$as_me:5647: checking for d_off in dirent" >&5
-echo $ECHO_N "checking for d_off in dirent... $ECHO_C" >&6
-if test "${ac_cv_dirent_d_off+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for d_off in dirent""... $ac_c" 1>&6
+echo "configure:3534: checking for d_off in dirent" >&5
+if eval "test \"`echo '$''{'ac_cv_dirent_d_off'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5653 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3539 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
-int
-main ()
-{
+int main() {
struct dirent d; d.d_off;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5668: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5671: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5674: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5677: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_dirent_d_off=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_dirent_d_off=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_dirent_d_off=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:5687: result: $ac_cv_dirent_d_off" >&5
-echo "${ECHO_T}$ac_cv_dirent_d_off" >&6
+
+echo "$ac_t""$ac_cv_dirent_d_off" 1>&6
if test $ac_cv_dirent_d_off = yes; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_DIRENT_D_OFF 1
EOF
fi
-echo "$as_me:5696: checking for ino_t" >&5
-echo $ECHO_N "checking for ino_t... $ECHO_C" >&6
-if test "${ac_cv_type_ino_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ino_t""... $ac_c" 1>&6
+echo "configure:3570: checking for ino_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5702 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3575 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((ino_t *) 0)
- return 0;
-if (sizeof (ino_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5717: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5720: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5723: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5726: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])ino_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_ino_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_ino_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_ino_t=no
fi
-echo "$as_me:5736: result: $ac_cv_type_ino_t" >&5
-echo "${ECHO_T}$ac_cv_type_ino_t" >&6
-if test $ac_cv_type_ino_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_ino_t" 1>&6
+if test $ac_cv_type_ino_t = no; then
+ cat >> confdefs.h <<\EOF
#define ino_t unsigned
EOF
fi
-echo "$as_me:5748: checking for loff_t" >&5
-echo $ECHO_N "checking for loff_t... $ECHO_C" >&6
-if test "${ac_cv_type_loff_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for loff_t""... $ac_c" 1>&6
+echo "configure:3603: checking for loff_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_loff_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5754 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3608 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((loff_t *) 0)
- return 0;
-if (sizeof (loff_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5769: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5772: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5775: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5778: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])loff_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_loff_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_loff_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_loff_t=no
fi
-echo "$as_me:5788: result: $ac_cv_type_loff_t" >&5
-echo "${ECHO_T}$ac_cv_type_loff_t" >&6
-if test $ac_cv_type_loff_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_loff_t" 1>&6
+if test $ac_cv_type_loff_t = no; then
+ cat >> confdefs.h <<\EOF
#define loff_t off_t
EOF
fi
-echo "$as_me:5800: checking for offset_t" >&5
-echo $ECHO_N "checking for offset_t... $ECHO_C" >&6
-if test "${ac_cv_type_offset_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for offset_t""... $ac_c" 1>&6
+echo "configure:3636: checking for offset_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_offset_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5806 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3641 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((offset_t *) 0)
- return 0;
-if (sizeof (offset_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5821: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5824: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5827: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5830: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])offset_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_offset_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_offset_t=no
+ rm -rf conftest*
+ ac_cv_type_offset_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:5840: result: $ac_cv_type_offset_t" >&5
-echo "${ECHO_T}$ac_cv_type_offset_t" >&6
-if test $ac_cv_type_offset_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_offset_t" 1>&6
+if test $ac_cv_type_offset_t = no; then
+ cat >> confdefs.h <<\EOF
#define offset_t loff_t
EOF
fi
-echo "$as_me:5852: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
+echo "configure:3669: checking for ssize_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5858 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3674 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((ssize_t *) 0)
- return 0;
-if (sizeof (ssize_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5873: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5876: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5879: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5882: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])ssize_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_ssize_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_ssize_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ rm -rf conftest*
+ ac_cv_type_ssize_t=no
fi
-echo "$as_me:5892: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_ssize_t" 1>&6
+if test $ac_cv_type_ssize_t = no; then
+ cat >> confdefs.h <<\EOF
#define ssize_t int
EOF
fi
-echo "$as_me:5904: checking for wchar_t" >&5
-echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6
-if test "${ac_cv_type_wchar_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for wchar_t""... $ac_c" 1>&6
+echo "configure:3702: checking for wchar_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_wchar_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5910 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 3707 "configure"
#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((wchar_t *) 0)
- return 0;
-if (sizeof (wchar_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5925: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5928: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5931: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5934: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])wchar_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
ac_cv_type_wchar_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_wchar_t=no
+ rm -rf conftest*
+ ac_cv_type_wchar_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:5944: result: $ac_cv_type_wchar_t" >&5
-echo "${ECHO_T}$ac_cv_type_wchar_t" >&6
-if test $ac_cv_type_wchar_t = yes; then
- :
-else
+rm -f conftest*
-cat >>confdefs.h <<EOF
+fi
+echo "$ac_t""$ac_cv_type_wchar_t" 1>&6
+if test $ac_cv_type_wchar_t = no; then
+ cat >> confdefs.h <<\EOF
#define wchar_t unsigned short
EOF
fi
+
############################################
# for cups support we need libcups, and a handful of header files
-echo "$as_me:5959: checking for httpConnect in -lcups" >&5
-echo $ECHO_N "checking for httpConnect in -lcups... $ECHO_C" >&6
-if test "${ac_cv_lib_cups_httpConnect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcups $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 5967 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char httpConnect ();
-int
-main ()
-{
-httpConnect ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5986: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5989: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5992: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5995: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_cups_httpConnect=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_cups_httpConnect=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6006: result: $ac_cv_lib_cups_httpConnect" >&5
-echo "${ECHO_T}$ac_cv_lib_cups_httpConnect" >&6
-if test $ac_cv_lib_cups_httpConnect = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBCUPS 1
-EOF
-
- LIBS="-lcups $LIBS"
-
+# Check whether --enable-cups or --disable-cups was given.
+if test "${enable_cups+set}" = set; then
+ enableval="$enable_cups"
+ :
fi
-# I wonder if there is a nicer way of doing this?
-if test x"$ac_cv_lib_cups_httpConnect" = x"yes"; then
-
-for ac_header in cups/cups.h cups/language.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6024: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6030 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:6034: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:6040: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+if test x$enable_cups != xno; then
+ # Extract the first word of "cups-config", so it can be a program name with args.
+set dummy cups-config; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:3749: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_CUPS_CONFIG'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
+ case "$CUPS_CONFIG" in
+ /*)
+ ac_cv_path_CUPS_CONFIG="$CUPS_CONFIG" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_CUPS_CONFIG="$CUPS_CONFIG" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_CUPS_CONFIG="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+CUPS_CONFIG="$ac_cv_path_CUPS_CONFIG"
+if test -n "$CUPS_CONFIG"; then
+ echo "$ac_t""$CUPS_CONFIG" 1>&6
else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ echo "$ac_t""no" 1>&6
fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:6059: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-fi
-done
- if test x"$ac_cv_header_cups_cups_h" = x"yes"; then
- if test x"$ac_cv_header_cups_language_h" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ if test "x$CUPS_CONFIG" != x; then
+ cat >> confdefs.h <<\EOF
#define HAVE_CUPS 1
EOF
- fi
+ CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
+ LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
+ LIBS="$LIBS `$CUPS_CONFIG --libs`"
fi
fi
############################################
# we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
-
for ac_func in dlopen
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:6085: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6091 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3798: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3803 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6122: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6125: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6128: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6131: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:6141: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:3826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
if test x"$ac_cv_func_dlopen" = x"no"; then
- echo "$as_me:6152: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "configure:3852: checking for dlopen in -ldl" >&5
+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6160 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 3860 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6179: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6182: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6185: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6188: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dl_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6199: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
+ builtin and then its argument prototype would still apply. */
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo configure:3871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -ldl";
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_DLOPEN 1
EOF
+else
+ echo "$ac_t""no" 1>&6
fi
fi
@@ -6211,20 +3896,18 @@ fi
############################################
# check if the compiler can do immediate structures
-echo "$as_me:6214: checking for immediate structures" >&5
-echo $ECHO_N "checking for immediate structures... $ECHO_C" >&6
-if test "${samba_cv_immediate_structures+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for immediate structures""... $ac_c" 1>&6
+echo "configure:3901: checking for immediate structures" >&5
+if eval "test \"`echo '$''{'samba_cv_immediate_structures'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 6221 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 3907 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
typedef struct {unsigned x;} FOOBAR;
#define X_FOOBAR(x) ((FOOBAR) { x })
@@ -6236,34 +3919,23 @@ main ()
{FOO_ONE}
};
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6244: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6247: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6250: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6253: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_immediate_structures=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_immediate_structures=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_immediate_structures=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6263: result: $samba_cv_immediate_structures" >&5
-echo "${ECHO_T}$samba_cv_immediate_structures" >&6
+
+echo "$ac_t""$samba_cv_immediate_structures" 1>&6
if test x"$samba_cv_immediate_structures" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_IMMEDIATE_STRUCTURES 1
EOF
@@ -6271,14 +3943,14 @@ fi
############################################
# check for unix domain sockets
-echo "$as_me:6274: checking for unix domain sockets" >&5
-echo $ECHO_N "checking for unix domain sockets... $ECHO_C" >&6
-if test "${samba_cv_unixsocket+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for unix domain sockets""... $ac_c" 1>&6
+echo "configure:3948: checking for unix domain sockets" >&5
+if eval "test \"`echo '$''{'samba_cv_unixsocket'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 6281 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 3954 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6286,54 +3958,41 @@ else
#include <stddef.h>
#include <sys/socket.h>
#include <sys/un.h>
-int
-main ()
-{
+int main() {
- struct sockaddr_un sunaddr;
+ struct sockaddr_un sunaddr;
sunaddr.sun_family = AF_UNIX;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6301: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6304: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6307: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6310: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:3969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_unixsocket=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_unixsocket=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_unixsocket=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6320: result: $samba_cv_unixsocket" >&5
-echo "${ECHO_T}$samba_cv_unixsocket" >&6
+
+echo "$ac_t""$samba_cv_unixsocket" 1>&6
if test x"$samba_cv_unixsocket" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UNIXSOCKET 1
EOF
fi
-echo "$as_me:6329: checking for socklen_t type" >&5
-echo $ECHO_N "checking for socklen_t type... $ECHO_C" >&6
-if test "${samba_cv_socklen_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for socklen_t type""... $ac_c" 1>&6
+echo "configure:3990: checking for socklen_t type" >&5
+if eval "test \"`echo '$''{'samba_cv_socklen_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 6336 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 3996 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6342,51 +4001,38 @@ else
#include <stddef.h>
#endif
#include <sys/socket.h>
-int
-main ()
-{
+int main() {
socklen_t i = 0
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6354: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6357: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6360: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6363: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_socklen_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_socklen_t=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_socklen_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6373: result: $samba_cv_socklen_t" >&5
-echo "${ECHO_T}$samba_cv_socklen_t" >&6
+
+echo "$ac_t""$samba_cv_socklen_t" 1>&6
if test x"$samba_cv_socklen_t" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SOCKLEN_T_TYPE 1
EOF
fi
-echo "$as_me:6382: checking for sig_atomic_t type" >&5
-echo $ECHO_N "checking for sig_atomic_t type... $ECHO_C" >&6
-if test "${samba_cv_sig_atomic_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for sig_atomic_t type""... $ac_c" 1>&6
+echo "configure:4030: checking for sig_atomic_t type" >&5
+if eval "test \"`echo '$''{'samba_cv_sig_atomic_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 6389 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 4036 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6395,38 +4041,25 @@ else
#include <stddef.h>
#endif
#include <signal.h>
-int
-main ()
-{
+int main() {
sig_atomic_t i = 0
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6407: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6410: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6413: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6416: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_sig_atomic_t=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_sig_atomic_t=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_sig_atomic_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6426: result: $samba_cv_sig_atomic_t" >&5
-echo "${ECHO_T}$samba_cv_sig_atomic_t" >&6
+
+echo "$ac_t""$samba_cv_sig_atomic_t" 1>&6
if test x"$samba_cv_sig_atomic_t" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SIG_ATOMIC_T_TYPE 1
EOF
@@ -6434,377 +4067,285 @@ fi
# stupid headers have the functions but no declaration. grrrr.
- echo "$as_me:6437: checking for errno declaration" >&5
-echo $ECHO_N "checking for errno declaration... $ECHO_C" >&6
-if test "${ac_cv_have_errno_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for errno declaration""... $ac_c" 1>&6
+echo "configure:4072: checking for errno declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_errno_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 6444 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 4078 "configure"
#include "confdefs.h"
#include <errno.h>
-int
-main ()
-{
+int main() {
int i = (int)errno
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6456: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6459: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6462: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6465: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_errno_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_errno_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_errno_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6475: result: $ac_cv_have_errno_decl" >&5
-echo "${ECHO_T}$ac_cv_have_errno_decl" >&6
+
+echo "$ac_t""$ac_cv_have_errno_decl" 1>&6
if test x"$ac_cv_have_errno_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_ERRNO_DECL 1
EOF
fi
- echo "$as_me:6484: checking for setresuid declaration" >&5
-echo $ECHO_N "checking for setresuid declaration... $ECHO_C" >&6
-if test "${ac_cv_have_setresuid_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6491 "configure"
+ echo $ac_n "checking for setresuid declaration""... $ac_c" 1>&6
+echo "configure:4107: checking for setresuid declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_setresuid_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4113 "configure"
#include "confdefs.h"
#include <unistd.h>
-int
-main ()
-{
+int main() {
int i = (int)setresuid
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6503: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6506: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6509: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6512: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_setresuid_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_setresuid_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_setresuid_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6522: result: $ac_cv_have_setresuid_decl" >&5
-echo "${ECHO_T}$ac_cv_have_setresuid_decl" >&6
+
+echo "$ac_t""$ac_cv_have_setresuid_decl" 1>&6
if test x"$ac_cv_have_setresuid_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SETRESUID_DECL 1
EOF
fi
- echo "$as_me:6531: checking for setresgid declaration" >&5
-echo $ECHO_N "checking for setresgid declaration... $ECHO_C" >&6
-if test "${ac_cv_have_setresgid_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6538 "configure"
+ echo $ac_n "checking for setresgid declaration""... $ac_c" 1>&6
+echo "configure:4142: checking for setresgid declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_setresgid_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4148 "configure"
#include "confdefs.h"
#include <unistd.h>
-int
-main ()
-{
+int main() {
int i = (int)setresgid
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6550: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6553: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6556: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6559: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_setresgid_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_setresgid_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_setresgid_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6569: result: $ac_cv_have_setresgid_decl" >&5
-echo "${ECHO_T}$ac_cv_have_setresgid_decl" >&6
+
+echo "$ac_t""$ac_cv_have_setresgid_decl" 1>&6
if test x"$ac_cv_have_setresgid_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SETRESGID_DECL 1
EOF
fi
- echo "$as_me:6578: checking for asprintf declaration" >&5
-echo $ECHO_N "checking for asprintf declaration... $ECHO_C" >&6
-if test "${ac_cv_have_asprintf_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6585 "configure"
+ echo $ac_n "checking for asprintf declaration""... $ac_c" 1>&6
+echo "configure:4177: checking for asprintf declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_asprintf_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4183 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
int i = (int)asprintf
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6597: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6600: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6603: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6606: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_asprintf_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_asprintf_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_asprintf_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6616: result: $ac_cv_have_asprintf_decl" >&5
-echo "${ECHO_T}$ac_cv_have_asprintf_decl" >&6
+
+echo "$ac_t""$ac_cv_have_asprintf_decl" 1>&6
if test x"$ac_cv_have_asprintf_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_ASPRINTF_DECL 1
EOF
fi
- echo "$as_me:6625: checking for vasprintf declaration" >&5
-echo $ECHO_N "checking for vasprintf declaration... $ECHO_C" >&6
-if test "${ac_cv_have_vasprintf_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6632 "configure"
+ echo $ac_n "checking for vasprintf declaration""... $ac_c" 1>&6
+echo "configure:4212: checking for vasprintf declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_vasprintf_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4218 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
int i = (int)vasprintf
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6644: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6647: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6650: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6653: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_vasprintf_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_vasprintf_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_vasprintf_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6663: result: $ac_cv_have_vasprintf_decl" >&5
-echo "${ECHO_T}$ac_cv_have_vasprintf_decl" >&6
+
+echo "$ac_t""$ac_cv_have_vasprintf_decl" 1>&6
if test x"$ac_cv_have_vasprintf_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_VASPRINTF_DECL 1
EOF
fi
- echo "$as_me:6672: checking for vsnprintf declaration" >&5
-echo $ECHO_N "checking for vsnprintf declaration... $ECHO_C" >&6
-if test "${ac_cv_have_vsnprintf_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6679 "configure"
+ echo $ac_n "checking for vsnprintf declaration""... $ac_c" 1>&6
+echo "configure:4247: checking for vsnprintf declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_vsnprintf_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4253 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
int i = (int)vsnprintf
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6691: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6694: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6697: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6700: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_vsnprintf_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_vsnprintf_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_vsnprintf_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6710: result: $ac_cv_have_vsnprintf_decl" >&5
-echo "${ECHO_T}$ac_cv_have_vsnprintf_decl" >&6
+
+echo "$ac_t""$ac_cv_have_vsnprintf_decl" 1>&6
if test x"$ac_cv_have_vsnprintf_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_VSNPRINTF_DECL 1
EOF
fi
- echo "$as_me:6719: checking for snprintf declaration" >&5
-echo $ECHO_N "checking for snprintf declaration... $ECHO_C" >&6
-if test "${ac_cv_have_snprintf_decl+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6726 "configure"
+ echo $ac_n "checking for snprintf declaration""... $ac_c" 1>&6
+echo "configure:4282: checking for snprintf declaration" >&5
+if eval "test \"`echo '$''{'ac_cv_have_snprintf_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 4288 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
int i = (int)snprintf
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6738: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6741: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6744: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6747: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:4295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
ac_cv_have_snprintf_decl=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_have_snprintf_decl=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_have_snprintf_decl=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6757: result: $ac_cv_have_snprintf_decl" >&5
-echo "${ECHO_T}$ac_cv_have_snprintf_decl" >&6
+
+echo "$ac_t""$ac_cv_have_snprintf_decl" 1>&6
if test x"$ac_cv_have_snprintf_decl" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SNPRINTF_DECL 1
EOF
fi
+
# and glibc has setresuid under linux but the function does
# nothing until kernel 2.1.44! very dumb.
-echo "$as_me:6768: checking for real setresuid" >&5
-echo $ECHO_N "checking for real setresuid... $ECHO_C" >&6
-if test "${samba_cv_have_setresuid+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for real setresuid""... $ac_c" 1>&6
+echo "configure:4319: checking for real setresuid" >&5
+if eval "test \"`echo '$''{'samba_cv_have_setresuid'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_have_setresuid=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6778 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 4328 "configure"
#include "confdefs.h"
#include <errno.h>
main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6784: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6787: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6789: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6792: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:4333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_have_setresuid=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_have_setresuid=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_have_setresuid=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:6804: result: $samba_cv_have_setresuid" >&5
-echo "${ECHO_T}$samba_cv_have_setresuid" >&6
+
+echo "$ac_t""$samba_cv_have_setresuid" 1>&6
if test x"$samba_cv_have_setresuid" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SETRESUID 1
EOF
@@ -6812,405 +4353,310 @@ fi
# Do the same check for setresguid...
#
-echo "$as_me:6815: checking for real setresgid" >&5
-echo $ECHO_N "checking for real setresgid... $ECHO_C" >&6
-if test "${samba_cv_have_setresgid+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for real setresgid""... $ac_c" 1>&6
+echo "configure:4358: checking for real setresgid" >&5
+if eval "test \"`echo '$''{'samba_cv_have_setresgid'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_have_setresgid=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6825 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 4367 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <errno.h>
main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6832: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6835: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6837: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6840: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:4373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_have_setresgid=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_have_setresgid=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_have_setresgid=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:6852: result: $samba_cv_have_setresgid" >&5
-echo "${ECHO_T}$samba_cv_have_setresgid" >&6
+
+echo "$ac_t""$samba_cv_have_setresgid" 1>&6
if test x"$samba_cv_have_setresgid" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SETRESGID 1
EOF
fi
-echo "$as_me:6861: checking for working memcmp" >&5
-echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6
-if test "${ac_cv_func_memcmp_working+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
+echo "configure:4396: checking for 8-bit clean memcmp" >&5
+if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp_working=no
+ ac_cv_func_memcmp_clean=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6870 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 4404 "configure"
#include "confdefs.h"
-int
-main ()
+main()
{
-
- /* Some versions of memcmp are not 8-bit clean. */
char c0 = 0x40, c1 = 0x80, c2 = 0x81;
- if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
- exit (1);
+ exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
+}
- /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
- or more and with at least one buffer not starting on a 4-byte boundary.
- William Lewis provided this test program. */
- {
- char foo[21];
- char bar[21];
- int i;
- for (i = 0; i < 4; i++)
- {
- char *a = foo + i;
- char *b = bar + i;
- strcpy (a, "--------01111111");
- strcpy (b, "--------10000000");
- if (memcmp (a, b, 16) >= 0)
- exit (1);
- }
- exit (0);
- }
+EOF
+if { (eval echo configure:4414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_memcmp_clean=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_func_memcmp_clean=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6906: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6909: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6911: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6914: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_memcmp_working=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_memcmp_working=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:6926: result: $ac_cv_func_memcmp_working" >&5
-echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6
-test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext"
###############################################
# Readline included by default unless explicitly asked not to
test "${with_readline+set}" != "set" && with_readline=yes
# test for where we get readline() from
-echo "$as_me:6935: checking whether to use readline" >&5
-echo $ECHO_N "checking whether to use readline... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use readline""... $ac_c" 1>&6
+echo "configure:4438: checking whether to use readline" >&5
# Check whether --with-readline or --without-readline was given.
if test "${with_readline+set}" = set; then
withval="$with_readline"
case "$with_readline" in
yes)
- echo "$as_me:6943: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
-for ac_header in readline.h history.h readline/readline.h
+ for ac_hdr in readline.h history.h readline/readline.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6949: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6955 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:6959: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:6965: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4450: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4455 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:6984: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in readline/history.h
+ for ac_hdr in readline/history.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6997: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7003 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7007: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7013: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4490: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4495 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:7032: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in readline.h readline/readline.h
+
+ for ac_hdr in readline.h readline/readline.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7045: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7051 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7055: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7061: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4531: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4536 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:7080: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
for termlib in ncurses curses termcap terminfo termlib; do
- as_ac_Lib=`echo "ac_cv_lib_${termlib}''_tgetent" | $as_tr_sh`
-echo "$as_me:7089: checking for tgetent in -l${termlib}" >&5
-echo $ECHO_N "checking for tgetent in -l${termlib}... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Lib+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
+echo "configure:4564: checking for tgetent in -l${termlib}" >&5
+ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-l${termlib} $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7097 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 4572 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7116: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7119: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7122: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7125: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Lib=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Lib=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7136: result: `eval echo '${'$as_ac_Lib'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
-if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ builtin and then its argument prototype would still apply. */
+char tgetent();
+
+int main() {
+tgetent()
+; return 0; }
+EOF
+if { (eval echo configure:4583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
TERMLIBS="-l${termlib}"; break
+else
+ echo "$ac_t""no" 1>&6
fi
done
- echo "$as_me:7143: checking for rl_callback_handler_install in -lreadline" >&5
-echo $ECHO_N "checking for rl_callback_handler_install in -lreadline... $ECHO_C" >&6
-if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
+echo "configure:4605: checking for rl_callback_handler_install in -lreadline" >&5
+ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lreadline $TERMLIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7151 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 4613 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char rl_callback_handler_install ();
-int
-main ()
-{
-rl_callback_handler_install ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7170: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7173: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7176: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7179: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_readline_rl_callback_handler_install=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_readline_rl_callback_handler_install=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7190: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5
-echo "${ECHO_T}$ac_cv_lib_readline_rl_callback_handler_install" >&6
-if test $ac_cv_lib_readline_rl_callback_handler_install = yes; then
+ builtin and then its argument prototype would still apply. */
+char rl_callback_handler_install();
+
+int main() {
+rl_callback_handler_install()
+; return 0; }
+EOF
+if { (eval echo configure:4624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
TERMLIBS="-lreadline $TERMLIBS"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_LIBREADLINE 1
EOF
break
else
- TERMLIBS=
+ echo "$ac_t""no" 1>&6
+TERMLIBS=
fi
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
no)
- echo "$as_me:7208: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
*)
- echo "$as_me:7212: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
# Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
# alternate readline path
@@ -7221,277 +4667,229 @@ echo "${ECHO_T}yes" >&6
LDFLAGS="-L$with_readline/lib $LDFLAGS"
CPPFLAGS="-I$with_readline/include $CPPFLAGS"
-for ac_header in readline.h history.h readline/readline.h
+ for ac_hdr in readline.h history.h readline/readline.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7227: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7233 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7237: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7243: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4675: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4680 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:7262: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in readline/history.h
+ for ac_hdr in readline/history.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7275: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7281 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7285: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7291: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4715: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4720 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4725: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:7310: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-for ac_header in readline.h readline/readline.h
+
+ for ac_hdr in readline.h readline/readline.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7323: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7329 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7333: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7339: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4756: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
+ cat > conftest.$ac_ext <<EOF
+#line 4761 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
else
- echo "$as_me: failed program was:" >&5
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:7358: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
EOF
-
+
for termlib in ncurses curses termcap terminfo termlib; do
- as_ac_Lib=`echo "ac_cv_lib_${termlib}''_tgetent" | $as_tr_sh`
-echo "$as_me:7367: checking for tgetent in -l${termlib}" >&5
-echo $ECHO_N "checking for tgetent in -l${termlib}... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Lib+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
+echo "configure:4789: checking for tgetent in -l${termlib}" >&5
+ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-l${termlib} $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7375 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 4797 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char tgetent ();
-int
-main ()
-{
-tgetent ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7394: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7397: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7400: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7403: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Lib=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Lib=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7414: result: `eval echo '${'$as_ac_Lib'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
-if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ builtin and then its argument prototype would still apply. */
+char tgetent();
+
+int main() {
+tgetent()
+; return 0; }
+EOF
+if { (eval echo configure:4808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
TERMLIBS="-l${termlib}"; break
+else
+ echo "$ac_t""no" 1>&6
fi
done
- echo "$as_me:7421: checking for rl_callback_handler_install in -lreadline" >&5
-echo $ECHO_N "checking for rl_callback_handler_install in -lreadline... $ECHO_C" >&6
-if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
+echo "configure:4830: checking for rl_callback_handler_install in -lreadline" >&5
+ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lreadline $TERMLIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7429 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 4838 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char rl_callback_handler_install ();
-int
-main ()
-{
-rl_callback_handler_install ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7448: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7451: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7454: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7457: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_readline_rl_callback_handler_install=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_readline_rl_callback_handler_install=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7468: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5
-echo "${ECHO_T}$ac_cv_lib_readline_rl_callback_handler_install" >&6
-if test $ac_cv_lib_readline_rl_callback_handler_install = yes; then
+ builtin and then its argument prototype would still apply. */
+char rl_callback_handler_install();
+
+int main() {
+rl_callback_handler_install()
+; return 0; }
+EOF
+if { (eval echo configure:4849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
TERMLDFLAGS="-L$with_readline/lib"
TERMCPPFLAGS="-I$with_readline/include"
CPPFLAGS="-I$with_readline/include $CPPFLAGS"
TERMLIBS="-lreadline $TERMLIBS"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_LIBREADLINE 1
EOF
break
else
- TERMLIBS= CPPFLAGS=$_cppflags
+ echo "$ac_t""no" 1>&6
+TERMLIBS= CPPFLAGS=$_cppflags
fi
+else
+ echo "$ac_t""no" 1>&6
fi
done
+
LDFLAGS=$_ldflags
;;
esac
else
- echo "$as_me:7491: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
-fi;
# The following test taken from the cvs sources
# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
@@ -7499,330 +4897,267 @@ fi;
# libsocket.so which has a bad implementation of gethostbyname (it
# only looks in /etc/hosts), so we only look for -lsocket if we need
# it.
-
for ac_func in connect
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:7506: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7512 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:4904: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4909 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7543: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7546: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7549: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7552: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7562: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:4932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
if test x"$ac_cv_func_connect" = x"no"; then
case "$LIBS" in
*-lnsl*) ;;
- *)
-echo "$as_me:7576: checking for printf in -lnsl_s" >&5
-echo $ECHO_N "checking for printf in -lnsl_s... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_s_printf+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for printf in -lnsl_s""... $ac_c" 1>&6
+echo "configure:4960: checking for printf in -lnsl_s" >&5
+ac_lib_var=`echo nsl_s'_'printf | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lnsl_s $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7584 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 4968 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char printf ();
-int
-main ()
-{
-printf ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7603: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7606: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7609: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7612: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_nsl_s_printf=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_nsl_s_printf=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7623: result: $ac_cv_lib_nsl_s_printf" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_s_printf" >&6
-if test $ac_cv_lib_nsl_s_printf = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBNSL_S 1
+ builtin and then its argument prototype would still apply. */
+char printf();
+
+int main() {
+printf()
+; return 0; }
+EOF
+if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo nsl_s | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lnsl_s $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
;;
esac
case "$LIBS" in
*-lnsl*) ;;
- *)
-echo "$as_me:7638: checking for printf in -lnsl" >&5
-echo $ECHO_N "checking for printf in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_printf+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for printf in -lnsl""... $ac_c" 1>&6
+echo "configure:5010: checking for printf in -lnsl" >&5
+ac_lib_var=`echo nsl'_'printf | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7646 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 5018 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char printf ();
-int
-main ()
-{
-printf ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7665: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7668: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7671: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7674: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_nsl_printf=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_nsl_printf=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7685: result: $ac_cv_lib_nsl_printf" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_printf" >&6
-if test $ac_cv_lib_nsl_printf = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBNSL 1
+ builtin and then its argument prototype would still apply. */
+char printf();
+
+int main() {
+printf()
+; return 0; }
+EOF
+if { (eval echo configure:5029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lnsl $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
;;
esac
case "$LIBS" in
*-lsocket*) ;;
- *)
-echo "$as_me:7700: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_connect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
+echo "configure:5060: checking for connect in -lsocket" >&5
+ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7708 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 5068 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char connect ();
-int
-main ()
-{
-connect ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7727: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7730: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7733: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7736: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_socket_connect=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_socket_connect=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7747: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
-if test $ac_cv_lib_socket_connect = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSOCKET 1
+ builtin and then its argument prototype would still apply. */
+char connect();
+
+int main() {
+connect()
+; return 0; }
+EOF
+if { (eval echo configure:5079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsocket $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
;;
esac
case "$LIBS" in
*-linet*) ;;
- *)
-echo "$as_me:7762: checking for connect in -linet" >&5
-echo $ECHO_N "checking for connect in -linet... $ECHO_C" >&6
-if test "${ac_cv_lib_inet_connect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for connect in -linet""... $ac_c" 1>&6
+echo "configure:5110: checking for connect in -linet" >&5
+ac_lib_var=`echo inet'_'connect | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-linet $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7770 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 5118 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char connect ();
-int
-main ()
-{
-connect ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7789: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7792: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7795: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7798: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_inet_connect=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_inet_connect=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7809: result: $ac_cv_lib_inet_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_inet_connect" >&6
-if test $ac_cv_lib_inet_connect = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBINET 1
+ builtin and then its argument prototype would still apply. */
+char connect();
+
+int main() {
+connect()
+; return 0; }
+EOF
+if { (eval echo configure:5129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo inet | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-linet $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
;;
esac
- if test x"$ac_cv_lib_socket_connect" = x"yes" ||
+ if test x"$ac_cv_lib_socket_connect" = x"yes" ||
test x"$ac_cv_lib_inet_connect" = x"yes"; then
# ac_cv_func_connect=yes
# don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_CONNECT 1
EOF
@@ -7831,204 +5166,161 @@ fi
###############################################
# test for where we get get_yp_default_domain() from
-
for ac_func in yp_get_default_domain
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:7838: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7844 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5173: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5178 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7875: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7878: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7881: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7884: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7894: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
- echo "$as_me:7905: checking for yp_get_default_domain in -lnsl" >&5
-echo $ECHO_N "checking for yp_get_default_domain in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_yp_get_default_domain+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for yp_get_default_domain in -lnsl""... $ac_c" 1>&6
+echo "configure:5227: checking for yp_get_default_domain in -lnsl" >&5
+ac_lib_var=`echo nsl'_'yp_get_default_domain | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7913 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 5235 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char yp_get_default_domain ();
-int
-main ()
-{
-yp_get_default_domain ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7932: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7935: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7938: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7941: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_nsl_yp_get_default_domain=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_nsl_yp_get_default_domain=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7952: result: $ac_cv_lib_nsl_yp_get_default_domain" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_yp_get_default_domain" >&6
-if test $ac_cv_lib_nsl_yp_get_default_domain = yes; then
+ builtin and then its argument prototype would still apply. */
+char yp_get_default_domain();
+
+int main() {
+yp_get_default_domain()
+; return 0; }
+EOF
+if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -lnsl";
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_YP_GET_DEFAULT_DOMAIN 1
EOF
+else
+ echo "$ac_t""no" 1>&6
fi
-
+
fi
# Check if we have execl, if not we need to compile smbrun.
-
for ac_func in execl
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:7969: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7975 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5276: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5281 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8006: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8009: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8012: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8015: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8025: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -8038,1742 +5330,1394 @@ else
RUNPROG=""
fi
-for ac_func in dlopen dlclose dlsym dlerror waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot link
+for ac_func in dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8044: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8050 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5337: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5342 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8081: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8084: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8087: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8090: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8100: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8113: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8119 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5392: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5397 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8150: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8153: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8156: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8159: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8169: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8182: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8188 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5447: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5452 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8219: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8222: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8225: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8228: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8238: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8251: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8257 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5502: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5507 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8288: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8291: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8294: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8297: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8307: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf realpath
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8320: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8326 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5557: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5562 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8357: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8360: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8363: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8366: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8376: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8389: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5612: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8395 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 5617 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8426: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8429: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8432: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8435: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8445: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8458: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8464 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5667: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5672 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8495: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8498: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8501: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8504: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8514: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8527: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8533 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5722: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5727 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8564: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8567: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8570: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8573: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8583: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8596: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5777: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8602 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 5782 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8633: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8636: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8639: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8642: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8652: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in syslog vsyslog
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8665: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8671 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5832: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5837 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8702: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8705: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8708: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8711: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8721: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-# syscall() is needed for smbwrapper.
+# syscall() is needed for smbwrapper.
for ac_func in syscall
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8736: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8742 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5889: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5894 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8773: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8776: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8779: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8782: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8792: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
+
for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8805: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8811 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5945: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5950 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8842: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8845: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8848: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8851: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8861: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:5973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8874: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8880 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6000: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6005 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8911: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8914: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8917: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8920: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8930: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in __getcwd _getcwd
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8943: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8949 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6055: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6060 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8980: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8983: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8986: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8989: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8999: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in __xstat __fxstat __lxstat
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9012: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9018 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6110: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6115 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9049: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9052: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9055: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9058: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9068: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in _stat _lstat _fstat __stat __lstat __fstat
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9081: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9087 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6165: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6170 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9118: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9121: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9124: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9127: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9137: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9150: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9156 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6220: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6225 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9187: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9190: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9193: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9196: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9206: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9219: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9225 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6275: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6280 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9256: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9259: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9262: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9265: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9275: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in getdents _getdents __getdents _lseek __lseek _read __read
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9288: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9294 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6330: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6335 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9325: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9328: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9331: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9334: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9344: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in _write __write _fork __fork
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9357: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9363 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6385: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6390 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9394: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9397: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9400: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9403: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9413: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9426: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9432 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6440: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6445 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9463: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9466: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9469: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9472: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9482: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9495: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9501 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6495: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6500 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9532: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9535: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9538: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9541: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9551: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in pread _pread __pread pread64 _pread64 __pread64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9564: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9570 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6550: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6555 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9601: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9604: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9607: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9610: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9620: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9633: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9639 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6605: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6610 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9670: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9673: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9676: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9679: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9689: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
for ac_func in open64 _open64 __open64 creat64
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9702: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9708 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6660: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6665 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9739: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9742: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9745: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9748: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9758: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
+
#
# stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
#
if test x$ac_cv_func_stat64 = xno ; then
- echo "$as_me:9773: checking for stat64 in <sys/stat.h>" >&5
-echo $ECHO_N "checking for stat64 in <sys/stat.h>... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 9776 "configure"
+ echo $ac_n "checking for stat64 in <sys/stat.h>""... $ac_c" 1>&6
+echo "configure:6719: checking for stat64 in <sys/stat.h>" >&5
+ cat > conftest.$ac_ext <<EOF
+#line 6721 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9781,36 +6725,21 @@ echo $ECHO_N "checking for stat64 in <sys/stat.h>... $ECHO_C" >&6
#endif
#include <sys/stat.h>
-int
-main ()
-{
+int main() {
struct stat64 st64; exit(stat64(".",&st64));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9793: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9796: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9799: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9802: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:6733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
ac_cv_func_stat64=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:9810: result: $ac_cv_func_stat64" >&5
-echo "${ECHO_T}$ac_cv_func_stat64" >&6
+rm -f conftest*
+ echo "$ac_t""$ac_cv_func_stat64" 1>&6
if test x$ac_cv_func_stat64 = xyes ; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_STAT64 1
EOF
@@ -9818,10 +6747,10 @@ EOF
fi
if test x$ac_cv_func_lstat64 = xno ; then
- echo "$as_me:9821: checking for lstat64 in <sys/stat.h>" >&5
-echo $ECHO_N "checking for lstat64 in <sys/stat.h>... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 9824 "configure"
+ echo $ac_n "checking for lstat64 in <sys/stat.h>""... $ac_c" 1>&6
+echo "configure:6752: checking for lstat64 in <sys/stat.h>" >&5
+ cat > conftest.$ac_ext <<EOF
+#line 6754 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9829,36 +6758,21 @@ echo $ECHO_N "checking for lstat64 in <sys/stat.h>... $ECHO_C" >&6
#endif
#include <sys/stat.h>
-int
-main ()
-{
+int main() {
struct stat64 st64; exit(lstat64(".",&st64));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9841: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9844: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9847: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9850: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:6766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
ac_cv_func_lstat64=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:9858: result: $ac_cv_func_lstat64" >&5
-echo "${ECHO_T}$ac_cv_func_lstat64" >&6
+rm -f conftest*
+ echo "$ac_t""$ac_cv_func_lstat64" 1>&6
if test x$ac_cv_func_lstat64 = xyes ; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_LSTAT64 1
EOF
@@ -9866,10 +6780,10 @@ EOF
fi
if test x$ac_cv_func_fstat64 = xno ; then
- echo "$as_me:9869: checking for fstat64 in <sys/stat.h>" >&5
-echo $ECHO_N "checking for fstat64 in <sys/stat.h>... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 9872 "configure"
+ echo $ac_n "checking for fstat64 in <sys/stat.h>""... $ac_c" 1>&6
+echo "configure:6785: checking for fstat64 in <sys/stat.h>" >&5
+ cat > conftest.$ac_ext <<EOF
+#line 6787 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9877,36 +6791,21 @@ echo $ECHO_N "checking for fstat64 in <sys/stat.h>... $ECHO_C" >&6
#endif
#include <sys/stat.h>
-int
-main ()
-{
+int main() {
struct stat64 st64; exit(fstat64(0,&st64));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9889: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9892: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9895: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9898: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:6799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
ac_cv_func_fstat64=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:9906: result: $ac_cv_func_fstat64" >&5
-echo "${ECHO_T}$ac_cv_func_fstat64" >&6
+rm -f conftest*
+ echo "$ac_t""$ac_cv_func_fstat64" 1>&6
if test x$ac_cv_func_fstat64 = xyes ; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_FSTAT64 1
EOF
@@ -9920,61 +6819,48 @@ fi
#
if test x$ac_cv_func_strcasecmp = xno ; then
- echo "$as_me:9923: checking for strcasecmp in -lresolv" >&5
-echo $ECHO_N "checking for strcasecmp in -lresolv... $ECHO_C" >&6
-if test "${ac_cv_lib_resolv_strcasecmp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for strcasecmp in -lresolv""... $ac_c" 1>&6
+echo "configure:6824: checking for strcasecmp in -lresolv" >&5
+ac_lib_var=`echo resolv'_'strcasecmp | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 9931 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 6832 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char strcasecmp ();
-int
-main ()
-{
-strcasecmp ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9950: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9953: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9956: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9959: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_resolv_strcasecmp=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_resolv_strcasecmp=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:9970: result: $ac_cv_lib_resolv_strcasecmp" >&5
-echo "${ECHO_T}$ac_cv_lib_resolv_strcasecmp" >&6
-if test $ac_cv_lib_resolv_strcasecmp = yes; then
+ builtin and then its argument prototype would still apply. */
+char strcasecmp();
+
+int main() {
+strcasecmp()
+; return 0; }
+EOF
+if { (eval echo configure:6843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -lresolv"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_STRCASECMP 1
EOF
+else
+ echo "$ac_t""no" 1>&6
fi
fi
@@ -9986,201 +6872,160 @@ fi
#
case "$LIBS" in
- *-lsecurity*)
-for ac_func in putprpwnam
+ *-lsecurity*) for ac_func in putprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:9993: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 9999 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6879: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6884 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10030: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10033: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10036: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10039: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10049: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:6907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:10060: checking for putprpwnam in -lsecurity" >&5
-echo $ECHO_N "checking for putprpwnam in -lsecurity... $ECHO_C" >&6
-if test "${ac_cv_lib_security_putprpwnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for putprpwnam in -lsecurity""... $ac_c" 1>&6
+echo "configure:6932: checking for putprpwnam in -lsecurity" >&5
+ac_lib_var=`echo security'_'putprpwnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 10068 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 6940 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char putprpwnam ();
-int
-main ()
-{
-putprpwnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10087: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10090: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10093: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10096: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_security_putprpwnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_security_putprpwnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:10107: result: $ac_cv_lib_security_putprpwnam" >&5
-echo "${ECHO_T}$ac_cv_lib_security_putprpwnam" >&6
-if test $ac_cv_lib_security_putprpwnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSECURITY 1
+ builtin and then its argument prototype would still apply. */
+char putprpwnam();
+
+int main() {
+putprpwnam()
+; return 0; }
+EOF
+if { (eval echo configure:6951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo security | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsecurity $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in putprpwnam
+
+ for ac_func in putprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10121: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10127 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:6981: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 6986 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10158: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10161: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10164: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10167: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10177: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -10188,403 +7033,322 @@ done
esac
case "$LIBS" in
- *-lsec*)
-for ac_func in putprpwnam
+ *-lsec*) for ac_func in putprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10195: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10201 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7040: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7045 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10232: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10235: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10238: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10241: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10251: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:10262: checking for putprpwnam in -lsec" >&5
-echo $ECHO_N "checking for putprpwnam in -lsec... $ECHO_C" >&6
-if test "${ac_cv_lib_sec_putprpwnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for putprpwnam in -lsec""... $ac_c" 1>&6
+echo "configure:7093: checking for putprpwnam in -lsec" >&5
+ac_lib_var=`echo sec'_'putprpwnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 10270 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7101 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char putprpwnam ();
-int
-main ()
-{
-putprpwnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10289: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10292: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10295: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10298: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_sec_putprpwnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_sec_putprpwnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:10309: result: $ac_cv_lib_sec_putprpwnam" >&5
-echo "${ECHO_T}$ac_cv_lib_sec_putprpwnam" >&6
-if test $ac_cv_lib_sec_putprpwnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSEC 1
+ builtin and then its argument prototype would still apply. */
+char putprpwnam();
+
+int main() {
+putprpwnam()
+; return 0; }
+EOF
+if { (eval echo configure:7112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo sec | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsec $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in putprpwnam
+
+ for ac_func in putprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10323: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10329 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7142: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7147 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10360: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10363: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10366: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10369: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10379: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
case "$LIBS" in
- *-lsecurity*)
-for ac_func in set_auth_parameters
+ *-lsecurity*) for ac_func in set_auth_parameters
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10397: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10403 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7202: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7207 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10434: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10437: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10440: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10443: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10453: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:10464: checking for set_auth_parameters in -lsecurity" >&5
-echo $ECHO_N "checking for set_auth_parameters in -lsecurity... $ECHO_C" >&6
-if test "${ac_cv_lib_security_set_auth_parameters+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for set_auth_parameters in -lsecurity""... $ac_c" 1>&6
+echo "configure:7255: checking for set_auth_parameters in -lsecurity" >&5
+ac_lib_var=`echo security'_'set_auth_parameters | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 10472 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7263 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char set_auth_parameters ();
-int
-main ()
-{
-set_auth_parameters ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10491: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10494: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10497: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10500: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_security_set_auth_parameters=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_security_set_auth_parameters=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:10511: result: $ac_cv_lib_security_set_auth_parameters" >&5
-echo "${ECHO_T}$ac_cv_lib_security_set_auth_parameters" >&6
-if test $ac_cv_lib_security_set_auth_parameters = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSECURITY 1
+ builtin and then its argument prototype would still apply. */
+char set_auth_parameters();
+
+int main() {
+set_auth_parameters()
+; return 0; }
+EOF
+if { (eval echo configure:7274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo security | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsecurity $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in set_auth_parameters
+
+ for ac_func in set_auth_parameters
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10525: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10531 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7304: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7309 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10562: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10565: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10568: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10571: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10581: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -10592,606 +7356,485 @@ done
esac
case "$LIBS" in
- *-lsec*)
-for ac_func in set_auth_parameters
+ *-lsec*) for ac_func in set_auth_parameters
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10599: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10605 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7363: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7368 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10636: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10639: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10642: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10645: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10655: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:10666: checking for set_auth_parameters in -lsec" >&5
-echo $ECHO_N "checking for set_auth_parameters in -lsec... $ECHO_C" >&6
-if test "${ac_cv_lib_sec_set_auth_parameters+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for set_auth_parameters in -lsec""... $ac_c" 1>&6
+echo "configure:7416: checking for set_auth_parameters in -lsec" >&5
+ac_lib_var=`echo sec'_'set_auth_parameters | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 10674 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7424 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char set_auth_parameters ();
-int
-main ()
-{
-set_auth_parameters ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10693: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10696: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10699: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10702: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_sec_set_auth_parameters=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_sec_set_auth_parameters=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:10713: result: $ac_cv_lib_sec_set_auth_parameters" >&5
-echo "${ECHO_T}$ac_cv_lib_sec_set_auth_parameters" >&6
-if test $ac_cv_lib_sec_set_auth_parameters = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSEC 1
+ builtin and then its argument prototype would still apply. */
+char set_auth_parameters();
+
+int main() {
+set_auth_parameters()
+; return 0; }
+EOF
+if { (eval echo configure:7435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo sec | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsec $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in set_auth_parameters
+
+ for ac_func in set_auth_parameters
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10727: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10733 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7465: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7470 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10764: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10767: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10770: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10773: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10783: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
# UnixWare 7.x has its getspnam in -lgen
case "$LIBS" in
- *-lgen*)
-for ac_func in getspnam
+ *-lgen*) for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10802: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10808 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7526: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7531 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10839: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10842: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10845: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10848: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10858: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:10869: checking for getspnam in -lgen" >&5
-echo $ECHO_N "checking for getspnam in -lgen... $ECHO_C" >&6
-if test "${ac_cv_lib_gen_getspnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6
+echo "configure:7579: checking for getspnam in -lgen" >&5
+ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 10877 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7587 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char getspnam ();
-int
-main ()
-{
-getspnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10896: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10899: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10902: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10905: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_gen_getspnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_gen_getspnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:10916: result: $ac_cv_lib_gen_getspnam" >&5
-echo "${ECHO_T}$ac_cv_lib_gen_getspnam" >&6
-if test $ac_cv_lib_gen_getspnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBGEN 1
+ builtin and then its argument prototype would still apply. */
+char getspnam();
+
+int main() {
+getspnam()
+; return 0; }
+EOF
+if { (eval echo configure:7598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo gen | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lgen $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in getspnam
+
+ for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10930: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 10936 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7628: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7633 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10967: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:10970: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10973: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10976: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:10986: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
case "$LIBS" in
- *-lsecurity*)
-for ac_func in getspnam
+ *-lsecurity*) for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11004: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11010 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7688: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7693 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11041: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11044: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11047: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11050: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11060: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:11071: checking for getspnam in -lsecurity" >&5
-echo $ECHO_N "checking for getspnam in -lsecurity... $ECHO_C" >&6
-if test "${ac_cv_lib_security_getspnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for getspnam in -lsecurity""... $ac_c" 1>&6
+echo "configure:7741: checking for getspnam in -lsecurity" >&5
+ac_lib_var=`echo security'_'getspnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 11079 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7749 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char getspnam ();
-int
-main ()
-{
-getspnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11098: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11101: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11104: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11107: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_security_getspnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_security_getspnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:11118: result: $ac_cv_lib_security_getspnam" >&5
-echo "${ECHO_T}$ac_cv_lib_security_getspnam" >&6
-if test $ac_cv_lib_security_getspnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSECURITY 1
+ builtin and then its argument prototype would still apply. */
+char getspnam();
+
+int main() {
+getspnam()
+; return 0; }
+EOF
+if { (eval echo configure:7760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo security | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsecurity $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in getspnam
+
+ for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11132: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11138 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7790: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7795 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11169: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11172: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11175: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11178: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11188: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -11199,403 +7842,322 @@ done
esac
case "$LIBS" in
- *-lsec*)
-for ac_func in getspnam
+ *-lsec*) for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11206: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11212 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7849: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7854 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11243: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11246: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11249: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11252: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11262: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:11273: checking for getspnam in -lsec" >&5
-echo $ECHO_N "checking for getspnam in -lsec... $ECHO_C" >&6
-if test "${ac_cv_lib_sec_getspnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for getspnam in -lsec""... $ac_c" 1>&6
+echo "configure:7902: checking for getspnam in -lsec" >&5
+ac_lib_var=`echo sec'_'getspnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 11281 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 7910 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char getspnam ();
-int
-main ()
-{
-getspnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11300: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11303: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11306: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11309: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_sec_getspnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_sec_getspnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:11320: result: $ac_cv_lib_sec_getspnam" >&5
-echo "${ECHO_T}$ac_cv_lib_sec_getspnam" >&6
-if test $ac_cv_lib_sec_getspnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSEC 1
+ builtin and then its argument prototype would still apply. */
+char getspnam();
+
+int main() {
+getspnam()
+; return 0; }
+EOF
+if { (eval echo configure:7921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo sec | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsec $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in getspnam
+
+ for ac_func in getspnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11334: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11340 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:7951: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7956 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11371: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11374: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11377: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11380: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11390: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:7979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
case "$LIBS" in
- *-lsecurity*)
-for ac_func in bigcrypt
+ *-lsecurity*) for ac_func in bigcrypt
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11408: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11414 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8011: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8016 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11445: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11448: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11451: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11454: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11464: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:11475: checking for bigcrypt in -lsecurity" >&5
-echo $ECHO_N "checking for bigcrypt in -lsecurity... $ECHO_C" >&6
-if test "${ac_cv_lib_security_bigcrypt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for bigcrypt in -lsecurity""... $ac_c" 1>&6
+echo "configure:8064: checking for bigcrypt in -lsecurity" >&5
+ac_lib_var=`echo security'_'bigcrypt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 11483 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 8072 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char bigcrypt ();
-int
-main ()
-{
-bigcrypt ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11502: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11505: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11508: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11511: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_security_bigcrypt=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_security_bigcrypt=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:11522: result: $ac_cv_lib_security_bigcrypt" >&5
-echo "${ECHO_T}$ac_cv_lib_security_bigcrypt" >&6
-if test $ac_cv_lib_security_bigcrypt = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSECURITY 1
+ builtin and then its argument prototype would still apply. */
+char bigcrypt();
+
+int main() {
+bigcrypt()
+; return 0; }
+EOF
+if { (eval echo configure:8083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo security | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsecurity $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in bigcrypt
+
+ for ac_func in bigcrypt
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11536: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11542 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8113: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8118 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11573: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11576: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11579: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11582: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11592: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -11603,403 +8165,322 @@ done
esac
case "$LIBS" in
- *-lsec*)
-for ac_func in bigcrypt
+ *-lsec*) for ac_func in bigcrypt
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11610: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11616 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8172: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8177 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11647: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11650: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11653: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11656: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11666: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:11677: checking for bigcrypt in -lsec" >&5
-echo $ECHO_N "checking for bigcrypt in -lsec... $ECHO_C" >&6
-if test "${ac_cv_lib_sec_bigcrypt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6
+echo "configure:8225: checking for bigcrypt in -lsec" >&5
+ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 11685 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 8233 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char bigcrypt ();
-int
-main ()
-{
-bigcrypt ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11704: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11707: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11710: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11713: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_sec_bigcrypt=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_sec_bigcrypt=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:11724: result: $ac_cv_lib_sec_bigcrypt" >&5
-echo "${ECHO_T}$ac_cv_lib_sec_bigcrypt" >&6
-if test $ac_cv_lib_sec_bigcrypt = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSEC 1
+ builtin and then its argument prototype would still apply. */
+char bigcrypt();
+
+int main() {
+bigcrypt()
+; return 0; }
+EOF
+if { (eval echo configure:8244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo sec | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsec $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in bigcrypt
+
+ for ac_func in bigcrypt
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11738: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11744 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8274: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8279 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11775: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11778: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11781: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11784: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11794: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
case "$LIBS" in
- *-lsecurity*)
-for ac_func in getprpwnam
+ *-lsecurity*) for ac_func in getprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11812: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11818 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8334: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8339 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11849: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11852: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11855: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11858: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11868: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:11879: checking for getprpwnam in -lsecurity" >&5
-echo $ECHO_N "checking for getprpwnam in -lsecurity... $ECHO_C" >&6
-if test "${ac_cv_lib_security_getprpwnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6
+echo "configure:8387: checking for getprpwnam in -lsecurity" >&5
+ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 11887 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 8395 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char getprpwnam ();
-int
-main ()
-{
-getprpwnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11906: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11909: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11912: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11915: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_security_getprpwnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_security_getprpwnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:11926: result: $ac_cv_lib_security_getprpwnam" >&5
-echo "${ECHO_T}$ac_cv_lib_security_getprpwnam" >&6
-if test $ac_cv_lib_security_getprpwnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSECURITY 1
+ builtin and then its argument prototype would still apply. */
+char getprpwnam();
+
+int main() {
+getprpwnam()
+; return 0; }
+EOF
+if { (eval echo configure:8406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo security | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsecurity $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in getprpwnam
+
+ for ac_func in getprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:11940: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11946 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8436: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8441 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11977: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11980: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11983: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11986: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:11996: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
@@ -12007,207 +8488,167 @@ done
esac
case "$LIBS" in
- *-lsec*)
-for ac_func in getprpwnam
+ *-lsec*) for ac_func in getprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12014: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12020 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8495: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8500 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12051: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12054: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12057: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12060: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:12070: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
- *)
-echo "$as_me:12081: checking for getprpwnam in -lsec" >&5
-echo $ECHO_N "checking for getprpwnam in -lsec... $ECHO_C" >&6
-if test "${ac_cv_lib_sec_getprpwnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ *) echo $ac_n "checking for getprpwnam in -lsec""... $ac_c" 1>&6
+echo "configure:8548: checking for getprpwnam in -lsec" >&5
+ac_lib_var=`echo sec'_'getprpwnam | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 12089 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 8556 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char getprpwnam ();
-int
-main ()
-{
-getprpwnam ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12108: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12111: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12114: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12117: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_sec_getprpwnam=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_sec_getprpwnam=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:12128: result: $ac_cv_lib_sec_getprpwnam" >&5
-echo "${ECHO_T}$ac_cv_lib_sec_getprpwnam" >&6
-if test $ac_cv_lib_sec_getprpwnam = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBSEC 1
+ builtin and then its argument prototype would still apply. */
+char getprpwnam();
+
+int main() {
+getprpwnam()
+; return 0; }
+EOF
+if { (eval echo configure:8567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo sec | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lsec $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
-
-for ac_func in getprpwnam
+
+ for ac_func in getprpwnam
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12142: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12148 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:8597: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 8602 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12179: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12182: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12185: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12188: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:12198: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:8625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
;;
esac
+
# this bit needs to be modified for each OS that is suported by
# smbwrapper. You need to specify how to created a shared library and
# how to compile C code to produce PIC object files
@@ -12216,18 +8657,18 @@ done
HOST_OS="$host_os"
LDSHFLAGS="-shared"
SONAMEFLAG="#"
-SHLD="\${CC}"
+SHLD="\${CC}"
PICFLAG=""
PICSUFFIX="po.o"
SHLIBEXT="so"
# Assume non-shared by default and override below
-BLDSHARED="false"
-echo "$as_me:12225: checking ability to build shared libraries" >&5
-echo $ECHO_N "checking ability to build shared libraries... $ECHO_C" >&6
+BLDSHARED="false"
+echo $ac_n "checking ability to build shared libraries""... $ac_c" 1>&6
+echo "configure:8668: checking ability to build shared libraries" >&5
# and these are for particular systems
case "$host_os" in
- *linux*) cat >>confdefs.h <<\EOF
+ *linux*) cat >> confdefs.h <<\EOF
#define LINUX 1
EOF
@@ -12236,31 +8677,37 @@ EOF
DYNEXP="-Wl,--export-dynamic"
PICFLAG="-fPIC"
SONAMEFLAG="-Wl,-soname="
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE 512
EOF
;;
- *solaris*) cat >>confdefs.h <<\EOF
+ *solaris*) cat >> confdefs.h <<\EOF
#define SUNOS5 1
EOF
BLDSHARED="true"
LDSHFLAGS="-G"
SONAMEFLAG="-h "
- if test "${ac_cv_prog_CC}" = "gcc"; then
+ if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
+ if test "${ac_cv_prog_gnu_ld}" = "yes"; then
+ DYNEXP="-Wl,-E"
+ fi
else
PICFLAG="-KPIC"
+ ## ${CFLAGS} added for building 64-bit shared
+ ## libs using Sun's Compiler
+ LDSHFLAGS="-G \${CFLAGS}"
POBAD_CC=""
PICSUFFIX="po.o"
fi
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE 512
EOF
;;
- *sunos*) cat >>confdefs.h <<\EOF
+ *sunos*) cat >> confdefs.h <<\EOF
#define SUNOS4 1
EOF
@@ -12271,19 +8718,20 @@ EOF
;;
*bsd*) BLDSHARED="true"
LDSHFLAGS="-shared"
+ DYNEXP="-Wl,-Bdynamic"
SONAMEFLAG="-Wl,-soname,"
PICFLAG="-fPIC"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE 512
EOF
;;
- *irix*) cat >>confdefs.h <<\EOF
+ *irix*) cat >> confdefs.h <<\EOF
#define IRIX 1
EOF
case "$host_os" in
- *irix6*) cat >>confdefs.h <<\EOF
+ *irix6*) cat >> confdefs.h <<\EOF
#define IRIX6 1
EOF
@@ -12293,30 +8741,38 @@ EOF
BLDSHARED="true"
LDSHFLAGS="-set_version sgi1.0 -shared"
SONAMEFLAG="-soname "
- SHLD="\${LD}"
- if test "${ac_cv_prog_CC}" = "gcc"; then
+ SHLD="\${LD}"
+ if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
- else
+ else
PICFLAG="-KPIC"
fi
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE 512
EOF
;;
- *aix*) cat >>confdefs.h <<\EOF
+ *aix*) cat >> confdefs.h <<\EOF
#define AIX 1
EOF
BLDSHARED="true"
LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
- PICFLAG="-O2 -qmaxmem=6000"
- cat >>confdefs.h <<\EOF
+ DYNEXP="-Wl,-brtl,-bexpall"
+ if test "${GCC}" = "yes"; then
+ PICFLAG="-O2"
+ else
+ PICFLAG="-O2 -qmaxmem=6000"
+ ## for funky AIX compiler using strncpy()
+ CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
+ fi
+
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE DEV_BSIZE
EOF
;;
- *hpux*) cat >>confdefs.h <<\EOF
+ *hpux*) cat >> confdefs.h <<\EOF
#define HPUX 1
EOF
@@ -12330,16 +8786,16 @@ EOF
PICFLAG="+z"
fi
DYNEXP="-Wl,-E"
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_ST_BLOCKSIZE 8192
EOF
;;
- *qnx*) cat >>confdefs.h <<\EOF
+ *qnx*) cat >> confdefs.h <<\EOF
#define QNX 1
EOF
;;
- *osf*) cat >>confdefs.h <<\EOF
+ *osf*) cat >> confdefs.h <<\EOF
#define OSF1 1
EOF
@@ -12348,11 +8804,11 @@ EOF
SONAMEFLAG="-Wl,-soname,"
PICFLAG="-fPIC"
;;
- *sco*) cat >>confdefs.h <<\EOF
+ *sco*) cat >> confdefs.h <<\EOF
#define SCO 1
EOF
;;
- *unixware*) cat >>confdefs.h <<\EOF
+ *unixware*) cat >> confdefs.h <<\EOF
#define UNIXWARE 1
EOF
@@ -12361,46 +8817,43 @@ EOF
SONAMEFLAG="-Wl,-soname,"
PICFLAG="-KPIC"
;;
- *next2*) cat >>confdefs.h <<\EOF
+ *next2*) cat >> confdefs.h <<\EOF
#define NEXT2 1
EOF
;;
*dgux*) # Extract the first word of "groff", so it can be a program name with args.
set dummy groff; ac_word=$2
-echo "$as_me:12370: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ROFF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:8828: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_ROFF'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$ROFF"; then
ac_cv_prog_ROFF="$ROFF" # Let the user override the test.
else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ROFF="groff -etpsR -Tascii -man"
-echo "$as_me:12385: found $ac_dir/$ac_word" >&5
-break
-done
-
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_ROFF="groff -etpsR -Tascii -man"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
fi
fi
-ROFF=$ac_cv_prog_ROFF
+ROFF="$ac_cv_prog_ROFF"
if test -n "$ROFF"; then
- echo "$as_me:12393: result: $ROFF" >&5
-echo "${ECHO_T}$ROFF" >&6
+ echo "$ac_t""$ROFF" 1>&6
else
- echo "$as_me:12396: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
;;
*sysv4*)
case "$host" in
*-univel-*) if test "$GCC" != yes ; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_MEMSET 1
EOF
@@ -12408,7 +8861,7 @@ EOF
LDSHFLAGS="-G"
DYNEXP="-Bexport"
;;
- *mips-sni-sysv4*) cat >>confdefs.h <<\EOF
+ *mips-sni-sysv4*) cat >> confdefs.h <<\EOF
#define RELIANTUNIX 1
EOF
;;
@@ -12416,7 +8869,7 @@ EOF
;;
*sysv5*)
if test "$GCC" != yes ; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_MEMSET 1
EOF
@@ -12425,23 +8878,20 @@ EOF
;;
esac
-echo "$as_me:12428: result: $BLDSHARED" >&5
-echo "${ECHO_T}$BLDSHARED" >&6
-echo "$as_me:12430: checking linker flags for shared libraries" >&5
-echo $ECHO_N "checking linker flags for shared libraries... $ECHO_C" >&6
-echo "$as_me:12432: result: $LDSHFLAGS" >&5
-echo "${ECHO_T}$LDSHFLAGS" >&6
-echo "$as_me:12434: checking compiler flags for position-independent code" >&5
-echo $ECHO_N "checking compiler flags for position-independent code... $ECHO_C" >&6
-echo "$as_me:12436: result: $PICFLAGS" >&5
-echo "${ECHO_T}$PICFLAGS" >&6
+echo "$ac_t""$BLDSHARED" 1>&6
+echo $ac_n "checking linker flags for shared libraries""... $ac_c" 1>&6
+echo "configure:8884: checking linker flags for shared libraries" >&5
+echo "$ac_t""$LDSHFLAGS" 1>&6
+echo $ac_n "checking compiler flags for position-independent code""... $ac_c" 1>&6
+echo "configure:8887: checking compiler flags for position-independent code" >&5
+echo "$ac_t""$PICFLAGS" 1>&6
# try to work out how to produce pic code with this compiler
if test x$PICFLAG = x; then
- echo "$as_me:12441: checking whether ${CC-cc} accepts -fpic" >&5
-echo $ECHO_N "checking whether ${CC-cc} accepts -fpic... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_fpic+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking whether ${CC-cc} accepts -fpic""... $ac_c" 1>&6
+echo "configure:8893: checking whether ${CC-cc} accepts -fpic" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_fpic'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -fpic -c conftest.c 2>&1`"; then
@@ -12452,17 +8902,17 @@ fi
rm -f conftest*
fi
-echo "$as_me:12455: result: $ac_cv_prog_cc_fpic" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_fpic" >&6
+
+echo "$ac_t""$ac_cv_prog_cc_fpic" 1>&6
if test $ac_cv_prog_cc_fpic = yes; then
PICFLAG="-fpic";
fi
fi
if test x$PICFLAG = x; then
- echo "$as_me:12462: checking whether ${CC-cc} accepts -KPIC" >&5
-echo $ECHO_N "checking whether ${CC-cc} accepts -KPIC... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_KPIC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking whether ${CC-cc} accepts -KPIC""... $ac_c" 1>&6
+echo "configure:8914: checking whether ${CC-cc} accepts -KPIC" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_KPIC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -KPIC -c conftest.c 2>&1`"; then
@@ -12473,17 +8923,17 @@ fi
rm -f conftest*
fi
-echo "$as_me:12476: result: $ac_cv_prog_cc_KPIC" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_KPIC" >&6
+
+echo "$ac_t""$ac_cv_prog_cc_KPIC" 1>&6
if test $ac_cv_prog_cc_KPIC = yes; then
PICFLAG="-KPIC";
fi
fi
if test x$PICFLAG = x; then
- echo "$as_me:12483: checking whether ${CC-cc} accepts -Kpic" >&5
-echo $ECHO_N "checking whether ${CC-cc} accepts -Kpic... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_Kpic+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking whether ${CC-cc} accepts -Kpic""... $ac_c" 1>&6
+echo "configure:8935: checking whether ${CC-cc} accepts -Kpic" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_Kpic'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -Kpic -c conftest.c 2>&1`"; then
@@ -12494,8 +8944,8 @@ fi
rm -f conftest*
fi
-echo "$as_me:12497: result: $ac_cv_prog_cc_Kpic" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_Kpic" >&6
+
+echo "$ac_t""$ac_cv_prog_cc_Kpic" 1>&6
if test $ac_cv_prog_cc_Kpic = yes; then
PICFLAG="-Kpic";
fi
@@ -12503,46 +8953,38 @@ fi
################
-echo "$as_me:12506: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${samba_cv_have_longlong+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for long long""... $ac_c" 1>&6
+echo "configure:8958: checking for long long" >&5
+if eval "test \"`echo '$''{'samba_cv_have_longlong'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_have_longlong=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12516 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 8967 "configure"
#include "confdefs.h"
#include <stdio.h>
main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12522: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12525: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12527: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12530: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:8972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_have_longlong=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_have_longlong=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_have_longlong=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12542: result: $samba_cv_have_longlong" >&5
-echo "${ECHO_T}$samba_cv_have_longlong" >&6
+
+echo "$ac_t""$samba_cv_have_longlong" 1>&6
if test x"$samba_cv_have_longlong" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_LONGLONG 1
EOF
@@ -12552,110 +8994,90 @@ fi
# Check if the compiler supports the LL prefix on long long integers.
# AIX needs this.
-echo "$as_me:12555: checking for LL suffix on long long integers" >&5
-echo $ECHO_N "checking for LL suffix on long long integers... $ECHO_C" >&6
-if test "${samba_cv_compiler_supports_ll+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for LL suffix on long long integers""... $ac_c" 1>&6
+echo "configure:8999: checking for LL suffix on long long integers" >&5
+if eval "test \"`echo '$''{'samba_cv_compiler_supports_ll'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 12562 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 9005 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
long long i = 0x8000000000LL
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12574: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:12577: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12580: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12583: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_compiler_supports_ll=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_compiler_supports_ll=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_compiler_supports_ll=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:12593: result: $samba_cv_compiler_supports_ll" >&5
-echo "${ECHO_T}$samba_cv_compiler_supports_ll" >&6
+
+echo "$ac_t""$samba_cv_compiler_supports_ll" 1>&6
if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define COMPILER_SUPPORTS_LL 1
EOF
fi
-echo "$as_me:12602: checking for 64 bit off_t" >&5
-echo $ECHO_N "checking for 64 bit off_t... $ECHO_C" >&6
-if test "${samba_cv_SIZEOF_OFF_T+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+
+echo $ac_n "checking for 64 bit off_t""... $ac_c" 1>&6
+echo "configure:9034: checking for 64 bit off_t" >&5
+if eval "test \"`echo '$''{'samba_cv_SIZEOF_OFF_T'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_SIZEOF_OFF_T=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12612 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9043 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/stat.h>
main() { exit((sizeof(off_t) == 8) ? 0 : 1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12619: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12622: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12624: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12627: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_SIZEOF_OFF_T=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_SIZEOF_OFF_T=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_SIZEOF_OFF_T=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12639: result: $samba_cv_SIZEOF_OFF_T" >&5
-echo "${ECHO_T}$samba_cv_SIZEOF_OFF_T" >&6
+
+echo "$ac_t""$samba_cv_SIZEOF_OFF_T" 1>&6
if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define SIZEOF_OFF_T 8
EOF
fi
-echo "$as_me:12648: checking for off64_t" >&5
-echo $ECHO_N "checking for off64_t... $ECHO_C" >&6
-if test "${samba_cv_HAVE_OFF64_T+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for off64_t""... $ac_c" 1>&6
+echo "configure:9072: checking for off64_t" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_OFF64_T'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_OFF64_T=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12658 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9081 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12664,94 +9086,78 @@ else
#include <stdio.h>
#include <sys/stat.h>
main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12669: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12672: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12674: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12677: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_OFF64_T=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_OFF64_T=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_OFF64_T=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12689: result: $samba_cv_HAVE_OFF64_T" >&5
-echo "${ECHO_T}$samba_cv_HAVE_OFF64_T" >&6
+
+echo "$ac_t""$samba_cv_HAVE_OFF64_T" 1>&6
if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_OFF64_T 1
EOF
fi
-echo "$as_me:12698: checking for 64 bit ino_t" >&5
-echo $ECHO_N "checking for 64 bit ino_t... $ECHO_C" >&6
-if test "${samba_cv_SIZEOF_INO_T+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for 64 bit ino_t""... $ac_c" 1>&6
+echo "configure:9114: checking for 64 bit ino_t" >&5
+if eval "test \"`echo '$''{'samba_cv_SIZEOF_INO_T'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_SIZEOF_INO_T=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12708 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9123 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/stat.h>
main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12715: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12718: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12720: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12723: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_SIZEOF_INO_T=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_SIZEOF_INO_T=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_SIZEOF_INO_T=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12735: result: $samba_cv_SIZEOF_INO_T" >&5
-echo "${ECHO_T}$samba_cv_SIZEOF_INO_T" >&6
+
+echo "$ac_t""$samba_cv_SIZEOF_INO_T" 1>&6
if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define SIZEOF_INO_T 8
EOF
fi
-echo "$as_me:12744: checking for ino64_t" >&5
-echo $ECHO_N "checking for ino64_t... $ECHO_C" >&6
-if test "${samba_cv_HAVE_INO64_T+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ino64_t""... $ac_c" 1>&6
+echo "configure:9152: checking for ino64_t" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_INO64_T'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_INO64_T=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12754 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9161 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12760,48 +9166,40 @@ else
#include <stdio.h>
#include <sys/stat.h>
main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12765: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12768: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12770: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12773: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_INO64_T=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_INO64_T=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_INO64_T=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12785: result: $samba_cv_HAVE_INO64_T" >&5
-echo "${ECHO_T}$samba_cv_HAVE_INO64_T" >&6
+
+echo "$ac_t""$samba_cv_HAVE_INO64_T" 1>&6
if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_INO64_T 1
EOF
fi
-echo "$as_me:12794: checking for dev64_t" >&5
-echo $ECHO_N "checking for dev64_t... $ECHO_C" >&6
-if test "${samba_cv_HAVE_DEV64_T+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for dev64_t""... $ac_c" 1>&6
+echo "configure:9194: checking for dev64_t" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_DEV64_T'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEV64_T=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12804 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9203 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12810,45 +9208,37 @@ else
#include <stdio.h>
#include <sys/stat.h>
main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12815: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12818: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12820: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12823: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_DEV64_T=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_DEV64_T=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_DEV64_T=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12835: result: $samba_cv_HAVE_DEV64_T" >&5
-echo "${ECHO_T}$samba_cv_HAVE_DEV64_T" >&6
+
+echo "$ac_t""$samba_cv_HAVE_DEV64_T" 1>&6
if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_DEV64_T 1
EOF
fi
-echo "$as_me:12844: checking for struct dirent64" >&5
-echo $ECHO_N "checking for struct dirent64... $ECHO_C" >&6
-if test "${samba_cv_HAVE_STRUCT_DIRENT64+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6
+echo "configure:9236: checking for struct dirent64" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_DIRENT64'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 12851 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9242 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12856,54 +9246,41 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
#include <sys/types.h>
#include <dirent.h>
-int
-main ()
-{
+int main() {
struct dirent64 de;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12868: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:12871: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12874: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12877: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_STRUCT_DIRENT64=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_STRUCT_DIRENT64=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_STRUCT_DIRENT64=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:12887: result: $samba_cv_HAVE_STRUCT_DIRENT64" >&5
-echo "${ECHO_T}$samba_cv_HAVE_STRUCT_DIRENT64" >&6
-if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
- cat >>confdefs.h <<\EOF
+
+echo "$ac_t""$samba_cv_HAVE_STRUCT_DIRENT64" 1>&6
+if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
+ cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_DIRENT64 1
EOF
fi
-echo "$as_me:12896: checking for major macro" >&5
-echo $ECHO_N "checking for major macro... $ECHO_C" >&6
-if test "${samba_cv_HAVE_DEVICE_MAJOR_FN+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for major macro""... $ac_c" 1>&6
+echo "configure:9275: checking for major macro" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MAJOR_FN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEVICE_MAJOR_FN=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12906 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9284 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12911,48 +9288,40 @@ else
#endif
#include <sys/types.h>
main() { dev_t dev; int i = major(dev); return 0; }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12916: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12919: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12921: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12924: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_DEVICE_MAJOR_FN=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_DEVICE_MAJOR_FN=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_DEVICE_MAJOR_FN=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12936: result: $samba_cv_HAVE_DEVICE_MAJOR_FN" >&5
-echo "${ECHO_T}$samba_cv_HAVE_DEVICE_MAJOR_FN" >&6
+
+echo "$ac_t""$samba_cv_HAVE_DEVICE_MAJOR_FN" 1>&6
if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_DEVICE_MAJOR_FN 1
EOF
fi
-echo "$as_me:12945: checking for minor macro" >&5
-echo $ECHO_N "checking for minor macro... $ECHO_C" >&6
-if test "${samba_cv_HAVE_DEVICE_MINOR_FN+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for minor macro""... $ac_c" 1>&6
+echo "configure:9316: checking for minor macro" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MINOR_FN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEVICE_MINOR_FN=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 12955 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9325 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -12960,48 +9329,40 @@ else
#endif
#include <sys/types.h>
main() { dev_t dev; int i = minor(dev); return 0; }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12965: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:12968: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12970: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:12973: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_DEVICE_MINOR_FN=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_DEVICE_MINOR_FN=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_DEVICE_MINOR_FN=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:12985: result: $samba_cv_HAVE_DEVICE_MINOR_FN" >&5
-echo "${ECHO_T}$samba_cv_HAVE_DEVICE_MINOR_FN" >&6
+
+echo "$ac_t""$samba_cv_HAVE_DEVICE_MINOR_FN" 1>&6
if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_DEVICE_MINOR_FN 1
EOF
fi
-echo "$as_me:12994: checking for makedev macro" >&5
-echo $ECHO_N "checking for makedev macro... $ECHO_C" >&6
-if test "${samba_cv_HAVE_MAKEDEV_FN+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for makedev macro""... $ac_c" 1>&6
+echo "configure:9357: checking for makedev macro" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_MAKEDEV_FN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_MAKEDEV_FN=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13004 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9366 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -13009,332 +9370,291 @@ else
#endif
#include <sys/types.h>
main() { dev_t dev = makedev(1,2); return 0; }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13014: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13017: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13019: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13022: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_MAKEDEV_FN=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_MAKEDEV_FN=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_MAKEDEV_FN=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:13034: result: $samba_cv_HAVE_MAKEDEV_FN" >&5
-echo "${ECHO_T}$samba_cv_HAVE_MAKEDEV_FN" >&6
+
+echo "$ac_t""$samba_cv_HAVE_MAKEDEV_FN" 1>&6
if test x"$samba_cv_HAVE_MAKEDEV_FN" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define MAKEDEV_FN 1
EOF
fi
-echo "$as_me:13043: checking for unsigned char" >&5
-echo $ECHO_N "checking for unsigned char... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UNSIGNED_CHAR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for unsigned char""... $ac_c" 1>&6
+echo "configure:9398: checking for unsigned char" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UNSIGNED_CHAR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_UNSIGNED_CHAR=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13053 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9407 "configure"
#include "confdefs.h"
#include <stdio.h>
main() { char c; c=250; exit((c > 0)?0:1); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13059: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13062: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13064: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13067: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_UNSIGNED_CHAR=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UNSIGNED_CHAR=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_UNSIGNED_CHAR=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:13079: result: $samba_cv_HAVE_UNSIGNED_CHAR" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UNSIGNED_CHAR" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UNSIGNED_CHAR" 1>&6
if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UNSIGNED_CHAR 1
EOF
fi
-echo "$as_me:13088: checking for sin_len in sock" >&5
-echo $ECHO_N "checking for sin_len in sock... $ECHO_C" >&6
-if test "${samba_cv_HAVE_SOCK_SIN_LEN+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for sin_len in sock""... $ac_c" 1>&6
+echo "configure:9435: checking for sin_len in sock" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_SOCK_SIN_LEN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13095 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9441 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
-int
-main ()
-{
+int main() {
struct sockaddr_in sock; sock.sin_len = sizeof(sock);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13109: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13112: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13115: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13118: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_SOCK_SIN_LEN=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_SOCK_SIN_LEN=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_SOCK_SIN_LEN=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13128: result: $samba_cv_HAVE_SOCK_SIN_LEN" >&5
-echo "${ECHO_T}$samba_cv_HAVE_SOCK_SIN_LEN" >&6
+
+echo "$ac_t""$samba_cv_HAVE_SOCK_SIN_LEN" 1>&6
if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SOCK_SIN_LEN 1
EOF
fi
-echo "$as_me:13137: checking whether seekdir returns void" >&5
-echo $ECHO_N "checking whether seekdir returns void... $ECHO_C" >&6
-if test "${samba_cv_SEEKDIR_RETURNS_VOID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether seekdir returns void""... $ac_c" 1>&6
+echo "configure:9471: checking whether seekdir returns void" >&5
+if eval "test \"`echo '$''{'samba_cv_SEEKDIR_RETURNS_VOID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13144 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9477 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <dirent.h>
void seekdir(DIR *d, long loc) { return; }
-int
-main ()
-{
+int main() {
return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13158: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13161: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13164: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13167: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9486: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_SEEKDIR_RETURNS_VOID=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_SEEKDIR_RETURNS_VOID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_SEEKDIR_RETURNS_VOID=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13177: result: $samba_cv_SEEKDIR_RETURNS_VOID" >&5
-echo "${ECHO_T}$samba_cv_SEEKDIR_RETURNS_VOID" >&6
+
+echo "$ac_t""$samba_cv_SEEKDIR_RETURNS_VOID" 1>&6
if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define SEEKDIR_RETURNS_VOID 1
EOF
fi
-echo "$as_me:13186: checking for __FILE__ macro" >&5
-echo $ECHO_N "checking for __FILE__ macro... $ECHO_C" >&6
-if test "${samba_cv_HAVE_FILE_MACRO+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for __FILE__ macro""... $ac_c" 1>&6
+echo "configure:9507: checking for __FILE__ macro" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_FILE_MACRO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13193 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9513 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
printf("%s\n", __FILE__);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13205: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13208: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13211: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13214: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_FILE_MACRO=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_FILE_MACRO=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_FILE_MACRO=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13224: result: $samba_cv_HAVE_FILE_MACRO" >&5
-echo "${ECHO_T}$samba_cv_HAVE_FILE_MACRO" >&6
+
+echo "$ac_t""$samba_cv_HAVE_FILE_MACRO" 1>&6
if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_FILE_MACRO 1
EOF
fi
-echo "$as_me:13233: checking for __FUNCTION__ macro" >&5
-echo $ECHO_N "checking for __FUNCTION__ macro... $ECHO_C" >&6
-if test "${samba_cv_HAVE_FUNCTION_MACRO+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for __FUNCTION__ macro""... $ac_c" 1>&6
+echo "configure:9541: checking for __FUNCTION__ macro" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_FUNCTION_MACRO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13240 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9547 "configure"
#include "confdefs.h"
#include <stdio.h>
-int
-main ()
-{
+int main() {
printf("%s\n", __FUNCTION__);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13252: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13255: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13258: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13261: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_FUNCTION_MACRO=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_FUNCTION_MACRO=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_FUNCTION_MACRO=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13271: result: $samba_cv_HAVE_FUNCTION_MACRO" >&5
-echo "${ECHO_T}$samba_cv_HAVE_FUNCTION_MACRO" >&6
+
+echo "$ac_t""$samba_cv_HAVE_FUNCTION_MACRO" 1>&6
if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_FUNCTION_MACRO 1
EOF
fi
-echo "$as_me:13280: checking if gettimeofday takes tz argument" >&5
-echo $ECHO_N "checking if gettimeofday takes tz argument... $ECHO_C" >&6
-if test "${samba_cv_HAVE_GETTIMEOFDAY_TZ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking if gettimeofday takes tz argument""... $ac_c" 1>&6
+echo "configure:9575: checking if gettimeofday takes tz argument" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_GETTIMEOFDAY_TZ'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_GETTIMEOFDAY_TZ=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13290 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9584 "configure"
#include "confdefs.h"
#include <sys/time.h>
#include <unistd.h>
main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13298: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13301: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13303: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13306: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_GETTIMEOFDAY_TZ=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_GETTIMEOFDAY_TZ=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_GETTIMEOFDAY_TZ=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:13318: result: $samba_cv_HAVE_GETTIMEOFDAY_TZ" >&5
-echo "${ECHO_T}$samba_cv_HAVE_GETTIMEOFDAY_TZ" >&6
+
+echo "$ac_t""$samba_cv_HAVE_GETTIMEOFDAY_TZ" 1>&6
if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_GETTIMEOFDAY_TZ 1
EOF
fi
-echo "$as_me:13327: checking for C99 vsnprintf" >&5
-echo $ECHO_N "checking for C99 vsnprintf... $ECHO_C" >&6
-if test "${samba_cv_HAVE_C99_VSNPRINTF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for __va_copy""... $ac_c" 1>&6
+echo "configure:9614: checking for __va_copy" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_VA_COPY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
+
+cat > conftest.$ac_ext <<EOF
+#line 9620 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+va_list ap1,ap2;
+int main() {
+__va_copy(ap1,ap2);
+; return 0; }
+EOF
+if { (eval echo configure:9628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ samba_cv_HAVE_VA_COPY=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_VA_COPY=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$samba_cv_HAVE_VA_COPY" 1>&6
+if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_VA_COPY 1
+EOF
+
+fi
+echo $ac_n "checking for C99 vsnprintf""... $ac_c" 1>&6
+echo "configure:9649: checking for C99 vsnprintf" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_C99_VSNPRINTF'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_C99_VSNPRINTF=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13337 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9658 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -13360,791 +9680,594 @@ void foo(const char *format, ...) {
}
main() { foo("hello"); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13365: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13368: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13370: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13373: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:9685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_C99_VSNPRINTF=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_C99_VSNPRINTF=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_C99_VSNPRINTF=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:13385: result: $samba_cv_HAVE_C99_VSNPRINTF" >&5
-echo "${ECHO_T}$samba_cv_HAVE_C99_VSNPRINTF" >&6
+
+echo "$ac_t""$samba_cv_HAVE_C99_VSNPRINTF" 1>&6
if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_C99_VSNPRINTF 1
EOF
fi
-echo "$as_me:13394: checking for broken readdir" >&5
-echo $ECHO_N "checking for broken readdir... $ECHO_C" >&6
-if test "${samba_cv_HAVE_BROKEN_READDIR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken readdir""... $ac_c" 1>&6
+echo "configure:9708: checking for broken readdir" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_READDIR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_READDIR=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13404 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 9717 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <dirent.h>
main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
-di->d_name[0] == 0) exit(0); exit(1);}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13413: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13416: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13418: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13421: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+di->d_name[0] == 0) exit(0); exit(1);}
+EOF
+if { (eval echo configure:9725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_BROKEN_READDIR=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_BROKEN_READDIR=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_BROKEN_READDIR=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:13433: result: $samba_cv_HAVE_BROKEN_READDIR" >&5
-echo "${ECHO_T}$samba_cv_HAVE_BROKEN_READDIR" >&6
+
+echo "$ac_t""$samba_cv_HAVE_BROKEN_READDIR" 1>&6
if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_BROKEN_READDIR 1
EOF
fi
-echo "$as_me:13442: checking for utimbuf" >&5
-echo $ECHO_N "checking for utimbuf... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UTIMBUF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for utimbuf""... $ac_c" 1>&6
+echo "configure:9748: checking for utimbuf" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UTIMBUF'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13449 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9754 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utime.h>
-int
-main ()
-{
+int main() {
struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13462: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13465: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13468: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13471: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9762: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UTIMBUF=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UTIMBUF=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UTIMBUF=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13481: result: $samba_cv_HAVE_UTIMBUF" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UTIMBUF" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UTIMBUF" 1>&6
if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UTIMBUF 1
EOF
fi
+
for ac_func in pututline pututxline updwtmp updwtmpx getutmpx
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:13493: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 13499 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:9786: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 9791 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13530: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:13533: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13536: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13539: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:13549: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:9814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
-echo "$as_me:13559: checking for ut_name in utmp" >&5
-echo $ECHO_N "checking for ut_name in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_NAME+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-cat >conftest.$ac_ext <<_ACEOF
-#line 13566 "configure"
+echo $ac_n "checking for ut_name in utmp""... $ac_c" 1>&6
+echo "configure:9840: checking for ut_name in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_NAME'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+cat > conftest.$ac_ext <<EOF
+#line 9846 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_name[0] = 'a';
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13579: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13582: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13585: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13588: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_NAME=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_NAME=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_NAME=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13598: result: $samba_cv_HAVE_UT_UT_NAME" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_NAME" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_NAME" 1>&6
if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_NAME 1
EOF
-fi
+fi
-echo "$as_me:13607: checking for ut_user in utmp" >&5
-echo $ECHO_N "checking for ut_user in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_USER+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_user in utmp""... $ac_c" 1>&6
+echo "configure:9875: checking for ut_user in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_USER'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13614 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9881 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_user[0] = 'a';
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13627: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13630: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13633: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13636: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_USER=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_USER=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_USER=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13646: result: $samba_cv_HAVE_UT_UT_USER" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_USER" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_USER" 1>&6
if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_USER 1
EOF
-fi
+fi
-echo "$as_me:13655: checking for ut_id in utmp" >&5
-echo $ECHO_N "checking for ut_id in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_ID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_id in utmp""... $ac_c" 1>&6
+echo "configure:9910: checking for ut_id in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13662 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9916 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_id[0] = 'a';
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13675: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13678: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13681: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13684: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_ID=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_ID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_ID=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13694: result: $samba_cv_HAVE_UT_UT_ID" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_ID" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_ID" 1>&6
if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_ID 1
EOF
-fi
+fi
-echo "$as_me:13703: checking for ut_host in utmp" >&5
-echo $ECHO_N "checking for ut_host in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_HOST+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_host in utmp""... $ac_c" 1>&6
+echo "configure:9945: checking for ut_host in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_HOST'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13710 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9951 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_host[0] = 'a';
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13723: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13726: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13729: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13732: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_HOST=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_HOST=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_HOST=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13742: result: $samba_cv_HAVE_UT_UT_HOST" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_HOST" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_HOST" 1>&6
if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_HOST 1
EOF
-fi
+fi
-echo "$as_me:13751: checking for ut_time in utmp" >&5
-echo $ECHO_N "checking for ut_time in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_TIME+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_time in utmp""... $ac_c" 1>&6
+echo "configure:9980: checking for ut_time in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TIME'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13758 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 9986 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; time_t t; ut.ut_time = t;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13771: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13774: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13777: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13780: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:9994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_TIME=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_TIME=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_TIME=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13790: result: $samba_cv_HAVE_UT_UT_TIME" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_TIME" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_TIME" 1>&6
if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_TIME 1
EOF
-fi
+fi
-echo "$as_me:13799: checking for ut_tv in utmp" >&5
-echo $ECHO_N "checking for ut_tv in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_TV+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_tv in utmp""... $ac_c" 1>&6
+echo "configure:10015: checking for ut_tv in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TV'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13806 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10021 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; struct timeval tv; ut.ut_tv = tv;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13819: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13822: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13825: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13828: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10029: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_TV=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_TV=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_TV=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13838: result: $samba_cv_HAVE_UT_UT_TV" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_TV" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_TV" 1>&6
if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_TV 1
EOF
-fi
+fi
-echo "$as_me:13847: checking for ut_type in utmp" >&5
-echo $ECHO_N "checking for ut_type in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_TYPE+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_type in utmp""... $ac_c" 1>&6
+echo "configure:10050: checking for ut_type in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TYPE'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13854 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10056 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_type = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13867: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13870: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13873: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13876: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10064: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_TYPE=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_TYPE=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_TYPE=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13886: result: $samba_cv_HAVE_UT_UT_TYPE" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_TYPE" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_TYPE" 1>&6
if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_TYPE 1
EOF
-fi
+fi
-echo "$as_me:13895: checking for ut_pid in utmp" >&5
-echo $ECHO_N "checking for ut_pid in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_PID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_pid in utmp""... $ac_c" 1>&6
+echo "configure:10085: checking for ut_pid in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_PID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13902 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10091 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_pid = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13915: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13918: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13921: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13924: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_PID=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_PID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_PID=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13934: result: $samba_cv_HAVE_UT_UT_PID" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_PID" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_PID" 1>&6
if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_PID 1
EOF
-fi
+fi
-echo "$as_me:13943: checking for ut_exit in utmp" >&5
-echo $ECHO_N "checking for ut_exit in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_EXIT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_exit in utmp""... $ac_c" 1>&6
+echo "configure:10120: checking for ut_exit in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_EXIT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13950 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10126 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_exit.e_exit = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13963: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13966: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13969: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13972: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_EXIT=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_EXIT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_EXIT=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:13982: result: $samba_cv_HAVE_UT_UT_EXIT" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_EXIT" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_EXIT" 1>&6
if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_EXIT 1
EOF
-fi
+fi
-echo "$as_me:13991: checking for ut_addr in utmp" >&5
-echo $ECHO_N "checking for ut_addr in utmp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UT_UT_ADDR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_addr in utmp""... $ac_c" 1>&6
+echo "configure:10155: checking for ut_addr in utmp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ADDR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 13998 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10161 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp ut; ut.ut_addr = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14011: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14014: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14017: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14020: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10169: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UT_UT_ADDR=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UT_UT_ADDR=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UT_UT_ADDR=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14030: result: $samba_cv_HAVE_UT_UT_ADDR" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UT_UT_ADDR" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UT_UT_ADDR" 1>&6
if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UT_UT_ADDR 1
EOF
-fi
+fi
if test x$ac_cv_func_pututline = xyes ; then
- echo "$as_me:14040: checking whether pututline returns pointer" >&5
-echo $ECHO_N "checking whether pututline returns pointer... $ECHO_C" >&6
-if test "${samba_cv_PUTUTLINE_RETURNS_UTMP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking whether pututline returns pointer""... $ac_c" 1>&6
+echo "configure:10191: checking whether pututline returns pointer" >&5
+if eval "test \"`echo '$''{'samba_cv_PUTUTLINE_RETURNS_UTMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 14047 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 10197 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
-int
-main ()
-{
+int main() {
struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14060: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14063: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14066: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14069: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10205: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_PUTUTLINE_RETURNS_UTMP=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_PUTUTLINE_RETURNS_UTMP=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_PUTUTLINE_RETURNS_UTMP=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14079: result: $samba_cv_PUTUTLINE_RETURNS_UTMP" >&5
-echo "${ECHO_T}$samba_cv_PUTUTLINE_RETURNS_UTMP" >&6
+
+echo "$ac_t""$samba_cv_PUTUTLINE_RETURNS_UTMP" 1>&6
if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define PUTUTLINE_RETURNS_UTMP 1
EOF
fi
fi
-echo "$as_me:14089: checking for ut_syslen in utmpx" >&5
-echo $ECHO_N "checking for ut_syslen in utmpx... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UX_UT_SYSLEN+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ut_syslen in utmpx""... $ac_c" 1>&6
+echo "configure:10227: checking for ut_syslen in utmpx" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UX_UT_SYSLEN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14096 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10233 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmpx.h>
-int
-main ()
-{
+int main() {
struct utmpx ux; ux.ut_syslen = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14109: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14112: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14115: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14118: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10241: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UX_UT_SYSLEN=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UX_UT_SYSLEN=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UX_UT_SYSLEN=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14128: result: $samba_cv_HAVE_UX_UT_SYSLEN" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UX_UT_SYSLEN" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UX_UT_SYSLEN" 1>&6
if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UX_UT_SYSLEN 1
EOF
-fi
+fi
-echo "$as_me:14137: checking for Linux kernel oplocks" >&5
-echo $ECHO_N "checking for Linux kernel oplocks... $ECHO_C" >&6
-if test "${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for Linux kernel oplocks""... $ac_c" 1>&6
+echo "configure:10262: checking for Linux kernel oplocks" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_LINUX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14147 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10271 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14157,48 +10280,40 @@ main() {
return fcntl(fd, F_GETLEASE, 0) == -1;
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14162: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14165: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14167: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14170: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14182: result: $samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" >&5
-echo "${ECHO_T}$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" >&6
+
+echo "$ac_t""$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" 1>&6
if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_KERNEL_OPLOCKS_LINUX 1
EOF
fi
-echo "$as_me:14191: checking for kernel change notify support" >&5
-echo $ECHO_N "checking for kernel change notify support... $ECHO_C" >&6
-if test "${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for kernel change notify support""... $ac_c" 1>&6
+echo "configure:10308: checking for kernel change notify support" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_CHANGE_NOTIFY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14201 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10317 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14211,48 +10326,40 @@ main() {
exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14216: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14219: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14221: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14224: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14236: result: $samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" >&5
-echo "${ECHO_T}$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" >&6
-if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
- cat >>confdefs.h <<\EOF
+
+echo "$ac_t""$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" 1>&6
+if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" && test x"$target_cpu" != x"s390"; then
+ cat >> confdefs.h <<\EOF
#define HAVE_KERNEL_CHANGE_NOTIFY 1
EOF
fi
-echo "$as_me:14245: checking for kernel share modes" >&5
-echo $ECHO_N "checking for kernel share modes... $ECHO_C" >&6
-if test "${samba_cv_HAVE_KERNEL_SHARE_MODES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for kernel share modes""... $ac_c" 1>&6
+echo "configure:10354: checking for kernel share modes" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_SHARE_MODES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_SHARE_MODES=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14255 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10363 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14267,96 +10374,78 @@ main() {
exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14272: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14275: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14277: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14280: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_KERNEL_SHARE_MODES=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_KERNEL_SHARE_MODES=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_KERNEL_SHARE_MODES=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14292: result: $samba_cv_HAVE_KERNEL_SHARE_MODES" >&5
-echo "${ECHO_T}$samba_cv_HAVE_KERNEL_SHARE_MODES" >&6
+
+echo "$ac_t""$samba_cv_HAVE_KERNEL_SHARE_MODES" 1>&6
if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_KERNEL_SHARE_MODES 1
EOF
fi
-echo "$as_me:14301: checking for IRIX kernel oplock type definitions" >&5
-echo $ECHO_N "checking for IRIX kernel oplock type definitions... $ECHO_C" >&6
-if test "${samba_cv_HAVE_KERNEL_OPLOCKS_IRIX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-cat >conftest.$ac_ext <<_ACEOF
-#line 14308 "configure"
+
+
+echo $ac_n "checking for IRIX kernel oplock type definitions""... $ac_c" 1>&6
+echo "configure:10405: checking for IRIX kernel oplock type definitions" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_IRIX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+cat > conftest.$ac_ext <<EOF
+#line 10411 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <fcntl.h>
-int
-main ()
-{
+int main() {
oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14321: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14324: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14327: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14330: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14340: result: $samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" >&5
-echo "${ECHO_T}$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" >&6
+
+echo "$ac_t""$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" 1>&6
if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_KERNEL_OPLOCKS_IRIX 1
EOF
fi
-echo "$as_me:14349: checking for irix specific capabilities" >&5
-echo $ECHO_N "checking for irix specific capabilities... $ECHO_C" >&6
-if test "${samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for irix specific capabilities""... $ac_c" 1>&6
+echo "configure:10440: checking for irix specific capabilities" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14359 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10449 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/capability.h>
@@ -14370,32 +10459,24 @@ main() {
exit(0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14375: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14378: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14380: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14383: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14395: result: $samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" >&5
-echo "${ECHO_T}$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" >&6
+
+echo "$ac_t""$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" 1>&6
if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_IRIX_SPECIFIC_CAPABILITIES 1
EOF
@@ -14406,214 +10487,163 @@ fi
# This is *really* broken but some systems (DEC OSF1) do this.... JRA.
#
-echo "$as_me:14409: checking for int16 typedef included by rpc/rpc.h" >&5
-echo $ECHO_N "checking for int16 typedef included by rpc/rpc.h... $ECHO_C" >&6
-if test "${samba_cv_HAVE_INT16_FROM_RPC_RPC_H+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for int16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
+echo "configure:10492: checking for int16 typedef included by rpc/rpc.h" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_INT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14416 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10498 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
#include <rpc/rpc.h>
#endif
-int
-main ()
-{
+int main() {
int16 testvar;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14431: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14434: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14437: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14440: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14450: result: $samba_cv_HAVE_INT16_FROM_RPC_RPC_H" >&5
-echo "${ECHO_T}$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" >&6
+
+echo "$ac_t""$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" 1>&6
if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_INT16_FROM_RPC_RPC_H 1
EOF
fi
-echo "$as_me:14459: checking for uint16 typedef included by rpc/rpc.h" >&5
-echo $ECHO_N "checking for uint16 typedef included by rpc/rpc.h... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UINT16_FROM_RPC_RPC_H+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for uint16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
+echo "configure:10529: checking for uint16 typedef included by rpc/rpc.h" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UINT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14466 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10535 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
#include <rpc/rpc.h>
#endif
-int
-main ()
-{
+int main() {
uint16 testvar;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14481: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14484: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14487: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14490: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14500: result: $samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" 1>&6
if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UINT16_FROM_RPC_RPC_H 1
EOF
fi
-echo "$as_me:14509: checking for int32 typedef included by rpc/rpc.h" >&5
-echo $ECHO_N "checking for int32 typedef included by rpc/rpc.h... $ECHO_C" >&6
-if test "${samba_cv_HAVE_INT32_FROM_RPC_RPC_H+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for int32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
+echo "configure:10566: checking for int32 typedef included by rpc/rpc.h" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_INT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14516 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10572 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
#include <rpc/rpc.h>
#endif
-int
-main ()
-{
+int main() {
int32 testvar;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14531: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14534: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14537: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14540: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14550: result: $samba_cv_HAVE_INT32_FROM_RPC_RPC_H" >&5
-echo "${ECHO_T}$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" >&6
+
+echo "$ac_t""$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" 1>&6
if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_INT32_FROM_RPC_RPC_H 1
EOF
fi
-echo "$as_me:14559: checking for uint32 typedef included by rpc/rpc.h" >&5
-echo $ECHO_N "checking for uint32 typedef included by rpc/rpc.h... $ECHO_C" >&6
-if test "${samba_cv_HAVE_UINT32_FROM_RPC_RPC_H+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for uint32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
+echo "configure:10603: checking for uint32 typedef included by rpc/rpc.h" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_UINT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14566 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 10609 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
#include <rpc/rpc.h>
#endif
-int
-main ()
-{
+int main() {
uint32 testvar;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14581: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14584: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14587: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14590: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14600: result: $samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" >&5
-echo "${ECHO_T}$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" >&6
+
+echo "$ac_t""$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" 1>&6
if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_UINT32_FROM_RPC_RPC_H 1
EOF
fi
-echo "$as_me:14609: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
-echo $ECHO_N "checking for conflicting AUTH_ERROR define in rpc/rpc.h... $ECHO_C" >&6
-if test "${samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-cat >conftest.$ac_ext <<_ACEOF
-#line 14616 "configure"
+echo $ac_n "checking for conflicting AUTH_ERROR define in rpc/rpc.h""... $ac_c" 1>&6
+echo "configure:10641: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+cat > conftest.$ac_ext <<EOF
+#line 10647 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_SECURITY_H
@@ -14623,176 +10653,135 @@ cat >conftest.$ac_ext <<_ACEOF
#if defined(HAVE_RPC_RPC_H)
#include <rpc/rpc.h>
#endif
-int
-main ()
-{
+int main() {
int testvar;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14635: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14638: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14641: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14644: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10661: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:14654: result: $samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" >&5
-echo "${ECHO_T}$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" >&6
+
+echo "$ac_t""$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" 1>&6
if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_RPC_AUTH_ERROR_CONFLICT 1
EOF
fi
-echo "$as_me:14663: checking for test routines" >&5
-echo $ECHO_N "checking for test routines... $ECHO_C" >&6
+echo $ac_n "checking for test routines""... $ac_c" 1>&6
+echo "configure:10682: checking for test routines" >&5
if test "$cross_compiling" = yes; then
- { echo "$as_me:14666: WARNING: cannot run when cross-compiling" >&5
-echo "$as_me: WARNING: cannot run when cross-compiling" >&2;}
+ echo "configure: warning: cannot run when cross-compiling" 1>&2
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14670 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10687 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/trivial.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14675: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14678: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14680: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14683: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "$as_me:14685: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:14691: error: cant find test code. Aborting config" >&5
-echo "$as_me: error: cant find test code. Aborting config" >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:14698: checking for ftruncate extend" >&5
-echo $ECHO_N "checking for ftruncate extend... $ECHO_C" >&6
-if test "${samba_cv_HAVE_FTRUNCATE_EXTEND+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+EOF
+if { (eval echo configure:10691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ echo "$ac_t""yes" 1>&6
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ { echo "configure: error: cant find test code. Aborting config" 1>&2; exit 1; }
+fi
+rm -fr conftest*
+fi
+
+echo $ac_n "checking for ftruncate extend""... $ac_c" 1>&6
+echo "configure:10705: checking for ftruncate extend" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_FTRUNCATE_EXTEND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_FTRUNCATE_EXTEND=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14708 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10714 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/ftruncate.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14713: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14716: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14718: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14721: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_FTRUNCATE_EXTEND=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_FTRUNCATE_EXTEND=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_FTRUNCATE_EXTEND=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14733: result: $samba_cv_HAVE_FTRUNCATE_EXTEND" >&5
-echo "${ECHO_T}$samba_cv_HAVE_FTRUNCATE_EXTEND" >&6
+
+echo "$ac_t""$samba_cv_HAVE_FTRUNCATE_EXTEND" 1>&6
if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_FTRUNCATE_EXTEND 1
EOF
fi
-echo "$as_me:14742: checking for broken getgroups" >&5
-echo $ECHO_N "checking for broken getgroups... $ECHO_C" >&6
-if test "${samba_cv_HAVE_BROKEN_GETGROUPS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken getgroups""... $ac_c" 1>&6
+echo "configure:10741: checking for broken getgroups" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_GETGROUPS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_GETGROUPS=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14752 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10750 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/getgroups.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14757: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14760: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14762: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14765: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_BROKEN_GETGROUPS=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_BROKEN_GETGROUPS=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_BROKEN_GETGROUPS=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14777: result: $samba_cv_HAVE_BROKEN_GETGROUPS" >&5
-echo "${ECHO_T}$samba_cv_HAVE_BROKEN_GETGROUPS" >&6
+
+echo "$ac_t""$samba_cv_HAVE_BROKEN_GETGROUPS" 1>&6
if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_BROKEN_GETGROUPS 1
EOF
fi
-echo "$as_me:14786: checking whether getpass should be replaced" >&5
-echo $ECHO_N "checking whether getpass should be replaced... $ECHO_C" >&6
-if test "${samba_cv_REPLACE_GETPASS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether getpass should be replaced""... $ac_c" 1>&6
+echo "configure:10777: checking whether getpass should be replaced" >&5
+if eval "test \"`echo '$''{'samba_cv_REPLACE_GETPASS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
-cat >conftest.$ac_ext <<_ACEOF
-#line 14795 "configure"
+CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper"
+cat > conftest.$ac_ext <<EOF
+#line 10785 "configure"
#include "confdefs.h"
#define REPLACE_GETPASS 1
@@ -14801,56 +10790,43 @@ cat >conftest.$ac_ext <<_ACEOF
#include "${srcdir-.}/lib/getsmbpass.c"
#undef main
-int
-main ()
-{
+int main() {
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14813: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14816: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14819: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14822: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:10798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_REPLACE_GETPASS=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_REPLACE_GETPASS=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_REPLACE_GETPASS=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
CPPFLAGS="$SAVE_CPPFLAGS"
fi
-echo "$as_me:14834: result: $samba_cv_REPLACE_GETPASS" >&5
-echo "${ECHO_T}$samba_cv_REPLACE_GETPASS" >&6
+
+echo "$ac_t""$samba_cv_REPLACE_GETPASS" 1>&6
if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define REPLACE_GETPASS 1
EOF
fi
-echo "$as_me:14843: checking for broken inet_ntoa" >&5
-echo $ECHO_N "checking for broken inet_ntoa... $ECHO_C" >&6
-if test "${samba_cv_REPLACE_INET_NTOA+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken inet_ntoa""... $ac_c" 1>&6
+echo "configure:10821: checking for broken inet_ntoa" >&5
+if eval "test \"`echo '$''{'samba_cv_REPLACE_INET_NTOA'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_REPLACE_INET_NTOA=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14853 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10830 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -14861,283 +10837,234 @@ else
#endif
main() { struct in_addr ip; ip.s_addr = 0x12345678;
if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
- strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); }
+ strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); }
exit(1);}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14868: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14871: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14873: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14876: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_REPLACE_INET_NTOA=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_REPLACE_INET_NTOA=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_REPLACE_INET_NTOA=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14888: result: $samba_cv_REPLACE_INET_NTOA" >&5
-echo "${ECHO_T}$samba_cv_REPLACE_INET_NTOA" >&6
+
+echo "$ac_t""$samba_cv_REPLACE_INET_NTOA" 1>&6
if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define REPLACE_INET_NTOA 1
EOF
fi
-echo "$as_me:14897: checking for secure mkstemp" >&5
-echo $ECHO_N "checking for secure mkstemp... $ECHO_C" >&6
-if test "${samba_cv_HAVE_SECURE_MKSTEMP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for secure mkstemp""... $ac_c" 1>&6
+echo "configure:10867: checking for secure mkstemp" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_SECURE_MKSTEMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_SECURE_MKSTEMP=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14907 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10876 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-main() {
+main() {
struct stat st;
- char tpl[20]="/tmp/test.XXXXXX";
- int fd = mkstemp(tpl);
+ char tpl[20]="/tmp/test.XXXXXX";
+ int fd = mkstemp(tpl);
if (fd == -1) exit(1);
unlink(tpl);
if (fstat(fd, &st) != 0) exit(1);
if ((st.st_mode & 0777) != 0600) exit(1);
exit(0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14925: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14928: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14930: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14933: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_SECURE_MKSTEMP=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_SECURE_MKSTEMP=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_SECURE_MKSTEMP=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14945: result: $samba_cv_HAVE_SECURE_MKSTEMP" >&5
-echo "${ECHO_T}$samba_cv_HAVE_SECURE_MKSTEMP" >&6
+
+echo "$ac_t""$samba_cv_HAVE_SECURE_MKSTEMP" 1>&6
if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_SECURE_MKSTEMP 1
EOF
fi
-echo "$as_me:14954: checking for sysconf(_SC_NGROUPS_MAX)" >&5
-echo $ECHO_N "checking for sysconf(_SC_NGROUPS_MAX)... $ECHO_C" >&6
-if test "${samba_cv_SYSCONF_SC_NGROUPS_MAX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for sysconf(_SC_NGROUPS_MAX)""... $ac_c" 1>&6
+echo "configure:10916: checking for sysconf(_SC_NGROUPS_MAX)" >&5
+if eval "test \"`echo '$''{'samba_cv_SYSCONF_SC_NGROUPS_MAX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_SYSCONF_SC_NGROUPS_MAX=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14964 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10925 "configure"
#include "confdefs.h"
#include <unistd.h>
main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14970: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14973: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14975: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14978: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_SYSCONF_SC_NGROUPS_MAX=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_SYSCONF_SC_NGROUPS_MAX=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_SYSCONF_SC_NGROUPS_MAX=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:14990: result: $samba_cv_SYSCONF_SC_NGROUPS_MAX" >&5
-echo "${ECHO_T}$samba_cv_SYSCONF_SC_NGROUPS_MAX" >&6
+
+echo "$ac_t""$samba_cv_SYSCONF_SC_NGROUPS_MAX" 1>&6
if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define SYSCONF_SC_NGROUPS_MAX 1
EOF
fi
-echo "$as_me:14999: checking for root" >&5
-echo $ECHO_N "checking for root... $ECHO_C" >&6
-if test "${samba_cv_HAVE_ROOT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for root""... $ac_c" 1>&6
+echo "configure:10953: checking for root" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_ROOT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_ROOT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15009 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 10962 "configure"
#include "confdefs.h"
main() { exit(getuid() != 0); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15014: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15017: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15019: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15022: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:10966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_ROOT=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_ROOT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_ROOT=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15034: result: $samba_cv_HAVE_ROOT" >&5
-echo "${ECHO_T}$samba_cv_HAVE_ROOT" >&6
+
+echo "$ac_t""$samba_cv_HAVE_ROOT" 1>&6
if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_ROOT 1
EOF
else
- { echo "$as_me:15042: WARNING: running as non-root will disable some tests" >&5
-echo "$as_me: WARNING: running as non-root will disable some tests" >&2;}
+ echo "configure: warning: running as non-root will disable some tests" 1>&2
fi
##################
# look for a method of finding the list of network interfaces
iface=no;
-echo "$as_me:15049: checking for iface AIX" >&5
-echo $ECHO_N "checking for iface AIX... $ECHO_C" >&6
-if test "${samba_cv_HAVE_IFACE_AIX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for iface AIX""... $ac_c" 1>&6
+echo "configure:10994: checking for iface AIX" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_AIX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_AIX=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15059 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11003 "configure"
#include "confdefs.h"
#define HAVE_IFACE_AIX 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15068: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15071: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15073: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15076: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_IFACE_AIX=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_IFACE_AIX=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_IFACE_AIX=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15088: result: $samba_cv_HAVE_IFACE_AIX" >&5
-echo "${ECHO_T}$samba_cv_HAVE_IFACE_AIX" >&6
+
+echo "$ac_t""$samba_cv_HAVE_IFACE_AIX" 1>&6
if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
- iface=yes;cat >>confdefs.h <<\EOF
+ iface=yes;cat >> confdefs.h <<\EOF
#define HAVE_IFACE_AIX 1
EOF
fi
if test $iface = no; then
-echo "$as_me:15098: checking for iface ifconf" >&5
-echo $ECHO_N "checking for iface ifconf... $ECHO_C" >&6
-if test "${samba_cv_HAVE_IFACE_IFCONF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for iface ifconf""... $ac_c" 1>&6
+echo "configure:11035: checking for iface ifconf" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFCONF'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_IFCONF=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15108 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11044 "configure"
#include "confdefs.h"
#define HAVE_IFACE_IFCONF 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15117: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15120: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15122: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15125: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_IFACE_IFCONF=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_IFACE_IFCONF=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_IFACE_IFCONF=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15137: result: $samba_cv_HAVE_IFACE_IFCONF" >&5
-echo "${ECHO_T}$samba_cv_HAVE_IFACE_IFCONF" >&6
+
+echo "$ac_t""$samba_cv_HAVE_IFACE_IFCONF" 1>&6
if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
- iface=yes;cat >>confdefs.h <<\EOF
+ iface=yes;cat >> confdefs.h <<\EOF
#define HAVE_IFACE_IFCONF 1
EOF
@@ -15145,152 +11072,130 @@ fi
fi
if test $iface = no; then
-echo "$as_me:15148: checking for iface ifreq" >&5
-echo $ECHO_N "checking for iface ifreq... $ECHO_C" >&6
-if test "${samba_cv_HAVE_IFACE_IFREQ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for iface ifreq""... $ac_c" 1>&6
+echo "configure:11077: checking for iface ifreq" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFREQ'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_IFREQ=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15158 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11086 "configure"
#include "confdefs.h"
#define HAVE_IFACE_IFREQ 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15167: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15170: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15172: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15175: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_IFACE_IFREQ=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_IFACE_IFREQ=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_IFACE_IFREQ=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15187: result: $samba_cv_HAVE_IFACE_IFREQ" >&5
-echo "${ECHO_T}$samba_cv_HAVE_IFACE_IFREQ" >&6
+
+echo "$ac_t""$samba_cv_HAVE_IFACE_IFREQ" 1>&6
if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
- iface=yes;cat >>confdefs.h <<\EOF
+ iface=yes;cat >> confdefs.h <<\EOF
#define HAVE_IFACE_IFREQ 1
EOF
fi
fi
+
################################################
# look for a method of setting the effective uid
seteuid=no;
if test $seteuid = no; then
-echo "$as_me:15201: checking for setresuid" >&5
-echo $ECHO_N "checking for setresuid... $ECHO_C" >&6
-if test "${samba_cv_USE_SETRESUID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for setresuid""... $ac_c" 1>&6
+echo "configure:11123: checking for setresuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETRESUID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_USE_SETRESUID=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15211 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11132 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
#define USE_SETRESUID 1
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15220: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15223: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15225: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15228: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_USE_SETRESUID=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_USE_SETRESUID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_USE_SETRESUID=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15240: result: $samba_cv_USE_SETRESUID" >&5
-echo "${ECHO_T}$samba_cv_USE_SETRESUID" >&6
+
+echo "$ac_t""$samba_cv_USE_SETRESUID" 1>&6
if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
- seteuid=yes;cat >>confdefs.h <<\EOF
+ seteuid=yes;cat >> confdefs.h <<\EOF
#define USE_SETRESUID 1
EOF
fi
fi
+
if test $seteuid = no; then
-echo "$as_me:15251: checking for setreuid" >&5
-echo $ECHO_N "checking for setreuid... $ECHO_C" >&6
-if test "${samba_cv_USE_SETREUID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for setreuid""... $ac_c" 1>&6
+echo "configure:11166: checking for setreuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETREUID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_USE_SETREUID=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15261 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11175 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
#define USE_SETREUID 1
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15270: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15273: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15275: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15278: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_USE_SETREUID=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_USE_SETREUID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_USE_SETREUID=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15290: result: $samba_cv_USE_SETREUID" >&5
-echo "${ECHO_T}$samba_cv_USE_SETREUID" >&6
+
+echo "$ac_t""$samba_cv_USE_SETREUID" 1>&6
if test x"$samba_cv_USE_SETREUID" = x"yes"; then
- seteuid=yes;cat >>confdefs.h <<\EOF
+ seteuid=yes;cat >> confdefs.h <<\EOF
#define USE_SETREUID 1
EOF
@@ -15298,49 +11203,41 @@ fi
fi
if test $seteuid = no; then
-echo "$as_me:15301: checking for seteuid" >&5
-echo $ECHO_N "checking for seteuid... $ECHO_C" >&6
-if test "${samba_cv_USE_SETEUID+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for seteuid""... $ac_c" 1>&6
+echo "configure:11208: checking for seteuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETEUID'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_USE_SETEUID=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15311 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11217 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
#define USE_SETEUID 1
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15320: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15323: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15325: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15328: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_USE_SETEUID=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_USE_SETEUID=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_USE_SETEUID=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15340: result: $samba_cv_USE_SETEUID" >&5
-echo "${ECHO_T}$samba_cv_USE_SETEUID" >&6
+
+echo "$ac_t""$samba_cv_USE_SETEUID" 1>&6
if test x"$samba_cv_USE_SETEUID" = x"yes"; then
- seteuid=yes;cat >>confdefs.h <<\EOF
+ seteuid=yes;cat >> confdefs.h <<\EOF
#define USE_SETEUID 1
EOF
@@ -15348,242 +11245,205 @@ fi
fi
if test $seteuid = no; then
-echo "$as_me:15351: checking for setuidx" >&5
-echo $ECHO_N "checking for setuidx... $ECHO_C" >&6
-if test "${samba_cv_USE_SETUIDX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for setuidx""... $ac_c" 1>&6
+echo "configure:11250: checking for setuidx" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETUIDX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_USE_SETUIDX=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15361 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11259 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
#define USE_SETUIDX 1
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15370: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15373: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15375: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15378: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_USE_SETUIDX=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_USE_SETUIDX=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_USE_SETUIDX=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15390: result: $samba_cv_USE_SETUIDX" >&5
-echo "${ECHO_T}$samba_cv_USE_SETUIDX" >&6
+
+echo "$ac_t""$samba_cv_USE_SETUIDX" 1>&6
if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
- seteuid=yes;cat >>confdefs.h <<\EOF
+ seteuid=yes;cat >> confdefs.h <<\EOF
#define USE_SETUIDX 1
EOF
fi
fi
-echo "$as_me:15400: checking for working mmap" >&5
-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
-if test "${samba_cv_HAVE_MMAP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+echo $ac_n "checking for working mmap""... $ac_c" 1>&6
+echo "configure:11292: checking for working mmap" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_MMAP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_MMAP=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15410 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11301 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/shared_mmap.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15415: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15418: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15420: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15423: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_MMAP=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_MMAP=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_MMAP=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15435: result: $samba_cv_HAVE_MMAP" >&5
-echo "${ECHO_T}$samba_cv_HAVE_MMAP" >&6
+
+echo "$ac_t""$samba_cv_HAVE_MMAP" 1>&6
if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_MMAP 1
EOF
fi
-echo "$as_me:15444: checking for ftruncate needs root" >&5
-echo $ECHO_N "checking for ftruncate needs root... $ECHO_C" >&6
-if test "${samba_cv_FTRUNCATE_NEEDS_ROOT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for ftruncate needs root""... $ac_c" 1>&6
+echo "configure:11328: checking for ftruncate needs root" >&5
+if eval "test \"`echo '$''{'samba_cv_FTRUNCATE_NEEDS_ROOT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_FTRUNCATE_NEEDS_ROOT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15454 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11337 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/ftruncroot.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15459: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15462: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15464: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15467: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_FTRUNCATE_NEEDS_ROOT=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_FTRUNCATE_NEEDS_ROOT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_FTRUNCATE_NEEDS_ROOT=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15479: result: $samba_cv_FTRUNCATE_NEEDS_ROOT" >&5
-echo "${ECHO_T}$samba_cv_FTRUNCATE_NEEDS_ROOT" >&6
+
+echo "$ac_t""$samba_cv_FTRUNCATE_NEEDS_ROOT" 1>&6
if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define FTRUNCATE_NEEDS_ROOT 1
EOF
fi
-echo "$as_me:15488: checking for fcntl locking" >&5
-echo $ECHO_N "checking for fcntl locking... $ECHO_C" >&6
-if test "${samba_cv_HAVE_FCNTL_LOCK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for fcntl locking""... $ac_c" 1>&6
+echo "configure:11364: checking for fcntl locking" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_FCNTL_LOCK'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_FCNTL_LOCK=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15498 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11373 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/fcntl_lock.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15503: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15506: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15508: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15511: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_FCNTL_LOCK=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_FCNTL_LOCK=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_FCNTL_LOCK=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15523: result: $samba_cv_HAVE_FCNTL_LOCK" >&5
-echo "${ECHO_T}$samba_cv_HAVE_FCNTL_LOCK" >&6
+
+echo "$ac_t""$samba_cv_HAVE_FCNTL_LOCK" 1>&6
if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_FCNTL_LOCK 1
EOF
fi
-echo "$as_me:15532: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
-echo $ECHO_N "checking for broken (glibc2.1/x86) 64 bit fcntl locking... $ECHO_C" >&6
-if test "${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken (glibc2.1/x86) 64 bit fcntl locking""... $ac_c" 1>&6
+echo "configure:11400: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_FCNTL64_LOCKS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15542 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11409 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/fcntl_lock64.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15547: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15550: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15552: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15555: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15567: result: $samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" >&5
-echo "${ECHO_T}$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" >&6
+
+echo "$ac_t""$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" 1>&6
if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_BROKEN_FCNTL64_LOCKS 1
EOF
-else
- echo "$as_me:15576: checking for 64 bit fcntl locking" >&5
-echo $ECHO_N "checking for 64 bit fcntl locking... $ECHO_C" >&6
-if test "${samba_cv_HAVE_STRUCT_FLOCK64+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
else
+
+ echo $ac_n "checking for 64 bit fcntl locking""... $ac_c" 1>&6
+echo "configure:11438: checking for 64 bit fcntl locking" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_FLOCK64'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_STRUCT_FLOCK64=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15586 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 11447 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -15606,98 +11466,77 @@ exit(0);
exit(1);
#endif
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15611: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15614: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15616: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15619: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:11471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_STRUCT_FLOCK64=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_STRUCT_FLOCK64=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_STRUCT_FLOCK64=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:15631: result: $samba_cv_HAVE_STRUCT_FLOCK64" >&5
-echo "${ECHO_T}$samba_cv_HAVE_STRUCT_FLOCK64" >&6
+
+echo "$ac_t""$samba_cv_HAVE_STRUCT_FLOCK64" 1>&6
if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_FLOCK64 1
EOF
fi
fi
-echo "$as_me:15642: checking for st_blocks in struct stat" >&5
-echo $ECHO_N "checking for st_blocks in struct stat... $ECHO_C" >&6
-if test "${samba_cv_HAVE_STAT_ST_BLOCKS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
+echo "configure:11496: checking for st_blocks in struct stat" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_STAT_ST_BLOCKS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 15649 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 11502 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-int
-main ()
-{
+int main() {
struct stat st; st.st_blocks = 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15663: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:15666: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15669: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15672: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:11511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_STAT_ST_BLOCKS=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_STAT_ST_BLOCKS=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_STAT_ST_BLOCKS=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:15682: result: $samba_cv_HAVE_STAT_ST_BLOCKS" >&5
-echo "${ECHO_T}$samba_cv_HAVE_STAT_ST_BLOCKS" >&6
+
+echo "$ac_t""$samba_cv_HAVE_STAT_ST_BLOCKS" 1>&6
if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_STAT_ST_BLOCKS 1
EOF
-fi
+fi
case "$host_os" in
*linux*)
-echo "$as_me:15693: checking for broken RedHat 7.2 system header files" >&5
-echo $ECHO_N "checking for broken RedHat 7.2 system header files... $ECHO_C" >&6
-if test "${samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken RedHat 7.2 system header files""... $ac_c" 1>&6
+echo "configure:11534: checking for broken RedHat 7.2 system header files" >&5
+if eval "test \"`echo '$''{'samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 15700 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 11540 "configure"
#include "confdefs.h"
#ifdef HAVE_SYS_VFS_H
@@ -15707,38 +11546,25 @@ cat >conftest.$ac_ext <<_ACEOF
#include <sys/capability.h>
#endif
-int
-main ()
-{
+int main() {
int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15719: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:15722: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15725: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15728: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:11554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:15738: result: $samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" >&5
-echo "${ECHO_T}$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" >&6
+
+echo "$ac_t""$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" 1>&6
if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define BROKEN_REDHAT_7_SYSTEM_HEADERS 1
EOF
@@ -15746,69 +11572,55 @@ fi
;;
esac
-echo "$as_me:15749: checking for broken nisplus include files" >&5
-echo $ECHO_N "checking for broken nisplus include files... $ECHO_C" >&6
-if test "${samba_cv_BROKEN_NISPLUS_INCLUDE_FILES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for broken nisplus include files""... $ac_c" 1>&6
+echo "configure:11577: checking for broken nisplus include files" >&5
+if eval "test \"`echo '$''{'samba_cv_BROKEN_NISPLUS_INCLUDE_FILES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 15756 "configure"
+
+cat > conftest.$ac_ext <<EOF
+#line 11583 "configure"
#include "confdefs.h"
#include <sys/acl.h>
#if defined(HAVE_RPCSVC_NIS_H)
#include <rpcsvc/nis.h>
#endif
-int
-main ()
-{
+int main() {
int i;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15771: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:15774: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15777: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15780: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:11593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:15790: result: $samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" >&5
-echo "${ECHO_T}$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" >&6
+
+echo "$ac_t""$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" 1>&6
if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define BROKEN_NISPLUS_INCLUDE_FILES 1
EOF
fi
+
#################################################
# check for smbwrapper support
-echo "$as_me:15801: checking whether to use smbwrapper" >&5
-echo $ECHO_N "checking whether to use smbwrapper... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use smbwrapper""... $ac_c" 1>&6
+echo "configure:11617: checking whether to use smbwrapper" >&5
# Check whether --with-smbwrapper or --without-smbwrapper was given.
if test "${with_smbwrapper+set}" = set; then
withval="$with_smbwrapper"
case "$withval" in
yes)
- echo "$as_me:15809: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_SMBWRAPPER 1
EOF
@@ -15829,152 +11641,132 @@ EOF
WRAP=""
WRAP32=""
elif test x$ac_cv_func_syscall = xno; then
- echo "$as_me:15832: result: No syscall() -- disabling smbwrapper and smbsh" >&5
-echo "${ECHO_T}No syscall() -- disabling smbwrapper and smbsh" >&6
+ echo "$ac_t""No syscall() -- disabling smbwrapper and smbsh" 1>&6
WRAPPROG=""
WRAP=""
WRAP32=""
fi
;;
*)
- echo "$as_me:15840: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:15845: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for the AFS filesystem
-echo "$as_me:15852: checking whether to use AFS" >&5
-echo $ECHO_N "checking whether to use AFS... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use AFS""... $ac_c" 1>&6
+echo "configure:11664: checking whether to use AFS" >&5
# Check whether --with-afs or --without-afs was given.
if test "${with_afs+set}" = set; then
withval="$with_afs"
case "$withval" in
yes)
- echo "$as_me:15860: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_AFS 1
EOF
;;
*)
- echo "$as_me:15868: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:15873: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
+
-fi;
#################################################
# check for the DFS auth system
-echo "$as_me:15880: checking whether to use DCE/DFS auth" >&5
-echo $ECHO_N "checking whether to use DCE/DFS auth... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use DCE/DFS auth""... $ac_c" 1>&6
+echo "configure:11690: checking whether to use DCE/DFS auth" >&5
# Check whether --with-dfs or --without-dfs was given.
if test "${with_dfs+set}" = set; then
withval="$with_dfs"
case "$withval" in
yes)
- echo "$as_me:15888: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_DFS 1
EOF
;;
*)
- echo "$as_me:15896: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:15901: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for Kerberos IV auth system
-echo "$as_me:15908: checking whether to use Kerberos IV" >&5
-echo $ECHO_N "checking whether to use Kerberos IV... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use Kerberos IV""... $ac_c" 1>&6
+echo "configure:11715: checking whether to use Kerberos IV" >&5
# Check whether --with-krb4 or --without-krb4 was given.
if test "${with_krb4+set}" = set; then
withval="$with_krb4"
case "$withval" in
yes)
- echo "$as_me:15916: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define KRB4_AUTH 1
EOF
-echo "$as_me:15922: checking for dn_expand in -lresolv" >&5
-echo $ECHO_N "checking for dn_expand in -lresolv... $ECHO_C" >&6
-if test "${ac_cv_lib_resolv_dn_expand+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for dn_expand in -lresolv""... $ac_c" 1>&6
+echo "configure:11727: checking for dn_expand in -lresolv" >&5
+ac_lib_var=`echo resolv'_'dn_expand | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 15930 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 11735 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dn_expand ();
-int
-main ()
-{
-dn_expand ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15949: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15952: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15955: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15958: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_resolv_dn_expand=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_resolv_dn_expand=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:15969: result: $ac_cv_lib_resolv_dn_expand" >&5
-echo "${ECHO_T}$ac_cv_lib_resolv_dn_expand" >&6
-if test $ac_cv_lib_resolv_dn_expand = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBRESOLV 1
+ builtin and then its argument prototype would still apply. */
+char dn_expand();
+
+int main() {
+dn_expand()
+; return 0; }
+EOF
+if { (eval echo configure:11746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo resolv | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lresolv $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
LIBS="$LIBS -lkrb -ldes"
@@ -15982,29 +11774,26 @@ fi
LDFLAGS="$LDFLAGS -L$withval/lib"
;;
*)
- echo "$as_me:15985: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:15990: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for Kerberos 5 auth system
-echo "$as_me:15997: checking whether to use Kerberos 5" >&5
-echo $ECHO_N "checking whether to use Kerberos 5... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use Kerberos 5""... $ac_c" 1>&6
+echo "configure:11790: checking whether to use Kerberos 5" >&5
# Check whether --with-krb5 or --without-krb5 was given.
if test "${with_krb5+set}" = set; then
withval="$with_krb5"
case "$withval" in
yes)
- echo "$as_me:16005: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define KRB5_AUTH 1
EOF
@@ -16013,49 +11802,44 @@ EOF
LDFLAGS="$LDFLAGS -L$withval/lib"
;;
*)
- echo "$as_me:16016: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16021: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for automount support
-echo "$as_me:16028: checking whether to use AUTOMOUNT" >&5
-echo $ECHO_N "checking whether to use AUTOMOUNT... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use AUTOMOUNT""... $ac_c" 1>&6
+echo "configure:11818: checking whether to use AUTOMOUNT" >&5
# Check whether --with-automount or --without-automount was given.
if test "${with_automount+set}" = set; then
withval="$with_automount"
case "$withval" in
yes)
- echo "$as_me:16036: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_AUTOMOUNT 1
EOF
;;
*)
- echo "$as_me:16044: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16049: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for smbmount support
-echo "$as_me:16056: checking whether to use SMBMOUNT" >&5
-echo $ECHO_N "checking whether to use SMBMOUNT... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use SMBMOUNT""... $ac_c" 1>&6
+echo "configure:11843: checking whether to use SMBMOUNT" >&5
# Check whether --with-smbmount or --without-smbmount was given.
if test "${with_smbmount+set}" = set; then
withval="$with_smbmount"
@@ -16063,48 +11847,43 @@ if test "${with_smbmount+set}" = set; then
yes)
case "$host_os" in
*linux*)
- echo "$as_me:16066: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_SMBMOUNT 1
EOF
MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
;;
*)
- { { echo "$as_me:16075: error: not on a linux system!" >&5
-echo "$as_me: error: not on a linux system!" >&2;}
- { (exit 1); exit 1; }; }
+ { echo "configure: error: not on a linux system!" 1>&2; exit 1; }
;;
esac
;;
*)
- echo "$as_me:16082: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
MPROGS=
;;
- esac
+ esac
else
- echo "$as_me:16088: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
MPROGS=
-fi;
+fi
+
+
#################################################
# check for a PAM password database
with_pam_for_crypt=no
-echo "$as_me:16097: checking whether to use PAM password database" >&5
-echo $ECHO_N "checking whether to use PAM password database... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use PAM password database""... $ac_c" 1>&6
+echo "configure:11880: checking whether to use PAM password database" >&5
# Check whether --with-pam or --without-pam was given.
if test "${with_pam+set}" = set; then
withval="$with_pam"
case "$withval" in
yes)
- echo "$as_me:16105: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_PAM 1
EOF
@@ -16112,98 +11891,81 @@ EOF
with_pam_for_crypt=yes
;;
*)
- echo "$as_me:16115: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16120: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
# we can't build a pam module if we don't have pam.
-echo "$as_me:16126: checking for pam_get_data in -lpam" >&5
-echo $ECHO_N "checking for pam_get_data in -lpam... $ECHO_C" >&6
-if test "${ac_cv_lib_pam_pam_get_data+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for pam_get_data in -lpam""... $ac_c" 1>&6
+echo "configure:11906: checking for pam_get_data in -lpam" >&5
+ac_lib_var=`echo pam'_'pam_get_data | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lpam $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 16134 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 11914 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pam_get_data ();
-int
-main ()
-{
-pam_get_data ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16153: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16156: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16159: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16162: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_pam_pam_get_data=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_pam_pam_get_data=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:16173: result: $ac_cv_lib_pam_pam_get_data" >&5
-echo "${ECHO_T}$ac_cv_lib_pam_pam_get_data" >&6
-if test $ac_cv_lib_pam_pam_get_data = yes; then
- cat >>confdefs.h <<\EOF
+ builtin and then its argument prototype would still apply. */
+char pam_get_data();
+
+int main() {
+pam_get_data()
+; return 0; }
+EOF
+if { (eval echo configure:11925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_LIBPAM 1
EOF
+else
+ echo "$ac_t""no" 1>&6
fi
+
#################################################
# check for pam_smbpass support
-echo "$as_me:16184: checking whether to use pam_smbpass" >&5
-echo $ECHO_N "checking whether to use pam_smbpass... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use pam_smbpass""... $ac_c" 1>&6
+echo "configure:11952: checking whether to use pam_smbpass" >&5
# Check whether --with-pam_smbpass or --without-pam_smbpass was given.
if test "${with_pam_smbpass+set}" = set; then
withval="$with_pam_smbpass"
case "$withval" in
yes)
- echo "$as_me:16192: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
# Conditions under which pam_smbpass should not be built.
if test x$PICFLAG = x; then
- echo "$as_me:16198: result: No support for PIC code - disabling pam_smbpass" >&5
-echo "${ECHO_T}No support for PIC code - disabling pam_smbpass" >&6
+ echo "$ac_t""No support for PIC code - disabling pam_smbpass" 1>&6
PAM_MOD=""
elif test x$ac_cv_lib_pam_pam_get_data = xno; then
- echo "$as_me:16202: result: No libpam found -- disabling pam_smbpass" >&5
-echo "${ECHO_T}No libpam found -- disabling pam_smbpass" >&6
+ echo "$ac_t""No libpam found -- disabling pam_smbpass" 1>&6
PAM_MOD=""
else
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define WITH_PAM_SMBPASS 1
EOF
@@ -16211,146 +11973,118 @@ EOF
fi
;;
*)
- echo "$as_me:16214: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16219: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
+
-fi;
###############################################
# test for where we get crypt() from, but only
# if not using PAM
if test $with_pam_for_crypt = no; then
-
for ac_func in crypt
do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:16232: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 16238 "configure"
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:11994: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 11999 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
+ which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
-int
-main ()
-{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+$ac_func();
#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16269: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16272: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16275: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16278: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:16288: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+; return 0; }
EOF
+if { (eval echo configure:12022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
fi
done
if test x"$ac_cv_func_crypt" = x"no"; then
- echo "$as_me:16299: checking for crypt in -lcrypt" >&5
-echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6
-if test "${ac_cv_lib_crypt_crypt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
+echo "configure:12048: checking for crypt in -lcrypt" >&5
+ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lcrypt $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 16307 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 12056 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char crypt ();
-int
-main ()
-{
-crypt ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16326: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16329: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16332: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16335: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_crypt_crypt=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_crypt_crypt=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:16346: result: $ac_cv_lib_crypt_crypt" >&5
-echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6
-if test $ac_cv_lib_crypt_crypt = yes; then
+ builtin and then its argument prototype would still apply. */
+char crypt();
+
+int main() {
+crypt()
+; return 0; }
+EOF
+if { (eval echo configure:12067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
LIBS="$LIBS -lcrypt";
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_CRYPT 1
EOF
+else
+ echo "$ac_t""no" 1>&6
fi
fi
@@ -16363,51 +12097,44 @@ fi
## $with_pam_for_crypt variable as above --jerry
##
if test $with_pam_for_crypt = no; then
-echo "$as_me:16366: checking for a crypt that needs truncated salt" >&5
-echo $ECHO_N "checking for a crypt that needs truncated salt... $ECHO_C" >&6
-if test "${samba_cv_HAVE_TRUNCATED_SALT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking for a crypt that needs truncated salt""... $ac_c" 1>&6
+echo "configure:12102: checking for a crypt that needs truncated salt" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_TRUNCATED_SALT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
+
if test "$cross_compiling" = yes; then
samba_cv_HAVE_TRUNCATED_SALT=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 16376 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12111 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/crypttest.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16381: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16384: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16386: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16389: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_HAVE_TRUNCATED_SALT=no
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_TRUNCATED_SALT=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_HAVE_TRUNCATED_SALT=yes
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:16401: result: $samba_cv_HAVE_TRUNCATED_SALT" >&5
-echo "${ECHO_T}$samba_cv_HAVE_TRUNCATED_SALT" >&6
+
+echo "$ac_t""$samba_cv_HAVE_TRUNCATED_SALT" 1>&6
if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_TRUNCATED_SALT 1
EOF
fi
fi
+
########################################################################################
##
## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER
@@ -16417,161 +12144,244 @@ fi
## set the with_smbpasswd_sam as the default
with_smbpasswd_sam=yes
+
+
#################################################
# check for a TDB password database
-echo "$as_me:16422: checking whether to use TDB SAM database" >&5
-echo $ECHO_N "checking whether to use TDB SAM database... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use TDB SAM database""... $ac_c" 1>&6
+echo "configure:12153: checking whether to use TDB SAM database" >&5
# Check whether --with-tdbsam or --without-tdbsam was given.
if test "${with_tdbsam+set}" = set; then
withval="$with_tdbsam"
case "$withval" in
yes)
- echo "$as_me:16430: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_TDB_SAM 1
EOF
with_smbpasswd_sam=no
;;
*)
- echo "$as_me:16439: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16444: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for a LDAP password database
-echo "$as_me:16451: checking whether to use LDAP SAM database" >&5
-echo $ECHO_N "checking whether to use LDAP SAM database... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use LDAP SAM database""... $ac_c" 1>&6
+echo "configure:12179: checking whether to use LDAP SAM database" >&5
# Check whether --with-ldapsam or --without-ldapsam was given.
if test "${with_ldapsam+set}" = set; then
withval="$with_ldapsam"
case "$withval" in
yes)
- echo "$as_me:16459: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_LDAP_SAM 1
EOF
- LIBS="-lldap -llber -lresolv $LIBS"
+ LDAPLIBS="-lldap"
+ echo $ac_n "checking for ber_bvfree in -llber""... $ac_c" 1>&6
+echo "configure:12192: checking for ber_bvfree in -llber" >&5
+ac_lib_var=`echo lber'_'ber_bvfree | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-llber $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12200 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ber_bvfree();
+
+int main() {
+ber_bvfree()
+; return 0; }
+EOF
+if { (eval echo configure:12211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ LDAPLIBS="$LDAPLIBS -llber"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ LDAPLIBS="-lresolv $LDAPLIBS"
+ for ac_func in ldap_start_tls_s
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:12235: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 12240 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:12263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
with_smbpasswd_sam=no
+
;;
*)
- echo "$as_me:16469: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16474: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for a NISPLUS password database
-echo "$as_me:16481: checking whether to use NISPLUS SAM database" >&5
-echo $ECHO_N "checking whether to use NISPLUS SAM database... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use NISPLUS SAM database""... $ac_c" 1>&6
+echo "configure:12303: checking whether to use NISPLUS SAM database" >&5
# Check whether --with-nisplussam or --without-nisplussam was given.
if test "${with_nisplussam+set}" = set; then
withval="$with_nisplussam"
case "$withval" in
yes)
- echo "$as_me:16489: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_NISPLUS_SAM 1
EOF
with_smbpasswd_sam=no
;;
*)
- echo "$as_me:16498: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16503: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
################################################
# This test should come last because the
# smbpasswd SAM is only used if another format
# has not been defined
-echo "$as_me:16512: checking whether to use traditional smbpasswd file" >&5
-echo $ECHO_N "checking whether to use traditional smbpasswd file... $ECHO_C" >&6
+echo $ac_n "checking whether to use traditional smbpasswd file""... $ac_c" 1>&6
+echo "configure:12331: checking whether to use traditional smbpasswd file" >&5
if test $with_smbpasswd_sam = yes; then
- echo "$as_me:16515: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_SMBPASSWD_SAM 1
EOF
PDBEDIT=""
else
- echo "$as_me:16523: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
PDBEDIT=bin/pdbedit
fi
########################################################################################
##
-## END OF TESTS FOR SAM BACKENDS.
+## END OF TESTS FOR SAM BACKENDS.
##
########################################################################################
#################################################
-# check for a NISPLUS_HOME support
-echo "$as_me:16536: checking whether to use NISPLUS_HOME" >&5
-echo $ECHO_N "checking whether to use NISPLUS_HOME... $ECHO_C" >&6
-
+# check for a NISPLUS_HOME support
+echo $ac_n "checking whether to use NISPLUS_HOME""... $ac_c" 1>&6
+echo "configure:12353: checking whether to use NISPLUS_HOME" >&5
# Check whether --with-nisplus-home or --without-nisplus-home was given.
if test "${with_nisplus_home+set}" = set; then
withval="$with_nisplus_home"
case "$withval" in
yes)
- echo "$as_me:16544: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_NISPLUS_HOME 1
EOF
;;
*)
- echo "$as_me:16552: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16557: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for the secure socket layer
-echo "$as_me:16564: checking whether to use SSL" >&5
-echo $ECHO_N "checking whether to use SSL... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use SSL""... $ac_c" 1>&6
+echo "configure:12378: checking whether to use SSL" >&5
# Check whether --with-ssl or --without-ssl was given.
if test "${with_ssl+set}" = set; then
withval="$with_ssl"
case "$withval" in
yes)
- echo "$as_me:16572: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_SSL 1
EOF
@@ -16592,7 +12402,7 @@ EOF
else
- CFLAGS="-I/usr/local/ssl/include $CFLAGS"
+ CFLAGS="-I/usr/local/ssl/include $CFLAGS"
fi
@@ -16620,234 +12430,156 @@ EOF
# if test ! -d ${withval}; then
# echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
# exit 1
-# fi
+# fi
CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS" # Damn, SSLeay defines its own
;;
*)
- echo "$as_me:16629: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16634: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for syslog logging
-echo "$as_me:16641: checking whether to use syslog logging" >&5
-echo $ECHO_N "checking whether to use syslog logging... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use syslog logging""... $ac_c" 1>&6
+echo "configure:12452: checking whether to use syslog logging" >&5
# Check whether --with-syslog or --without-syslog was given.
if test "${with_syslog+set}" = set; then
withval="$with_syslog"
case "$withval" in
yes)
- echo "$as_me:16649: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_SYSLOG 1
EOF
;;
*)
- echo "$as_me:16657: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16662: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for a shared memory profiling support
-echo "$as_me:16669: checking whether to use profiling" >&5
-echo $ECHO_N "checking whether to use profiling... $ECHO_C" >&6
-
+echo $ac_n "checking whether to use profiling""... $ac_c" 1>&6
+echo "configure:12477: checking whether to use profiling" >&5
# Check whether --with-profiling-data or --without-profiling-data was given.
if test "${with_profiling_data+set}" = set; then
withval="$with_profiling_data"
case "$withval" in
yes)
- echo "$as_me:16677: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_PROFILE 1
EOF
;;
*)
- echo "$as_me:16685: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16690: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
+
-fi;
#################################################
# check for experimental disk-quotas support
QUOTAOBJS=smbd/noquotas.o
-echo "$as_me:16699: checking whether to support disk-quotas" >&5
-echo $ECHO_N "checking whether to support disk-quotas... $ECHO_C" >&6
-
+echo $ac_n "checking whether to support disk-quotas""... $ac_c" 1>&6
+echo "configure:12505: checking whether to support disk-quotas" >&5
# Check whether --with-quotas or --without-quotas was given.
if test "${with_quotas+set}" = set; then
withval="$with_quotas"
case "$withval" in
yes)
- echo "$as_me:16707: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
QUOTAOBJS=smbd/quotas.o
- case "$host_os" in
- *linux*)
- # Check for kernel 2.4.x quota braindamage...
- echo "$as_me:16713: checking for linux 2.4.x quota braindamage.." >&5
-echo $ECHO_N "checking for linux 2.4.x quota braindamage..... $ECHO_C" >&6
-if test "${samba_cv_linux_2_4_quota_braindamage+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 16720 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-#include <sys/types.h>
-#include <asm/types.h>
-#include <linux/quota.h>
-#include <mntent.h>
-#include <linux/unistd.h>
-int
-main ()
-{
-struct mem_dqblk D;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16737: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:16740: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16743: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16746: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- samba_cv_linux_2_4_quota_braindamage=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_linux_2_4_quota_braindamage=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:16756: result: $samba_cv_linux_2_4_quota_braindamage" >&5
-echo "${ECHO_T}$samba_cv_linux_2_4_quota_braindamage" >&6
-if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
- cat >>confdefs.h <<\EOF
-#define LINUX_QUOTAS_2 1
-EOF
-
-else
- cat >>confdefs.h <<\EOF
-#define LINUX_QUOTAS_1 1
-EOF
-
-fi
- ;;
- *)
- ;;
- esac
;;
*)
- echo "$as_me:16775: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16780: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
+
-fi;
#################################################
# check for experimental utmp accounting
-echo "$as_me:16788: checking whether to support utmp accounting" >&5
-echo $ECHO_N "checking whether to support utmp accounting... $ECHO_C" >&6
-
+echo $ac_n "checking whether to support utmp accounting""... $ac_c" 1>&6
+echo "configure:12529: checking whether to support utmp accounting" >&5
# Check whether --with-utmp or --without-utmp was given.
if test "${with_utmp+set}" = set; then
withval="$with_utmp"
case "$withval" in
yes)
- echo "$as_me:16796: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_UTMP 1
EOF
;;
*)
- echo "$as_me:16804: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16809: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for MS Dfs support
-echo "$as_me:16817: checking whether to support Microsoft Dfs" >&5
-echo $ECHO_N "checking whether to support Microsoft Dfs... $ECHO_C" >&6
-
+echo $ac_n "checking whether to support Microsoft Dfs""... $ac_c" 1>&6
+echo "configure:12555: checking whether to support Microsoft Dfs" >&5
# Check whether --with-msdfs or --without-msdfs was given.
if test "${with_msdfs+set}" = set; then
withval="$with_msdfs"
case "$withval" in
yes)
- echo "$as_me:16825: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define WITH_MSDFS 1
EOF
;;
*)
- echo "$as_me:16833: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16838: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# should we build libsmbclient?
LIBSMBCLIENT_SHARED=
LIBSMBCLIENT=
-echo "$as_me:16848: checking whether to build the libsmbclient shared library" >&5
-echo $ECHO_N "checking whether to build the libsmbclient shared library... $ECHO_C" >&6
-
+echo $ac_n "checking whether to build the libsmbclient shared library""... $ac_c" 1>&6
+echo "configure:12583: checking whether to build the libsmbclient shared library" >&5
# Check whether --with-libsmbclient or --without-libsmbclient was given.
if test "${with_libsmbclient+set}" = set; then
withval="$with_libsmbclient"
@@ -16856,43 +12588,40 @@ if test "${with_libsmbclient+set}" = set; then
if test $BLDSHARED = true; then
LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
LIBSMBCLIENT=libsmbclient
- echo "$as_me:16859: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
else
- echo "$as_me:16862: result: no shared library support" >&5
-echo "${ECHO_T}no shared library support" >&6
+ echo "$ac_t""no shared library support" 1>&6
fi
;;
*)
- echo "$as_me:16867: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
;;
- esac
+ esac
else
- echo "$as_me:16872: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# these tests are taken from the GNU fileutils package
-{ echo "$as_me:16879: checking how to get filesystem space usage..." >&5
-echo "$as_me: checking how to get filesystem space usage..." >&6;}
+echo "checking how to get filesystem space usage" 1>&6
+echo "configure:12610: checking how to get filesystem space usage" >&5
space=no
# Test for statvfs64.
if test $space = no; then
# SVR4
- echo "$as_me:16886: checking statvfs64 function (SVR4)" >&5
-echo $ECHO_N "checking statvfs64 function (SVR4)... $ECHO_C" >&6
-if test "${fu_cv_sys_stat_statvfs64+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking statvfs64 function (SVR4)""... $ac_c" 1>&6
+echo "configure:12617: checking statvfs64 function (SVR4)" >&5
+if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs64'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_statvfs64=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 16895 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12625 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -16905,33 +12634,25 @@ else
struct statvfs64 fsd;
exit (statvfs64 (".", &fsd));
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16910: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16913: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16915: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16918: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_statvfs64=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statvfs64=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_statvfs64=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:16930: result: $fu_cv_sys_stat_statvfs64" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statvfs64" >&6
+
+echo "$ac_t""$fu_cv_sys_stat_statvfs64" 1>&6
if test $fu_cv_sys_stat_statvfs64 = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATVFS64 1
EOF
@@ -16946,49 +12667,36 @@ fi
# is what it gets when this test fails.
if test $space = no; then
# SVR4
- echo "$as_me:16949: checking statvfs function (SVR4)" >&5
-echo $ECHO_N "checking statvfs function (SVR4)... $ECHO_C" >&6
-if test "${fu_cv_sys_stat_statvfs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking statvfs function (SVR4)""... $ac_c" 1>&6
+echo "configure:12672: checking statvfs function (SVR4)" >&5
+if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 16955 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12677 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/statvfs.h>
-int
-main ()
-{
+int main() {
struct statvfs fsd; statvfs (0, &fsd);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16968: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:16971: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16974: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:16977: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:12685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
fu_cv_sys_stat_statvfs=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statvfs=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ fu_cv_sys_stat_statvfs=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:16987: result: $fu_cv_sys_stat_statvfs" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statvfs" >&6
+
+echo "$ac_t""$fu_cv_sys_stat_statvfs" 1>&6
if test $fu_cv_sys_stat_statvfs = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATVFS 1
EOF
@@ -16997,16 +12705,16 @@ fi
if test $space = no; then
# DEC Alpha running OSF/1
- echo "$as_me:17000: checking for 3-argument statfs function (DEC OSF/1)" >&5
-echo $ECHO_N "checking for 3-argument statfs function (DEC OSF/1)... $ECHO_C" >&6
- if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for 3-argument statfs function (DEC OSF/1)""... $ac_c" 1>&6
+echo "configure:12710: checking for 3-argument statfs function (DEC OSF/1)" >&5
+ if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs3_osf1'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_statfs3_osf1=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17009 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12718 "configure"
#include "confdefs.h"
#include <sys/param.h>
@@ -17018,34 +12726,25 @@ else
fsd.f_fsize = 0;
exit (statfs (".", &fsd, sizeof (struct statfs)));
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17023: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17026: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17028: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17031: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_statfs3_osf1=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statfs3_osf1=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_statfs3_osf1=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
- echo "$as_me:17044: result: $fu_cv_sys_stat_statfs3_osf1" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statfs3_osf1" >&6
+ echo "$ac_t""$fu_cv_sys_stat_statfs3_osf1" 1>&6
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATFS3_OSF1 1
EOF
@@ -17054,16 +12753,16 @@ fi
if test $space = no; then
# AIX
- echo "$as_me:17057: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
-echo $ECHO_N "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)... $ECHO_C" >&6
- if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)""... $ac_c" 1>&6
+echo "configure:12758: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+ if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_bsize'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_statfs2_bsize=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17066 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12766 "configure"
#include "confdefs.h"
#ifdef HAVE_SYS_PARAM_H
@@ -17081,34 +12780,25 @@ else
fsd.f_bsize = 0;
exit (statfs (".", &fsd));
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17086: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17089: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17091: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17094: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_statfs2_bsize=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statfs2_bsize=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_statfs2_bsize=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
- echo "$as_me:17107: result: $fu_cv_sys_stat_statfs2_bsize" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statfs2_bsize" >&6
+ echo "$ac_t""$fu_cv_sys_stat_statfs2_bsize" 1>&6
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATFS2_BSIZE 1
EOF
@@ -17117,16 +12807,16 @@ fi
if test $space = no; then
# SVR3
- echo "$as_me:17120: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
-echo $ECHO_N "checking for four-argument statfs (AIX-3.2.5, SVR3)... $ECHO_C" >&6
- if test "${fu_cv_sys_stat_statfs4+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for four-argument statfs (AIX-3.2.5, SVR3)""... $ac_c" 1>&6
+echo "configure:12812: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+ if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs4'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_statfs4=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17129 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12820 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/statfs.h>
@@ -17135,34 +12825,25 @@ else
struct statfs fsd;
exit (statfs (".", &fsd, sizeof fsd, 0));
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17140: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17143: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17145: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17148: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_statfs4=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statfs4=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_statfs4=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
- echo "$as_me:17161: result: $fu_cv_sys_stat_statfs4" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statfs4" >&6
+ echo "$ac_t""$fu_cv_sys_stat_statfs4" 1>&6
if test $fu_cv_sys_stat_statfs4 = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATFS4 1
EOF
@@ -17171,16 +12852,16 @@ fi
if test $space = no; then
# 4.4BSD and NetBSD
- echo "$as_me:17174: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
-echo $ECHO_N "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)... $ECHO_C" >&6
- if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)""... $ac_c" 1>&6
+echo "configure:12857: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+ if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_fsize'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_statfs2_fsize=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17183 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12865 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_PARAM_H
@@ -17195,34 +12876,25 @@ else
fsd.f_fsize = 0;
exit (statfs (".", &fsd));
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17200: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17203: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17205: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17208: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_statfs2_fsize=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_statfs2_fsize=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_statfs2_fsize=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
- echo "$as_me:17221: result: $fu_cv_sys_stat_statfs2_fsize" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_statfs2_fsize" >&6
+ echo "$ac_t""$fu_cv_sys_stat_statfs2_fsize" 1>&6
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATFS2_FSIZE 1
EOF
@@ -17231,16 +12903,16 @@ fi
if test $space = no; then
# Ultrix
- echo "$as_me:17234: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
-echo $ECHO_N "checking for two-argument statfs with struct fs_data (Ultrix)... $ECHO_C" >&6
- if test "${fu_cv_sys_stat_fs_data+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for two-argument statfs with struct fs_data (Ultrix)""... $ac_c" 1>&6
+echo "configure:12908: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+ if eval "test \"`echo '$''{'fu_cv_sys_stat_fs_data'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
fu_cv_sys_stat_fs_data=no
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17243 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 12916 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_PARAM_H
@@ -17259,34 +12931,25 @@ else
0 for not mounted, -1 for failure. */
exit (statfs (".", &fsd) != 1);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17264: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17267: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17269: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17272: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:12936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
fu_cv_sys_stat_fs_data=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fu_cv_sys_stat_fs_data=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ fu_cv_sys_stat_fs_data=no
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
- echo "$as_me:17285: result: $fu_cv_sys_stat_fs_data" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_fs_data" >&6
+ echo "$ac_t""$fu_cv_sys_stat_fs_data" 1>&6
if test $fu_cv_sys_stat_fs_data = yes; then
space=yes
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define STAT_STATFS2_FS_DATA 1
EOF
@@ -17301,10 +12964,10 @@ fi
# If we don't have all of these then disable large
# file support.
#
-echo "$as_me:17304: checking if large file support can be enabled" >&5
-echo $ECHO_N "checking if large file support can be enabled... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line 17307 "configure"
+echo $ac_n "checking if large file support can be enabled""... $ac_c" 1>&6
+echo "configure:12969: checking if large file support can be enabled" >&5
+cat > conftest.$ac_ext <<EOF
+#line 12971 "configure"
#include "confdefs.h"
#if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
@@ -17313,79 +12976,66 @@ cat >conftest.$ac_ext <<_ACEOF
__COMPILE_ERROR_
#endif
-int
-main ()
-{
+int main() {
int i
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17325: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:17328: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17331: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17334: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:12984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
- echo "$as_me:17344: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_EXPLICIT_LARGEFILE_SUPPORT 1
EOF
else
- echo "$as_me:17351: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
fi
# Check whether --with-spinlocks or --without-spinlocks was given.
if test "${with_spinlocks+set}" = set; then
withval="$with_spinlocks"
+ :
+fi
-fi;
if test "x$with_spinlocks" = "xyes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define USE_SPINLOCKS 1
EOF
+
case "$host_cpu" in
sparc)
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define SPARC_SPINLOCKS 1
EOF
;;
i386|i486|i586|i686)
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define INTEL_SPINLOCKS 1
EOF
;;
mips)
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define MIPS_SPINLOCKS 1
EOF
;;
powerpc)
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define POWERPC_SPINLOCKS 1
EOF
@@ -17396,9 +13046,8 @@ fi
#################################################
# check for ACL support
-echo "$as_me:17399: checking whether to support ACLs" >&5
-echo $ECHO_N "checking whether to support ACLs... $ECHO_C" >&6
-
+echo $ac_n "checking whether to support ACLs""... $ac_c" 1>&6
+echo "configure:13051: checking whether to support ACLs" >&5
# Check whether --with-acl-support or --without-acl-support was given.
if test "${with_acl_support+set}" = set; then
withval="$with_acl_support"
@@ -17407,205 +13056,160 @@ if test "${with_acl_support+set}" = set; then
case "$host_os" in
*sysv5*)
- echo "$as_me:17410: result: Using UnixWare ACLs" >&5
-echo "${ECHO_T}Using UnixWare ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using UnixWare ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_UNIXWARE_ACLS 1
EOF
;;
*solaris*)
- echo "$as_me:17418: result: Using solaris ACLs" >&5
-echo "${ECHO_T}Using solaris ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using solaris ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_SOLARIS_ACLS 1
EOF
;;
*hpux*)
- echo "$as_me:17426: result: Using HPUX ACLs" >&5
-echo "${ECHO_T}Using HPUX ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using HPUX ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_HPUX_ACLS 1
EOF
;;
*irix*)
- echo "$as_me:17434: result: Using IRIX ACLs" >&5
-echo "${ECHO_T}Using IRIX ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using IRIX ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_IRIX_ACLS 1
EOF
;;
*aix*)
- echo "$as_me:17442: result: Using AIX ACLs" >&5
-echo "${ECHO_T}Using AIX ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using AIX ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_AIX_ACLS 1
EOF
;;
*osf*)
- echo "$as_me:17450: result: Using Tru64 ACLs" >&5
-echo "${ECHO_T}Using Tru64 ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using Tru64 ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_TRU64_ACLS 1
EOF
LIBS="$LIBS -lpacl"
;;
*)
-
-echo "$as_me:17460: checking for acl_get_file in -lacl" >&5
-echo $ECHO_N "checking for acl_get_file in -lacl... $ECHO_C" >&6
-if test "${ac_cv_lib_acl_acl_get_file+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for acl_get_file in -lacl""... $ac_c" 1>&6
+echo "configure:13104: checking for acl_get_file in -lacl" >&5
+ac_lib_var=`echo acl'_'acl_get_file | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lacl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 17468 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 13112 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char acl_get_file ();
-int
-main ()
-{
-acl_get_file ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17487: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17490: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17493: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17496: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_acl_acl_get_file=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_acl_acl_get_file=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:17507: result: $ac_cv_lib_acl_acl_get_file" >&5
-echo "${ECHO_T}$ac_cv_lib_acl_acl_get_file" >&6
-if test $ac_cv_lib_acl_acl_get_file = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBACL 1
+ builtin and then its argument prototype would still apply. */
+char acl_get_file();
+
+int main() {
+acl_get_file()
+; return 0; }
+EOF
+if { (eval echo configure:13123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo acl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
LIBS="-lacl $LIBS"
+else
+ echo "$ac_t""no" 1>&6
fi
- echo "$as_me:17518: checking for ACL support" >&5
-echo $ECHO_N "checking for ACL support... $ECHO_C" >&6
-if test "${samba_cv_HAVE_POSIX_ACLS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for ACL support""... $ac_c" 1>&6
+echo "configure:13151: checking for ACL support" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_POSIX_ACLS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 17525 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 13157 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/acl.h>
-int
-main ()
-{
+int main() {
acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17538: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17541: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17544: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17547: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:13165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
samba_cv_HAVE_POSIX_ACLS=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_POSIX_ACLS=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_POSIX_ACLS=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:17557: result: $samba_cv_HAVE_POSIX_ACLS" >&5
-echo "${ECHO_T}$samba_cv_HAVE_POSIX_ACLS" >&6
+
+echo "$ac_t""$samba_cv_HAVE_POSIX_ACLS" 1>&6
if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
- echo "$as_me:17560: result: Using posix ACLs" >&5
-echo "${ECHO_T}Using posix ACLs" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""Using posix ACLs" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_POSIX_ACLS 1
EOF
- echo "$as_me:17566: checking for acl_get_perm_np" >&5
-echo $ECHO_N "checking for acl_get_perm_np... $ECHO_C" >&6
-if test "${samba_cv_HAVE_ACL_GET_PERM_NP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for acl_get_perm_np""... $ac_c" 1>&6
+echo "configure:13185: checking for acl_get_perm_np" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_ACL_GET_PERM_NP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 17573 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 13191 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/acl.h>
-int
-main ()
-{
+int main() {
acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17586: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17589: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17592: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17595: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+; return 0; }
+EOF
+if { (eval echo configure:13199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
samba_cv_HAVE_ACL_GET_PERM_NP=yes
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_HAVE_ACL_GET_PERM_NP=no
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_HAVE_ACL_GET_PERM_NP=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
fi
-echo "$as_me:17605: result: $samba_cv_HAVE_ACL_GET_PERM_NP" >&5
-echo "${ECHO_T}$samba_cv_HAVE_ACL_GET_PERM_NP" >&6
+
+echo "$ac_t""$samba_cv_HAVE_ACL_GET_PERM_NP" 1>&6
if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_ACL_GET_PERM_NP 1
EOF
@@ -17615,23 +13219,22 @@ EOF
esac
;;
*)
- echo "$as_me:17618: result: no" >&5
-echo "${ECHO_T}no" >&6
- cat >>confdefs.h <<\EOF
+ echo "$ac_t""no" 1>&6
+ cat >> confdefs.h <<\EOF
#define HAVE_NO_ACLS 1
EOF
;;
- esac
+ esac
else
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_NO_ACLS 1
EOF
- echo "$as_me:17631: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
+
+fi
-fi;
#################################################
# check for the historical SAMBA installation
@@ -17646,12 +13249,12 @@ fi
# build and install client programs (WINBIND_TARGETS), sbin programs
# (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
-echo "$as_me:17649: checking whether to build winbind" >&5
-echo $ECHO_N "checking whether to build winbind... $ECHO_C" >&6
+echo $ac_n "checking whether to build winbind""... $ac_c" 1>&6
+echo "configure:13254: checking whether to build winbind" >&5
# Initially, the value of $host_os decides whether winbind is supported
-case "$host_os" in
+case "$host_os" in
*linux*|*irix*)
HAVE_WINBIND=yes
;;
@@ -17663,11 +13266,14 @@ case "$host_os" in
*hpux11*)
HAVE_WINBIND=yes
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
+ ;;
+ *aix4*)
+ HAVE_WINBIND=yes
;;
*)
HAVE_WINBIND=no
winbind_no_reason=", unsupported on $host_os"
- ;;
+ ;;
esac
# Check the setting of --with-winbindd
@@ -17675,7 +13281,7 @@ esac
# Check whether --with-winbind or --without-winbind was given.
if test "${with_winbind+set}" = set; then
withval="$with_winbind"
-
+
case "$withval" in
yes)
HAVE_WINBIND=yes
@@ -17684,8 +13290,9 @@ if test "${with_winbind+set}" = set; then
HAVE_WINBIND=no
winbind_reason=""
;;
- esac
-fi;
+ esac
+fi
+
# We need unix domain sockets for winbind
@@ -17700,8 +13307,7 @@ fi
if test x"$HAVE_WINBIND" = x"yes"; then
- echo "$as_me:17703: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ echo "$ac_t""yes" 1>&6
WINBIND_TARGETS="bin/wbinfo"
WINBIND_STARGETS="bin/winbindd"
@@ -17714,14 +13320,14 @@ echo "${ECHO_T}yes" >&6
;;
esac
+
case "$with_pam" in
yes)
WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
;;
esac
else
- echo "$as_me:17723: result: no$winbind_no_reason" >&5
-echo "${ECHO_T}no$winbind_no_reason" >&6
+ echo "$ac_t""no$winbind_no_reason" 1>&6
WINBIND_TARGETS=""
WINBIND_STARGETS=""
@@ -17729,19 +13335,35 @@ echo "${ECHO_T}no$winbind_no_reason" >&6
WINBIND_PAM_TARGETS=""
fi
+
+# Check whether --with-winbind or --without-winbind was given.
+if test "${with_winbind+set}" = set; then
+ withval="$with_winbind"
+
+ case "$withval" in
+ yes)
+ WITH_WINBIND_AUTH_CRAP=yes
+ ;;
+ no)
+ WITH_WINBIND_AUTH_CRAP=no
+ ;;
+ esac
+fi
+
+
# Check for FreeBSD problem with getgroups
# It returns EGID too many times in the list of groups
# and causes a security problem
-echo "$as_me:17735: checking whether or not getgroups returns EGID too many times" >&5
-echo $ECHO_N "checking whether or not getgroups returns EGID too many times... $ECHO_C" >&6
-if test "${samba_cv_have_getgroups_too_many_egids+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+echo $ac_n "checking whether or not getgroups returns EGID too many times""... $ac_c" 1>&6
+echo "configure:13359: checking whether or not getgroups returns EGID too many times" >&5
+if eval "test \"`echo '$''{'samba_cv_have_getgroups_too_many_egids'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
samba_cv_have_getgroups_too_many_egids=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17744 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 13367 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -17756,32 +13378,24 @@ int main(int argc, char *argv[])
/* Could actually pass back the number of EGIDs there ... */
exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0);
}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17761: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17764: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17766: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17769: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+EOF
+if { (eval echo configure:13383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
samba_cv_have_getgroups_too_many_egids=no
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-samba_cv_have_getgroups_too_many_egids=yes
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ samba_cv_have_getgroups_too_many_egids=yes
fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -fr conftest*
fi
+
fi
-echo "$as_me:17781: result: $samba_cv_have_getgroups_too_many_egids" >&5
-echo "${ECHO_T}$samba_cv_have_getgroups_too_many_egids" >&6
+
+echo "$ac_t""$samba_cv_have_getgroups_too_many_egids" 1>&6
if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then
- cat >>confdefs.h <<\EOF
+ cat >> confdefs.h <<\EOF
#define HAVE_GETGROUPS_TOO_MANY_EGIDS 1
EOF
@@ -17789,13 +13403,101 @@ fi
# Substitution time!
+
+
+
+
+
+
+
+# Solaris has some extra fields in struct passwd that need to be
+# initialised otherwise nscd crashes. Unfortunately autoconf < 2.50
+# doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
+# this.
+
+#AC_CHECK_MEMBER(struct passwd.pw_comment,
+# AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
+# [#include <pwd.h>])
+
+echo $ac_n "checking whether struct passwd has pw_comment""... $ac_c" 1>&6
+echo "configure:13424: checking whether struct passwd has pw_comment" >&5
+if eval "test \"`echo '$''{'samba_cv_passwd_pw_comment'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 13430 "configure"
+#include "confdefs.h"
+#include <pwd.h>
+int main() {
+struct passwd p; p.pw_comment;
+; return 0; }
+EOF
+if { (eval echo configure:13437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ samba_cv_passwd_pw_comment=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_passwd_pw_comment=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$samba_cv_passwd_pw_comment" 1>&6
+if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PASSWD_PW_COMMENT 1
+EOF
+
+fi
+
+#AC_CHECK_MEMBER(struct passwd.pw_age,
+# AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
+# [#include <pwd.h>])
+
+echo $ac_n "checking whether struct passwd has pw_age""... $ac_c" 1>&6
+echo "configure:13462: checking whether struct passwd has pw_age" >&5
+if eval "test \"`echo '$''{'samba_cv_passwd_pw_age'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 13468 "configure"
+#include "confdefs.h"
+#include <pwd.h>
+int main() {
+struct passwd p; p.pw_age;
+; return 0; }
+EOF
+if { (eval echo configure:13475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ samba_cv_passwd_pw_age=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ samba_cv_passwd_pw_age=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$samba_cv_passwd_pw_age" 1>&6
+if test x"$samba_cv_passwd_pw_age" = x"yes"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PASSWD_PW_AGE 1
+EOF
+
+fi
+
#################################################
# Check to see if we should use the included popt
# Check whether --with-included-popt or --without-included-popt was given.
if test "${with_included_popt+set}" = set; then
withval="$with_included_popt"
-
+
case "$withval" in
yes)
INCLUDED_POPT=yes
@@ -17803,984 +13505,507 @@ if test "${with_included_popt+set}" = set; then
no)
INCLUDED_POPT=no
;;
- esac
-fi;
+ esac
+fi
+
if test x"$INCLUDED_POPT" != x"yes"; then
- echo "$as_me:17809: checking for poptGetContext in -lpopt" >&5
-echo $ECHO_N "checking for poptGetContext in -lpopt... $ECHO_C" >&6
-if test "${ac_cv_lib_popt_poptGetContext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6
+echo "configure:13514: checking for poptGetContext in -lpopt" >&5
+ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_check_lib_save_LIBS=$LIBS
+ ac_save_LIBS="$LIBS"
LIBS="-lpopt $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 17817 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 13522 "configure"
#include "confdefs.h"
-
/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char poptGetContext ();
-int
-main ()
-{
-poptGetContext ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17836: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17839: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17842: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17845: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_popt_poptGetContext=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_popt_poptGetContext=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:17856: result: $ac_cv_lib_popt_poptGetContext" >&5
-echo "${ECHO_T}$ac_cv_lib_popt_poptGetContext" >&6
-if test $ac_cv_lib_popt_poptGetContext = yes; then
+ builtin and then its argument prototype would still apply. */
+char poptGetContext();
+
+int main() {
+poptGetContext()
+; return 0; }
+EOF
+if { (eval echo configure:13533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
INCLUDED_POPT=no
else
- INCLUDED_POPT=yes
+ echo "$ac_t""no" 1>&6
+INCLUDED_POPT=yes
fi
fi
-echo "$as_me:17866: checking whether to use included popt" >&5
-echo $ECHO_N "checking whether to use included popt... $ECHO_C" >&6
+echo $ac_n "checking whether to use included popt""... $ac_c" 1>&6
+echo "configure:13557: checking whether to use included popt" >&5
if test x"$INCLUDED_POPT" = x"yes"; then
- echo "$as_me:17869: result: $srcdir/popt" >&5
-echo "${ECHO_T}$srcdir/popt" >&6
+ echo "$ac_t""$srcdir/popt" 1>&6
BUILD_POPT='$(POPT_OBJS)'
FLAGS1="-I$srcdir/popt"
else
- echo "$as_me:17874: result: no" >&5
-echo "${ECHO_T}no" >&6
+ echo "$ac_t""no" 1>&6
LIBS="$LIBS -lpopt"
fi
+
+
#################################################
# final configure stuff
-echo "$as_me:17881: checking configure summary" >&5
-echo $ECHO_N "checking configure summary... $ECHO_C" >&6
+echo $ac_n "checking configure summary""... $ac_c" 1>&6
+echo "configure:13572: checking configure summary" >&5
if test "$cross_compiling" = yes; then
- { echo "$as_me:17884: WARNING: cannot run when cross-compiling" >&5
-echo "$as_me: WARNING: cannot run when cross-compiling" >&2;}
+ echo "configure: warning: cannot run when cross-compiling" 1>&2
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 17888 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 13577 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/summary.c"
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17893: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:17896: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17898: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:17901: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "$as_me:17903: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:17909: error: summary failure. Aborting config" >&5
-echo "$as_me: error: summary failure. Aborting config" >&2;}
- { (exit 1); exit 1; }; }; exit 1;
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+EOF
+if { (eval echo configure:13581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ echo "$ac_t""yes" 1>&6
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ { echo "configure: error: summary failure. Aborting config" 1>&2; exit 1; }; exit 1;
+fi
+rm -fr conftest*
fi
+
builddir=`pwd`
-ac_config_files="$ac_config_files include/stamp-h Makefile"
-cat >confcache <<\_ACEOF
+
+trap '' 1 2 15
+cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
#
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
+EOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, don't put newlines in cache variables' values.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if cmp -s $cache_file confcache; then :; else
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
else
echo "not updating unwritable cache $cache_file"
fi
fi
rm -f confcache
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
fi
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
DEFS=-DHAVE_CONFIG_H
+# Without the "./", some shells look in PATH for config.status.
: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:17998: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
# Generated automatically by configure.
# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-ac_cs_invocation="\$0 \$@"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-exec 6>&1
-
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\EOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+# configure, is in ./config.log if it exists.
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <bug-autoconf@gnu.org>."
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.52,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- shift
- set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
- shift
- ;;
- -*);;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_need_defaults=false;;
- esac
-
- case $1 in
- # Handling of the options.
-EOF
-cat >>$CONFIG_STATUS <<EOF
+ case "\$ac_option" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-EOF
-cat >>$CONFIG_STATUS <<\EOF
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:18171: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- shift
- CONFIG_FILES="$CONFIG_FILES $1"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- shift
- CONFIG_HEADERS="$CONFIG_HEADERS $1"
- ac_need_defaults=false;;
-
- # This is an error.
- -*) { { echo "$as_me:18190: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
esac
- shift
done
-exec 5>>config.log
-cat >&5 << _ACEOF
-
-## ----------------------- ##
-## Running config.status. ##
-## ----------------------- ##
-
-This file was extended by $as_me 2.52, executed with
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- > $ac_cs_invocation
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
-_ACEOF
+trap 'rm -fr `echo "include/stamp-h Makefile script/findsmb include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
+cat >> $CONFIG_STATUS <<EOF
-cat >>$CONFIG_STATUS <<\EOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "include/stamp-h" ) CONFIG_FILES="$CONFIG_FILES include/stamp-h" ;;
- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
- *) { { echo "$as_me:18228: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=$TMPDIR/cs$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
-}
-
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-
-#
-# CONFIG_FILES section.
-#
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@codepagedir@%$codepagedir%g
+s%@configdir@%$configdir%g
+s%@lockdir@%$lockdir%g
+s%@piddir@%$piddir%g
+s%@logfilebase@%$logfilebase%g
+s%@privatedir@%$privatedir%g
+s%@swatdir@%$swatdir%g
+s%@RUNPROG@%$RUNPROG%g
+s%@MPROGS@%$MPROGS%g
+s%@LDSHFLAGS@%$LDSHFLAGS%g
+s%@SONAMEFLAG@%$SONAMEFLAG%g
+s%@SHLD@%$SHLD%g
+s%@HOST_OS@%$HOST_OS%g
+s%@PAM_MOD@%$PAM_MOD%g
+s%@PDBEDIT@%$PDBEDIT%g
+s%@WRAP@%$WRAP%g
+s%@WRAP32@%$WRAP32%g
+s%@WRAPPROG@%$WRAPPROG%g
+s%@PICFLAG@%$PICFLAG%g
+s%@PICSUFFIX@%$PICSUFFIX%g
+s%@SHLIBEXT@%$SHLIBEXT%g
+s%@BLDSHARED@%$BLDSHARED%g
+s%@LIBSMBCLIENT_SHARED@%$LIBSMBCLIENT_SHARED%g
+s%@LIBSMBCLIENT@%$LIBSMBCLIENT%g
+s%@CC@%$CC%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@AWK@%$AWK%g
+s%@passwd_program@%$passwd_program%g
+s%@BROKEN_CC@%$BROKEN_CC%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@target@%$target%g
+s%@target_alias@%$target_alias%g
+s%@target_cpu@%$target_cpu%g
+s%@target_vendor@%$target_vendor%g
+s%@target_os@%$target_os%g
+s%@build@%$build%g
+s%@build_alias@%$build_alias%g
+s%@build_cpu@%$build_cpu%g
+s%@build_vendor@%$build_vendor%g
+s%@build_os@%$build_os%g
+s%@CPP@%$CPP%g
+s%@CUPS_CONFIG@%$CUPS_CONFIG%g
+s%@LIBOBJS@%$LIBOBJS%g
+s%@TERMLIBS@%$TERMLIBS%g
+s%@TERMLDFLAGS@%$TERMLDFLAGS%g
+s%@ROFF@%$ROFF%g
+s%@DYNEXP@%$DYNEXP%g
+s%@LDAPLIBS@%$LDAPLIBS%g
+s%@QUOTAOBJS@%$QUOTAOBJS%g
+s%@WINBIND_TARGETS@%$WINBIND_TARGETS%g
+s%@WINBIND_STARGETS@%$WINBIND_STARGETS%g
+s%@WINBIND_LTARGETS@%$WINBIND_LTARGETS%g
+s%@WINBIND_PAM_TARGETS@%$WINBIND_PAM_TARGETS%g
+s%@WINBIND_NSS_EXTRA_OBJS@%$WINBIND_NSS_EXTRA_OBJS%g
+s%@WINBIND_NSS_EXTRA_LIBS@%$WINBIND_NSS_EXTRA_LIBS%g
+s%@BUILD_POPT@%$BUILD_POPT%g
+s%@FLAGS1@%$FLAGS1%g
+s%@builddir@%$builddir%g
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@DEFS@,$DEFS,;t t
-s,@LIBS@,$LIBS,;t t
-s,@codepagedir@,$codepagedir,;t t
-s,@configdir@,$configdir,;t t
-s,@lockdir@,$lockdir,;t t
-s,@piddir@,$piddir,;t t
-s,@logfilebase@,$logfilebase,;t t
-s,@privatedir@,$privatedir,;t t
-s,@swatdir@,$swatdir,;t t
-s,@RUNPROG@,$RUNPROG,;t t
-s,@MPROGS@,$MPROGS,;t t
-s,@LDSHFLAGS@,$LDSHFLAGS,;t t
-s,@SONAMEFLAG@,$SONAMEFLAG,;t t
-s,@SHLD@,$SHLD,;t t
-s,@HOST_OS@,$HOST_OS,;t t
-s,@PAM_MOD@,$PAM_MOD,;t t
-s,@PDBEDIT@,$PDBEDIT,;t t
-s,@WRAP@,$WRAP,;t t
-s,@WRAP32@,$WRAP32,;t t
-s,@WRAPPROG@,$WRAPPROG,;t t
-s,@PICFLAG@,$PICFLAG,;t t
-s,@PICSUFFIX@,$PICSUFFIX,;t t
-s,@SHLIBEXT@,$SHLIBEXT,;t t
-s,@BLDSHARED@,$BLDSHARED,;t t
-s,@LIBSMBCLIENT_SHARED@,$LIBSMBCLIENT_SHARED,;t t
-s,@LIBSMBCLIENT@,$LIBSMBCLIENT,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@AWK@,$AWK,;t t
-s,@BROKEN_CC@,$BROKEN_CC,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
-s,@CPP@,$CPP,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@TERMLIBS@,$TERMLIBS,;t t
-s,@TERMLDFLAGS@,$TERMLDFLAGS,;t t
-s,@ROFF@,$ROFF,;t t
-s,@DYNEXP@,$DYNEXP,;t t
-s,@QUOTAOBJS@,$QUOTAOBJS,;t t
-s,@WINBIND_TARGETS@,$WINBIND_TARGETS,;t t
-s,@WINBIND_STARGETS@,$WINBIND_STARGETS,;t t
-s,@WINBIND_LTARGETS@,$WINBIND_LTARGETS,;t t
-s,@WINBIND_PAM_TARGETS@,$WINBIND_PAM_TARGETS,;t t
-s,@WINBIND_NSS_EXTRA_OBJS@,$WINBIND_NSS_EXTRA_OBJS,;t t
-s,@WINBIND_NSS_EXTRA_LIBS@,$WINBIND_NSS_EXTRA_LIBS,;t t
-s,@BUILD_POPT@,$BUILD_POPT,;t t
-s,@FLAGS1@,$FLAGS1,;t t
-s,@builddir@,$builddir,;t t
CEOF
-
EOF
- cat >>$CONFIG_STATUS <<\EOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi
-fi # test -n "$CONFIG_FILES"
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"include/stamp-h Makefile script/findsmb"}
EOF
-cat >>$CONFIG_STATUS <<\EOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
esac
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
# A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
else
ac_dir_suffix= ac_dots=
fi
- case $srcdir in
- .) ac_srcdir=.
- if test -z "$ac_dots"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* )
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
*) # Relative path.
- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_dots$srcdir ;;
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_dots$INSTALL ;;
+ case "$ac_given_INSTALL" in
+ [/$]*) INSTALL="$ac_given_INSTALL" ;;
+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
esac
- if test x"$ac_file" != x-; then
- { echo "$as_me:18487: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- configure_input="Generated automatically from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:18505: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:18518: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-EOF
-cat >>$CONFIG_STATUS <<EOF
- sed "$ac_vpsub
-$extrasub
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
-#
-# CONFIG_HEADER section.
-#
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='$,\1#\2define\3'
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
ac_uC=' '
-ac_uD=',;t'
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="include/config.h"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:18579: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:18590: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:18603: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
-EOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h. The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status. Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\EOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
-t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-EOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless. Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
+ echo creating $ac_file
+
+ rm -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
# This sed command replaces #undef with comments. This is necessary, for
# example, in the case of _POSIX_SOURCE, which is predefined and required
# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\EOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
EOF
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo ' :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
- # Write a limited-size here document to $tmp/defines.sed.
- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/defines.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo ' fi # egrep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
+while :
do
- # Write a limited-size here document to $tmp/undefs.sed.
- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
echo 'CEOF
- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
- rm -f conftest.undefs
- mv conftest.tail conftest.undefs
+ sed -f conftest.frag conftest.in > conftest.out
+ rm -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\EOF
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- if test x"$ac_file" = x-; then
- echo "/* Generated automatically by configure. */" >$tmp/config.h
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+ rm -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ rm -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ rm -f conftest.h
else
- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
- fi
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:18720: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
- else
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- fi
- rm -f $ac_file
- mv $tmp/config.h $ac_file
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
fi
- else
- cat $tmp/config.h
- rm -f $tmp/config.h
+ rm -f $ac_file
+ mv conftest.h $ac_file
fi
-done
+fi; done
+
EOF
+cat >> $CONFIG_STATUS <<EOF
-cat >>$CONFIG_STATUS <<\EOF
+EOF
+cat >> $CONFIG_STATUS <<\EOF
-{ (exit 0); exit 0; }
+exit 0
EOF
chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
diff --git a/source/configure.in b/source/configure.in
index c8666965611..bdadabcee91 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -182,6 +182,11 @@ dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_AWK
+dnl Check if we use GNU ld
+LD=ld
+AC_PROG_LD_GNU
+AC_PATH_PROG(passwd_program, passwd, /bin/passwd)
+AC_SUBST(passwd_program)
dnl Check if C compiler understands -c and -o at the same time
AC_PROG_CC_C_O
@@ -302,7 +307,6 @@ case "$host_os" in
;;
esac
else
- DYNEXP="-dc -dp"
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
AC_DEFINE(_LARGEFILE64_SOURCE)
AC_DEFINE(_FILE_OFFSET_BITS,64)
@@ -422,8 +426,9 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
+AC_CHECK_HEADERS(stdlib.h string.h strings.h syslog.h sys/file.h)
AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
-AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
+AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h)
AC_CHECK_HEADERS(syslog.h sys/syslog.h sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
@@ -482,16 +487,17 @@ AC_CHECK_TYPE(wchar_t, unsigned short)
############################################
# for cups support we need libcups, and a handful of header files
-AC_CHECK_LIB(cups,httpConnect)
+AC_ARG_ENABLE(cups,
+[ --enable-cups Turn on CUPS support (default=auto)])
-# I wonder if there is a nicer way of doing this?
+if test x$enable_cups != xno; then
+ AC_PATH_PROG(CUPS_CONFIG, cups-config)
-if test x"$ac_cv_lib_cups_httpConnect" = x"yes"; then
- AC_CHECK_HEADERS(cups/cups.h cups/language.h)
- if test x"$ac_cv_header_cups_cups_h" = x"yes"; then
- if test x"$ac_cv_header_cups_language_h" = x"yes"; then
- AC_DEFINE(HAVE_CUPS)
- fi
+ if test "x$CUPS_CONFIG" != x; then
+ AC_DEFINE(HAVE_CUPS)
+ CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
+ LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
+ LIBS="$LIBS `$CUPS_CONFIG --libs`"
fi
fi
@@ -713,7 +719,7 @@ else
RUNPROG=""
fi
-AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot link)
+AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link)
AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
@@ -853,10 +859,16 @@ case "$host_os" in
BLDSHARED="true"
LDSHFLAGS="-G"
SONAMEFLAG="-h "
- if test "${ac_cv_prog_CC}" = "gcc"; then
+ if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
+ if test "${ac_cv_prog_gnu_ld}" = "yes"; then
+ DYNEXP="-Wl,-E"
+ fi
else
PICFLAG="-KPIC"
+ ## ${CFLAGS} added for building 64-bit shared
+ ## libs using Sun's Compiler
+ LDSHFLAGS="-G \${CFLAGS}"
POBAD_CC=""
PICSUFFIX="po.o"
fi
@@ -870,6 +882,7 @@ case "$host_os" in
;;
*bsd*) BLDSHARED="true"
LDSHFLAGS="-shared"
+ DYNEXP="-Wl,-Bdynamic"
SONAMEFLAG="-Wl,-soname,"
PICFLAG="-fPIC"
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
@@ -884,7 +897,7 @@ case "$host_os" in
LDSHFLAGS="-set_version sgi1.0 -shared"
SONAMEFLAG="-soname "
SHLD="\${LD}"
- if test "${ac_cv_prog_CC}" = "gcc"; then
+ if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
else
PICFLAG="-KPIC"
@@ -894,7 +907,15 @@ case "$host_os" in
*aix*) AC_DEFINE(AIX)
BLDSHARED="true"
LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
- PICFLAG="-O2 -qmaxmem=6000"
+ DYNEXP="-Wl,-brtl,-bexpall"
+ if test "${GCC}" = "yes"; then
+ PICFLAG="-O2"
+ else
+ PICFLAG="-O2 -qmaxmem=6000"
+ ## for funky AIX compiler using strncpy()
+ CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
+ fi
+
AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
;;
*hpux*) AC_DEFINE(HPUX)
@@ -1059,7 +1080,7 @@ AC_TRY_COMPILE([
#include <dirent.h>],
[struct dirent64 de;],
samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
-if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
+if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
AC_DEFINE(HAVE_STRUCT_DIRENT64)
fi
@@ -1150,6 +1171,14 @@ if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
fi
+AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
+AC_TRY_LINK([#include <stdarg.h>
+va_list ap1,ap2;], [__va_copy(ap1,ap2);],
+samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
+if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
+ AC_DEFINE(HAVE_VA_COPY)
+fi
+
AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
AC_TRY_RUN([
#include <sys/types.h>
@@ -1347,7 +1376,7 @@ main() {
}
],
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
-if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
+if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" && test x"$target_cpu" != x"s390"; then
AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
fi
@@ -1493,7 +1522,7 @@ fi
AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
+CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper"
AC_TRY_COMPILE([
#define REPLACE_GETPASS 1
#define NO_CONFIG_H 1
@@ -2042,8 +2071,12 @@ AC_ARG_WITH(ldapsam,
yes)
AC_MSG_RESULT(yes)
AC_DEFINE(WITH_LDAP_SAM)
- LIBS="-lldap -llber -lresolv $LIBS"
+ LDAPLIBS="-lldap"
+ AC_CHECK_LIB(lber, ber_bvfree, [LDAPLIBS="$LDAPLIBS -llber"])
+ LDAPLIBS="-lresolv $LDAPLIBS"
+ AC_CHECK_FUNCS(ldap_start_tls_s)
with_smbpasswd_sam=no
+ AC_SUBST(LDAPLIBS)
;;
*)
AC_MSG_RESULT(no)
@@ -2221,26 +2254,6 @@ AC_ARG_WITH(quotas,
yes)
AC_MSG_RESULT(yes)
QUOTAOBJS=smbd/quotas.o
- case "$host_os" in
- *linux*)
- # Check for kernel 2.4.x quota braindamage...
- AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
- AC_TRY_COMPILE([#include <stdio.h>
-#include <sys/types.h>
-#include <asm/types.h>
-#include <linux/quota.h>
-#include <mntent.h>
-#include <linux/unistd.h>],[struct mem_dqblk D;],
- samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
-if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
- AC_DEFINE(LINUX_QUOTAS_2)
-else
- AC_DEFINE(LINUX_QUOTAS_1)
-fi
- ;;
- *)
- ;;
- esac
;;
*)
AC_MSG_RESULT(no)
@@ -2639,11 +2652,14 @@ case "$host_os" in
*hpux11*)
HAVE_WINBIND=yes
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
+ ;;
+ *aix4*)
+ HAVE_WINBIND=yes
;;
*)
HAVE_WINBIND=no
winbind_no_reason=", unsupported on $host_os"
- ;;
+ ;;
esac
# Check the setting of --with-winbindd
@@ -2703,6 +2719,20 @@ else
WINBIND_PAM_TARGETS=""
fi
+
+AC_ARG_WITH(winbind,
+[ --with-winbind-auth-challenge Enable winbindd_pam_auth_crap() functionality (default no)],
+[
+ case "$withval" in
+ yes)
+ WITH_WINBIND_AUTH_CRAP=yes
+ ;;
+ no)
+ WITH_WINBIND_AUTH_CRAP=no
+ ;;
+ esac ],
+)
+
# Check for FreeBSD problem with getgroups
# It returns EGID too many times in the list of groups
# and causes a security problem
@@ -2734,6 +2764,33 @@ AC_SUBST(WINBIND_PAM_TARGETS)
AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
+# Solaris has some extra fields in struct passwd that need to be
+# initialised otherwise nscd crashes. Unfortunately autoconf < 2.50
+# doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
+# this.
+
+#AC_CHECK_MEMBER(struct passwd.pw_comment,
+# AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
+# [#include <pwd.h>])
+
+AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
+ AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
+ samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
+if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
+ AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
+fi
+
+#AC_CHECK_MEMBER(struct passwd.pw_age,
+# AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
+# [#include <pwd.h>])
+
+AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
+ AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
+ samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
+if test x"$samba_cv_passwd_pw_age" = x"yes"; then
+ AC_DEFINE(HAVE_PASSWD_PW_AGE)
+fi
+
#################################################
# Check to see if we should use the included popt
@@ -2777,4 +2834,4 @@ AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
builddir=`pwd`
AC_SUBST(builddir)
-AC_OUTPUT(include/stamp-h Makefile)
+AC_OUTPUT(include/stamp-h Makefile script/findsmb)
diff --git a/source/include/config.h.in b/source/include/config.h.in
index b4f454ec3fc..3a1db41954b 100644
--- a/source/include/config.h.in
+++ b/source/include/config.h.in
@@ -85,6 +85,7 @@
#undef HAVE_CONNECT
#undef HAVE_SHORT_INO_T
#undef WITH_SMBWRAPPER
+#undef WITH_WINBIND_AUTH_CRAP
#undef WITH_AFS
#undef WITH_DFS
#undef SUNOS5
@@ -125,9 +126,6 @@
#undef WITH_SYSLOG
#undef WITH_PROFILE
#undef WITH_SSL
-#undef WITH_LDAP
-#undef WITH_NISPLUS
-#undef WITH_TDBPWD
#undef WITH_PAM
#undef WITH_PAM_SMBPASS
#undef WITH_NISPLUS_HOME
@@ -138,12 +136,11 @@
#undef REPLACE_INET_NTOA
#undef HAVE_FILE_MACRO
#undef HAVE_FUNCTION_MACRO
+#undef HAVE_VA_COPY
#undef HAVE_SETRESUID_DECL
#undef HAVE_SETRESUID
-#undef WITH_NETATALK
#undef WITH_UTMP
#undef WITH_MSDFS
-#undef WITH_VFS
#undef HAVE_INO64_T
#undef HAVE_DEV64_T
#undef HAVE_STRUCT_FLOCK64
@@ -243,6 +240,8 @@
#undef HAVE_DEVICE_MINOR_FN
#undef HAVE_MAKEDEV_FN
#undef HAVE_GETGROUPS_TOO_MANY_EGIDS
+#undef HAVE_PASSWD_PW_COMMENT
+#undef HAVE_PASSWD_PW_AGE
/*
* Add these definitions to allow VFS modules to
* see the CPPFLAGS defines.
@@ -632,6 +631,9 @@
/* Define if you have the innetgr function. */
#undef HAVE_INNETGR
+/* Define if you have the ldap_start_tls_s function. */
+#undef HAVE_LDAP_START_TLS_S
+
/* Define if you have the link function. */
#undef HAVE_LINK
@@ -794,6 +796,12 @@
/* Define if you have the strlcpy function. */
#undef HAVE_STRLCPY
+/* Define if you have the strndup function. */
+#undef HAVE_STRNDUP
+
+/* Define if you have the strnlen function. */
+#undef HAVE_STRNLEN
+
/* Define if you have the strpbrk function. */
#undef HAVE_STRPBRK
@@ -851,12 +859,6 @@
/* Define if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H
-/* Define if you have the <cups/cups.h> header file. */
-#undef HAVE_CUPS_CUPS_H
-
-/* Define if you have the <cups/language.h> header file. */
-#undef HAVE_CUPS_LANGUAGE_H
-
/* Define if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
@@ -992,6 +994,9 @@
/* Define if you have the <sys/fcntl.h> header file. */
#undef HAVE_SYS_FCNTL_H
+/* Define if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
/* Define if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H
@@ -1103,9 +1108,6 @@
/* Define if you have the acl library (-lacl). */
#undef HAVE_LIBACL
-/* Define if you have the cups library (-lcups). */
-#undef HAVE_LIBCUPS
-
/* Define if you have the gen library (-lgen). */
#undef HAVE_LIBGEN
diff --git a/source/include/doserr.h b/source/include/doserr.h
index ca0baa307d7..783af7e7961 100644
--- a/source/include/doserr.h
+++ b/source/include/doserr.h
@@ -165,6 +165,7 @@
#define WERR_OBJECT_PATH_INVALID W_ERROR(161)
#define WERR_NO_MORE_ITEMS W_ERROR(259)
#define WERR_MORE_DATA W_ERROR(234)
+#define WERR_CAN_NOT_COMPLETE W_ERROR(1003)
#define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
#define WERR_UNKNOWN_PRINTER_DRIVER W_ERROR(1797)
#define WERR_INVALID_PRINTER_NAME W_ERROR(1801)
diff --git a/source/include/includes.h b/source/include/includes.h
index f8dcee4aab5..74f9c4af257 100644
--- a/source/include/includes.h
+++ b/source/include/includes.h
@@ -208,7 +208,9 @@
#ifdef HAVE_SYSLOG_H
#include <syslog.h>
#endif
+#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
+#endif
#ifdef HAVE_NETINET_TCP_H
#include <netinet/tcp.h>
@@ -388,8 +390,12 @@
/*
* Define additional missing types
*/
-#ifndef HAVE_SIG_ATOMIC_T_TYPE
-typedef int sig_atomic_t;
+#if defined(HAVE_SIG_ATOMIC_T_TYPE) && defined(AIX)
+typedef sig_atomic_t SIG_ATOMIC_T;
+#elif defined(HAVE_SIG_ATOMIC_T_TYPE) && !defined(AIX)
+typedef sig_atomic_t VOLATILE SIG_ATOMIC_T;
+#else
+typedef int VOLATILE SIG_ATOMIC_T;
#endif
#ifndef HAVE_SOCKLEN_T_TYPE
@@ -688,6 +694,8 @@ extern int errno;
#include "popt.h"
+#include "mangle.h"
+
#ifndef MAXCODEPAGELINES
#define MAXCODEPAGELINES 256
#endif
@@ -875,6 +883,14 @@ size_t strlcat(char *d, const char *s, size_t bufsize);
int ftruncate(int f,long l);
#endif
+#ifndef HAVE_STRNDUP
+char *strndup(const char *s, size_t n);
+#endif
+
+#ifndef HAVE_STRNLEN
+size_t strnlen(const char *s, size_t n);
+#endif
+
#ifndef HAVE_STRTOUL
unsigned long strtoul(const char *nptr, char **endptr, int base);
#endif
@@ -1072,5 +1088,12 @@ int asprintf(char **,const char *, ...) PRINTF_ATTRIBUTE(2,3);
#define slprintf snprintf
#define vslprintf vsnprintf
+/* we need to use __va_copy() on some platforms */
+#ifdef HAVE_VA_COPY
+#define VA_COPY(dest, src) __va_copy(dest, src)
+#else
+#define VA_COPY(dest, src) (dest) = (src)
+#endif
+
#endif /* _INCLUDES_H */
diff --git a/source/include/nameserv.h b/source/include/nameserv.h
index 49b6f1d3aac..91e88ee6b1c 100644
--- a/source/include/nameserv.h
+++ b/source/include/nameserv.h
@@ -421,6 +421,13 @@ struct res_rec {
char rdata[MAX_DGRAM_SIZE];
};
+#define NM_FLAGS_RS 0x80 /* Response. Cheat */
+#define NM_FLAGS_AA 0x40 /* Authoritative */
+#define NM_FLAGS_TC 0x20 /* Truncated */
+#define NM_FLAGS_RD 0x10 /* Recursion Desired */
+#define NM_FLAGS_RA 0x08 /* Recursion Available */
+#define NM_FLAGS_B 0x01 /* Broadcast */
+
/* An nmb packet. */
struct nmb_packet
{
diff --git a/source/include/proto.h b/source/include/proto.h
index 81db73a6926..e99cb580901 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -56,7 +56,7 @@ char* debug_classname_from_index(int ndx);
int debug_lookup_classname(char* classname);
BOOL debug_parse_params(char **params, int *debuglevel_class);
BOOL debug_parse_levels(char *params_str);
-void debug_message(int msg_level, pid_t src, void *buf, size_t len);
+void debug_message(int msg_type, pid_t src, void *buf, size_t len);
void debug_message_send(pid_t pid, int level);
void setup_logging(char *pname, BOOL interactive);
BOOL reopen_logs( void );
@@ -139,7 +139,7 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
const void *buf, size_t len,
BOOL duplicates_allowed,
int *n_sent);
-BOOL message_named_mutex(char *name, unsigned int timeout);
+BOOL message_named_mutex(const char *name, unsigned int timeout);
void message_named_mutex_release(char *name);
/* The following definitions come from lib/ms_fnmatch.c */
@@ -697,7 +697,7 @@ BOOL name_register(int fd, const char *name, int name_type,
struct in_addr to_ip, int *count);
struct in_addr *name_query(int fd,const char *name,int name_type,
BOOL bcast,BOOL recurse,
- struct in_addr to_ip, int *count);
+ struct in_addr to_ip, int *count, int *flags);
FILE *startlmhosts(char *fname);
BOOL getlmhostsent( FILE *fp, pstring name, int *name_type, struct in_addr *ipaddr);
void endlmhosts(FILE *fp);
@@ -705,6 +705,7 @@ BOOL name_register_wins(const char *name, int name_type);
BOOL name_resolve_bcast(const char *name, int name_type,
struct in_addr **return_ip_list, int *return_count);
BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type);
+BOOL resolve_name_2(const char *name, struct in_addr **return_ip, int *count, int name_type);
BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
struct in_addr *ip);
BOOL find_master_ip(char *group, struct in_addr *master_ip);
@@ -1348,8 +1349,8 @@ char *dos_unistr2(uint16 *src);
char *dos_unistr2_to_str(UNISTR2 *str);
void ascii_to_unistr(uint16 *dest, const char *src, int maxlen);
void unistr_to_ascii(char *dest, const uint16 *src, int len);
-void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen);
-char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str);
+void unistr2_to_dos(char *dest, const UNISTR2 *str, size_t maxlen);
+void unistr2_to_unix(char *dest, const UNISTR2 *str, size_t maxlen);
uint32 buffer2_to_uint32(BUFFER2 *str);
char *dos_buffer2_to_str(BUFFER2 *str);
char *dos_buffer2_to_multistr(BUFFER2 *str);
@@ -1944,6 +1945,7 @@ int lp_ldap_ssl(void);
char *lp_add_share_cmd(void);
char *lp_change_share_cmd(void);
char *lp_delete_share_cmd(void);
+char *lp_mangling_method(void);
int lp_ssl_version(void);
char *lp_ssl_hosts(void);
char *lp_ssl_hosts_resign(void);
@@ -2122,6 +2124,7 @@ BOOL lp_inherit_acls(int );
BOOL lp_use_client_driver(int );
BOOL lp_default_devmode(int );
BOOL lp_nt_acl_support(int );
+BOOL lp_force_unknown_acl_user(int );
int lp_create_mask(int );
int lp_force_create_mode(int );
int lp_security_mask(int );
@@ -2406,6 +2409,7 @@ void free_nt_devicemode(NT_DEVICEMODE **devmode_ptr);
void get_printer_subst_params(int snum, fstring *printername, fstring *sharename, fstring *portname);
WERROR mod_a_printer(NT_PRINTER_INFO_LEVEL printer, uint32 level);
BOOL set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level);
+BOOL del_driver_init(char *drivername);
uint32 update_driver_init(NT_PRINTER_INFO_LEVEL printer, uint32 level);
WERROR save_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level, NT_PRINTER_PARAM *param);
WERROR get_a_printer(NT_PRINTER_INFO_LEVEL **pp_printer, uint32 level, fstring sharename);
@@ -4425,12 +4429,24 @@ int api_reply(connection_struct *conn,uint16 vuid,char *outbuf,char *data,char *
/* The following definitions come from smbd/mangle.c */
-BOOL is_mangled( char *s );
-BOOL is_8_3( char *fname, BOOL check_case );
-void reset_mangled_cache( void );
-BOOL check_mangled_cache( char *s );
-void mangle_name_83( char *s);
-BOOL name_map_mangle(char *OutName, BOOL need83, BOOL cache83, int snum);
+void mangle_reset_cache(void);
+BOOL mangle_is_mangled(const char *s);
+BOOL mangle_is_8_3(const char *fname, BOOL check_case);
+BOOL mangle_is_8_3_wildcards(const char *fname, BOOL check_case);
+BOOL mangle_check_cache(char *s);
+void mangle_map(char *OutName, BOOL need83, BOOL cache83, int snum);
+
+/* The following definitions come from smbd/mangle_hash2.c */
+
+struct mangle_fns *mangle_hash2_init(void);
+
+/* The following definitions come from smbd/mangle_hash.c */
+
+struct mangle_fns *mangle_hash_init(void);
+
+/* The following definitions come from smbd/mangle_map.c */
+
+void mangle_map_filename(char *fname, int snum);
/* The following definitions come from smbd/message.c */
@@ -4501,7 +4517,7 @@ BOOL check_file_sharing(connection_struct *conn,char *fname, BOOL rename_op);
int32 get_number_of_exclusive_open_oplocks(void);
BOOL oplock_message_waiting(fd_set *fds);
-BOOL receive_local_message(fd_set *fds, char *buffer, int buffer_len, int timeout);
+BOOL receive_local_message( char *buffer, int buffer_len, int timeout);
BOOL set_file_oplock(files_struct *fsp, int oplock_type);
void release_file_oplock(files_struct *fsp);
BOOL remove_oplock(files_struct *fsp, BOOL break_to_none);
@@ -4706,6 +4722,7 @@ BOOL reset_stat_cache( void );
/* The following definitions come from smbd/trans2.c */
+time_t interpret_long_unix_date(char *p);
NTSTATUS set_bad_path_error(int err, BOOL bad_path);
NTSTATUS set_delete_on_close_internal(files_struct *fsp, BOOL delete_on_close);
int reply_findclose(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize);
diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h
index 59325ca88d4..7e515ec275b 100644
--- a/source/include/rpc_samr.h
+++ b/source/include/rpc_samr.h
@@ -1694,9 +1694,16 @@ typedef struct q_samr_get_dom_pwinfo
/* SAMR_R_GET_DOM_PWINFO */
typedef struct r_samr_get_dom_pwinfo
{
- uint16 unk_0;
- uint16 unk_1;
- uint16 unk_2;
+ /*
+ * Previously this was 3 uint16's. However, after some tests
+ * it appears that the data len for the signing needs to be 16.
+ * Not sure how 3 unit16's ever worked since the length always
+ * turned out to 12. 3 uint32's + NT_STATUS == 16 bytes. Tested
+ * using NT and 2k. --jerry
+ */
+ uint32 unk_0;
+ uint32 unk_1;
+ uint32 unk_2;
NTSTATUS status;
} SAMR_R_GET_DOM_PWINFO;
diff --git a/source/include/samba_linux_quota.h b/source/include/samba_linux_quota.h
new file mode 100644
index 00000000000..d5ba1199ef1
--- /dev/null
+++ b/source/include/samba_linux_quota.h
@@ -0,0 +1,490 @@
+#ifndef _SAMBA_LINUX_QUOTA_H_
+
+/*
+ Unix SMB/Netbios implementation.
+ Version 2.x
+ Copyright (C) Andrew Tridgell 1994-2002
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/*
+ This file is needed because Quota support on Linux has
+ been broken since Linus kernel 2.4.x. It will only get
+ better (and this file be removed) when all the distributions
+ ship a glibc with a working quota.h file. This is very
+ bad. JRA.
+
+ Original file came from Christoph Hellwig <hch@infradead.org>.
+ Massaged into one nasty include file (to stop us having to
+ add multiple files into Samba just for Linux braindamage)
+ by JRA.
+*/
+
+#ifndef _QUOTAIO_LINUX_V1
+#define _QUOTAIO_LINUX_V1
+
+/*
+ * Headerfile for old quotafile format
+ */
+
+#include <sys/types.h>
+
+#define V1_DQBLK_SIZE_BITS 10
+#define V1_DQBLK_SIZE (1 << V1_DQBLK_SIZE_BITS) /* Size of one quota block in bytes in old format */
+
+#define V1_DQOFF(__id) ((loff_t) ((__id) * sizeof(struct v1_disk_dqblk)))
+
+/* Structure of quota on disk */
+struct v1_disk_dqblk {
+ u_int32_t dqb_bhardlimit; /* absolute limit on disk blks alloc */
+ u_int32_t dqb_bsoftlimit; /* preferred limit on disk blks */
+ u_int32_t dqb_curblocks; /* current block count */
+ u_int32_t dqb_ihardlimit; /* maximum # allocated inodes */
+ u_int32_t dqb_isoftlimit; /* preferred limit on inodes */
+ u_int32_t dqb_curinodes; /* current # allocated inodes */
+ time_t dqb_btime; /* time limit for excessive disk use */
+ time_t dqb_itime; /* time limit for excessive files */
+} __attribute__ ((packed));
+
+/* Structure used for communication with kernel */
+struct v1_kern_dqblk {
+ u_int32_t dqb_bhardlimit; /* absolute limit on disk blks alloc */
+ u_int32_t dqb_bsoftlimit; /* preferred limit on disk blks */
+ u_int32_t dqb_curblocks; /* current block count */
+ u_int32_t dqb_ihardlimit; /* maximum # allocated inodes */
+ u_int32_t dqb_isoftlimit; /* preferred inode limit */
+ u_int32_t dqb_curinodes; /* current # allocated inodes */
+ time_t dqb_btime; /* time limit for excessive disk use */
+ time_t dqb_itime; /* time limit for excessive files */
+};
+
+struct v1_dqstats {
+ u_int32_t lookups;
+ u_int32_t drops;
+ u_int32_t reads;
+ u_int32_t writes;
+ u_int32_t cache_hits;
+ u_int32_t allocated_dquots;
+ u_int32_t free_dquots;
+ u_int32_t syncs;
+};
+
+#ifndef Q_V1_GETQUOTA
+#define Q_V1_GETQUOTA 0x300
+#endif
+
+#endif /* _QUOTAIO_LINUX_V1 */
+
+/*
+ *
+ * Header file for disk format of new quotafile format
+ *
+ */
+
+#ifndef _QUOTAIO_LINUX_V2
+#define _QUOTAIO_LINUX_V2
+
+#include <sys/types.h>
+
+#ifndef _QUOTA_LINUX
+#define _QUOTA_LINUX
+
+#include <sys/types.h>
+
+typedef u_int32_t qid_t; /* Type in which we store ids in memory */
+typedef u_int64_t qsize_t; /* Type in which we store size limitations */
+
+#define MAXQUOTAS 2
+#define USRQUOTA 0 /* element used for user quotas */
+#define GRPQUOTA 1 /* element used for group quotas */
+
+/*
+ * Definitions for the default names of the quotas files.
+ */
+#define INITQFNAMES { \
+ "user", /* USRQUOTA */ \
+ "group", /* GRPQUOTA */ \
+ "undefined", \
+}
+
+/*
+ * Definitions of magics and versions of current quota files
+ */
+#define INITQMAGICS {\
+ 0xd9c01f11, /* USRQUOTA */\
+ 0xd9c01927 /* GRPQUOTA */\
+}
+
+/* Size of blocks in which are counted size limits in generic utility parts */
+#define QUOTABLOCK_BITS 10
+#define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS)
+
+/* Conversion routines from and to quota blocks */
+#define qb2kb(x) ((x) << (QUOTABLOCK_BITS-10))
+#define kb2qb(x) ((x) >> (QUOTABLOCK_BITS-10))
+#define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS)
+
+/*
+ * Command definitions for the 'quotactl' system call.
+ * The commands are broken into a main command defined below
+ * and a subcommand that is used to convey the type of
+ * quota that is being manipulated (see above).
+ */
+#define SUBCMDMASK 0x00ff
+#define SUBCMDSHIFT 8
+#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
+
+#define Q_6_5_QUOTAON 0x0100 /* enable quotas */
+#define Q_6_5_QUOTAOFF 0x0200 /* disable quotas */
+#define Q_6_5_SYNC 0x0600 /* sync disk copy of a filesystems quotas */
+
+#define Q_SYNC 0x800001 /* sync disk copy of a filesystems quotas */
+#define Q_QUOTAON 0x800002 /* turn quotas on */
+#define Q_QUOTAOFF 0x800003 /* turn quotas off */
+#define Q_GETFMT 0x800004 /* get quota format used on given filesystem */
+#define Q_GETINFO 0x800005 /* get information about quota files */
+#define Q_SETINFO 0x800006 /* set information about quota files */
+#define Q_GETQUOTA 0x800007 /* get user quota structure */
+#define Q_SETQUOTA 0x800008 /* set user quota structure */
+
+/*
+ * Quota structure used for communication with userspace via quotactl
+ * Following flags are used to specify which fields are valid
+ */
+#define QIF_BLIMITS 1
+#define QIF_SPACE 2
+#define QIF_ILIMITS 4
+#define QIF_INODES 8
+#define QIF_BTIME 16
+#define QIF_ITIME 32
+#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
+#define QIF_USAGE (QIF_SPACE | QIF_INODES)
+#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
+#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
+
+struct if_dqblk {
+ u_int64_t dqb_bhardlimit;
+ u_int64_t dqb_bsoftlimit;
+ u_int64_t dqb_curspace;
+ u_int64_t dqb_ihardlimit;
+ u_int64_t dqb_isoftlimit;
+ u_int64_t dqb_curinodes;
+ u_int64_t dqb_btime;
+ u_int64_t dqb_itime;
+ u_int32_t dqb_valid;
+};
+
+/*
+ * Structure used for setting quota information about file via quotactl
+ * Following flags are used to specify which fields are valid
+ */
+#define IIF_BGRACE 1
+#define IIF_IGRACE 2
+#define IIF_FLAGS 4
+#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
+
+struct if_dqinfo {
+ u_int64_t dqi_bgrace;
+ u_int64_t dqi_igrace;
+ u_int32_t dqi_flags;
+ u_int32_t dqi_valid;
+};
+
+/* Quota format identifiers */
+#define QFMT_VFS_OLD 1
+#define QFMT_VFS_V0 2
+
+/* Flags supported by kernel */
+#define V1_DQF_RSQUASH 1
+
+/* Ioctl for getting quota size */
+#include <sys/ioctl.h>
+#ifndef FIOQSIZE
+ #if defined(__alpha__) || defined(__powerpc__) || defined(__sh__) || defined(__sparc__) || defined(__sparc64__)
+ #define FIOQSIZE _IOR('f', 128, loff_t)
+ #elif defined(__arm__) || defined(__mc68000__) || defined(__s390__)
+ #define FIOQSIZE 0x545E
+ #elif defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__ia64__) || defined(__parisc__) || defined(__cris__) || defined(__hppa__)
+ #define FIOQSIZE 0x5460
+ #elif defined(__mips__) || defined(__mips64__)
+ #define FIOQSIZE 0x6667
+ #endif
+#endif
+
+long quotactl __P((int, const char *, qid_t, caddr_t));
+
+#endif /* _QUOTA_LINUX */
+
+#define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) /* Offset of info header in file */
+#define V2_DQBLKSIZE_BITS 10
+#define V2_DQBLKSIZE (1 << V2_DQBLKSIZE_BITS) /* Size of block with quota structures */
+#define V2_DQTREEOFF 1 /* Offset of tree in file in blocks */
+#define V2_DQTREEDEPTH 4 /* Depth of quota tree */
+#define V2_DQSTRINBLK ((V2_DQBLKSIZE - sizeof(struct v2_disk_dqdbheader)) / sizeof(struct v2_disk_dqblk)) /* Number of entries in one blocks */
+#define V2_GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff)
+#define V2_GETENTRIES(buf) ((struct v2_disk_dqblk *)(((char *)(buf)) + sizeof(struct v2_disk_dqdbheader)))
+#define INIT_V2_VERSIONS { 0, 0}
+
+struct v2_disk_dqheader {
+ u_int32_t dqh_magic; /* Magic number identifying file */
+ u_int32_t dqh_version; /* File version */
+} __attribute__ ((packed));
+
+/* Flags for version specific files */
+#define V2_DQF_MASK 0x0000 /* Mask for all valid ondisk flags */
+
+/* Header with type and version specific information */
+struct v2_disk_dqinfo {
+ u_int32_t dqi_bgrace; /* Time before block soft limit becomes hard limit */
+ u_int32_t dqi_igrace; /* Time before inode soft limit becomes hard limit */
+ u_int32_t dqi_flags; /* Flags for quotafile (DQF_*) */
+ u_int32_t dqi_blocks; /* Number of blocks in file */
+ u_int32_t dqi_free_blk; /* Number of first free block in the list */
+ u_int32_t dqi_free_entry; /* Number of block with at least one free entry */
+} __attribute__ ((packed));
+
+/*
+ * Structure of header of block with quota structures. It is padded to 16 bytes so
+ * there will be space for exactly 18 quota-entries in a block
+ */
+struct v2_disk_dqdbheader {
+ u_int32_t dqdh_next_free; /* Number of next block with free entry */
+ u_int32_t dqdh_prev_free; /* Number of previous block with free entry */
+ u_int16_t dqdh_entries; /* Number of valid entries in block */
+ u_int16_t dqdh_pad1;
+ u_int32_t dqdh_pad2;
+} __attribute__ ((packed));
+
+/* Structure of quota for one user on disk */
+struct v2_disk_dqblk {
+ u_int32_t dqb_id; /* id this quota applies to */
+ u_int32_t dqb_ihardlimit; /* absolute limit on allocated inodes */
+ u_int32_t dqb_isoftlimit; /* preferred inode limit */
+ u_int32_t dqb_curinodes; /* current # allocated inodes */
+ u_int32_t dqb_bhardlimit; /* absolute limit on disk space (in QUOTABLOCK_SIZE) */
+ u_int32_t dqb_bsoftlimit; /* preferred limit on disk space (in QUOTABLOCK_SIZE) */
+ u_int64_t dqb_curspace; /* current space occupied (in bytes) */
+ u_int64_t dqb_btime; /* time limit for excessive disk use */
+ u_int64_t dqb_itime; /* time limit for excessive inode use */
+} __attribute__ ((packed));
+
+/* Structure of quota for communication with kernel */
+struct v2_kern_dqblk {
+ unsigned int dqb_ihardlimit;
+ unsigned int dqb_isoftlimit;
+ unsigned int dqb_curinodes;
+ unsigned int dqb_bhardlimit;
+ unsigned int dqb_bsoftlimit;
+ qsize_t dqb_curspace;
+ time_t dqb_btime;
+ time_t dqb_itime;
+};
+
+/* Structure of quotafile info for communication with kernel */
+struct v2_kern_dqinfo {
+ unsigned int dqi_bgrace;
+ unsigned int dqi_igrace;
+ unsigned int dqi_flags;
+ unsigned int dqi_blocks;
+ unsigned int dqi_free_blk;
+ unsigned int dqi_free_entry;
+};
+
+/* Structure with gathered statistics from kernel */
+struct v2_dqstats {
+ u_int32_t lookups;
+ u_int32_t drops;
+ u_int32_t reads;
+ u_int32_t writes;
+ u_int32_t cache_hits;
+ u_int32_t allocated_dquots;
+ u_int32_t free_dquots;
+ u_int32_t syncs;
+ u_int32_t version;
+};
+
+#ifndef Q_V2_GETQUOTA
+#define Q_V2_GETQUOTA 0x0D00
+#endif
+
+#endif /* _QUOTAIO_LINUX_V2 */
+
+#ifndef _QUOTAIO_LINUX_XFS
+#define _QUOTAIO_LINUX_XFS
+
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ */
+
+#include <linux/types.h>
+
+#define XQM_CMD(cmd) ( ('X'<<8)+(cmd) )
+#define IS_XQM_CMD(cmd) ( ((int)(cmd)>>8) == 'X' )
+
+/*
+ * Disk quota - quotactl(2) commands for XFS Quota Manager (XQM).
+ */
+#define Q_XQUOTAON XQM_CMD(0x1) /* enable quota accounting/enforcement */
+#define Q_XQUOTAOFF XQM_CMD(0x2) /* disable quota accounting/enforcement */
+#define Q_XGETQUOTA XQM_CMD(0x3) /* get disk limits & usage */
+#define Q_XSETQLIM XQM_CMD(0x4) /* set disk limits only */
+#define Q_XGETQSTAT XQM_CMD(0x5) /* returns fs_quota_stat_t struct */
+#define Q_XQUOTARM XQM_CMD(0x6) /* free quota files' space */
+
+/*
+ * fs_disk_quota structure:
+ *
+ * This contains the current quota information regarding a user/proj/group.
+ * It is 64-bit aligned, and all the blk units are in BBs (Basic Blocks) of
+ * 512 bytes.
+ */
+#define FS_DQUOT_VERSION 1 /* fs_disk_quota.d_version */
+typedef struct fs_disk_quota {
+ u_int8_t d_version; /* version of this structure */
+ u_int8_t d_flags; /* XFS_{USER,PROJ,GROUP}_QUOTA */
+ u_int16_t d_fieldmask; /* field specifier */
+ u_int32_t d_id; /* user, project, or group ID */
+ u_int64_t d_blk_hardlimit; /* absolute limit on disk blks */
+ u_int64_t d_blk_softlimit; /* preferred limit on disk blks */
+ u_int64_t d_ino_hardlimit; /* maximum # allocated inodes */
+ u_int64_t d_ino_softlimit; /* preferred inode limit */
+ u_int64_t d_bcount; /* # disk blocks owned by the user */
+ u_int64_t d_icount; /* # inodes owned by the user */
+ int32_t d_itimer; /* zero if within inode limits */
+ /* if not, we refuse service */
+ int32_t d_btimer; /* similar to above; for disk blocks */
+ u_int16_t d_iwarns; /* # warnings issued wrt num inodes */
+ u_int16_t d_bwarns; /* # warnings issued wrt disk blocks */
+ int32_t d_padding2; /* padding2 - for future use */
+ u_int64_t d_rtb_hardlimit; /* absolute limit on realtime blks */
+ u_int64_t d_rtb_softlimit; /* preferred limit on RT disk blks */
+ u_int64_t d_rtbcount; /* # realtime blocks owned */
+ int32_t d_rtbtimer; /* similar to above; for RT disk blks */
+ u_int16_t d_rtbwarns; /* # warnings issued wrt RT disk blks */
+ int16_t d_padding3; /* padding3 - for future use */
+ char d_padding4[8]; /* yet more padding */
+} fs_disk_quota_t;
+
+/*
+ * These fields are sent to Q_XSETQLIM to specify fields that need to change.
+ */
+#define FS_DQ_ISOFT (1<<0)
+#define FS_DQ_IHARD (1<<1)
+#define FS_DQ_BSOFT (1<<2)
+#define FS_DQ_BHARD (1<<3)
+#define FS_DQ_RTBSOFT (1<<4)
+#define FS_DQ_RTBHARD (1<<5)
+#define FS_DQ_LIMIT_MASK (FS_DQ_ISOFT | FS_DQ_IHARD | FS_DQ_BSOFT | \
+ FS_DQ_BHARD | FS_DQ_RTBSOFT | FS_DQ_RTBHARD)
+/*
+ * These timers can only be set in super user's dquot. For others, timers are
+ * automatically started and stopped. Superusers timer values set the limits
+ * for the rest. In case these values are zero, the DQ_{F,B}TIMELIMIT values
+ * defined below are used.
+ * These values also apply only to the d_fieldmask field for Q_XSETQLIM.
+ */
+#define FS_DQ_BTIMER (1<<6)
+#define FS_DQ_ITIMER (1<<7)
+#define FS_DQ_RTBTIMER (1<<8)
+#define FS_DQ_TIMER_MASK (FS_DQ_BTIMER | FS_DQ_ITIMER | FS_DQ_RTBTIMER)
+
+/*
+ * The following constants define the default amount of time given a user
+ * before the soft limits are treated as hard limits (usually resulting
+ * in an allocation failure). These may be modified by the quotactl(2)
+ * system call with the Q_XSETQLIM command.
+ */
+#define DQ_FTIMELIMIT (7 * 24*60*60) /* 1 week */
+#define DQ_BTIMELIMIT (7 * 24*60*60) /* 1 week */
+
+/*
+ * Various flags related to quotactl(2). Only relevant to XFS filesystems.
+ */
+#define XFS_QUOTA_UDQ_ACCT (1<<0) /* user quota accounting */
+#define XFS_QUOTA_UDQ_ENFD (1<<1) /* user quota limits enforcement */
+#define XFS_QUOTA_GDQ_ACCT (1<<2) /* group quota accounting */
+#define XFS_QUOTA_GDQ_ENFD (1<<3) /* group quota limits enforcement */
+
+#define XFS_USER_QUOTA (1<<0) /* user quota type */
+#define XFS_PROJ_QUOTA (1<<1) /* (IRIX) project quota type */
+#define XFS_GROUP_QUOTA (1<<2) /* group quota type */
+
+/*
+ * fs_quota_stat is the struct returned in Q_XGETQSTAT for a given file system.
+ * Provides a centralized way to get meta infomation about the quota subsystem.
+ * eg. space taken up for user and group quotas, number of dquots currently
+ * incore.
+ */
+#define FS_QSTAT_VERSION 1 /* fs_quota_stat.qs_version */
+
+/*
+ * Some basic infomation about 'quota files'.
+ */
+typedef struct fs_qfilestat {
+ u_int64_t qfs_ino; /* inode number */
+ u_int64_t qfs_nblks; /* number of BBs 512-byte-blks */
+ u_int32_t qfs_nextents; /* number of extents */
+} fs_qfilestat_t;
+
+typedef struct fs_quota_stat {
+ u_int8_t qs_version; /* version number for future changes */
+ u_int16_t qs_flags; /* XFS_QUOTA_{U,P,G}DQ_{ACCT,ENFD} */
+ u_int8_t qs_pad; /* unused */
+ fs_qfilestat_t qs_uquota; /* user quota storage information */
+ fs_qfilestat_t qs_gquota; /* group quota storage information */
+ u_int32_t qs_incoredqs; /* number of dquots incore */
+ int32_t qs_btimelimit; /* limit for blks timer */
+ int32_t qs_itimelimit; /* limit for inodes timer */
+ int32_t qs_rtbtimelimit; /* limit for rt blks timer */
+ u_int16_t qs_bwarnlimit; /* limit for num warnings */
+ u_int16_t qs_iwarnlimit; /* limit for num warnings */
+} fs_quota_stat_t;
+
+#endif /* _QUOTAIO_LINUX_XFS */
+
+#ifndef QUOTABLOCK_SIZE
+#define QUOTABLOCK_SIZE 1024
+#endif
+
+#endif /* _SAMBA_LINUX_QUOTA_H_ */
diff --git a/source/include/smb.h b/source/include/smb.h
index 2b4d4fa690e..ed5230a8d69 100644
--- a/source/include/smb.h
+++ b/source/include/smb.h
@@ -199,6 +199,15 @@ typedef struct nttime_info
} NTTIME;
+#ifndef TIME_T_MIN
+#define TIME_T_MIN ((time_t)0 < (time_t) -1 ? (time_t) 0 \
+ : ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1))
+#endif
+#ifndef TIME_T_MAX
+#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
+#endif
+
+
/* the following rather strange looking definitions of NTSTATUS and WERROR
and there in order to catch common coding errors where different error types
are mixed up. This is especially important as we slowly convert Samba
@@ -649,13 +658,14 @@ typedef struct sam_passwd
* Flags for local user manipulation.
*/
-#define LOCAL_ADD_USER 0x1
-#define LOCAL_DELETE_USER 0x2
-#define LOCAL_DISABLE_USER 0x4
-#define LOCAL_ENABLE_USER 0x8
-#define LOCAL_TRUST_ACCOUNT 0x10
-#define LOCAL_SET_NO_PASSWORD 0x20
+#define LOCAL_ADD_USER 0x01
+#define LOCAL_DELETE_USER 0x02
+#define LOCAL_DISABLE_USER 0x04
+#define LOCAL_ENABLE_USER 0x08
+#define LOCAL_TRUST_ACCOUNT 0x10
+#define LOCAL_SET_NO_PASSWORD 0x20
#define LOCAL_SET_LDAP_ADMIN_PW 0x40
+#define LOCAL_GET_DOM_SID 0x80
/* key and data in the connections database - used in smbstatus and smbd */
struct connections_key {
diff --git a/source/include/trans2.h b/source/include/trans2.h
index 2e086510e6e..6b381d6c2ce 100644
--- a/source/include/trans2.h
+++ b/source/include/trans2.h
@@ -337,6 +337,13 @@ Byte offset Type name description
#define SMB_UID_NO_CHANGE 0xFFFFFFFF
#define SMB_GID_NO_CHANGE 0xFFFFFFFF
+#define SMB_SIZE_NO_CHANGE_LO 0xFFFFFFFF
+#define SMB_SIZE_NO_CHANGE_HI 0xFFFFFFFF
+
+#define SMB_TIME_NO_CHANGE_LO 0xFFFFFFFF
+#define SMB_TIME_NO_CHANGE_HI 0xFFFFFFFF
+
+
/*
Offset Size Name
0 LARGE_INTEGER EndOfFile File size
diff --git a/source/include/version.h b/source/include/version.h
index d97a9a60b13..192beaa286e 100644
--- a/source/include/version.h
+++ b/source/include/version.h
@@ -1 +1 @@
-#define VERSION "2.2.4"
+#define VERSION "2.2.5-pre1"
diff --git a/source/lib/access.c b/source/lib/access.c
index 73b4d57e706..8bf3ba19337 100644
--- a/source/lib/access.c
+++ b/source/lib/access.c
@@ -33,7 +33,7 @@ static int masked_match(char *tok, char *slash, char *s)
if (strlen(slash + 1) > 2) {
mask = interpret_addr(slash + 1);
} else {
- mask = (uint32)((ALLONES >> atoi(slash + 1)) ^ ALLONES);
+ mask = (uint32)((ALLONES << atoi(slash + 1)) ^ ALLONES);
}
if (net == INADDR_NONE || mask == INADDR_NONE) {
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index 2affa6a9e06..a4f90a5a10f 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -20,7 +20,8 @@
*/
#include "includes.h"
-#define CTRLZ 26
+#define CTRLZ 26
+#define SPC 32
static char cvtbuf[sizeof(pstring)];
@@ -58,8 +59,15 @@ static void setupmaps(void)
/* Do not map undefined characters to some accidental code */
for (i = 128; i < 256; i++)
{
+#if 0 /* JERRY */
+ /* Win2k & XP don't like the Ctrl-Z apparently */
+ /* patch from Toomas.Soome@microlink.ee */
unix2dos[i] = CTRLZ;
dos2unix[i] = CTRLZ;
+#else
+ unix2dos[i] = SPC;
+ dos2unix[i] = SPC;
+#endif
}
}
@@ -400,6 +408,8 @@ char *unix2dos_format_static(const char *str)
if (!mapsinited)
initmaps();
+ if (!str)
+ return NULL;
for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++)
*dp = unix2dos[(unsigned char)*p];
*dp = 0;
@@ -413,6 +423,8 @@ char *unix2dos_format(char *str)
if (!mapsinited)
initmaps();
+ if (!str)
+ return NULL;
for (p = str; *p; p++)
*p = unix2dos[(unsigned char)*p];
return str;
@@ -430,6 +442,8 @@ char *dos2unix_format_static(const char *str)
if (!mapsinited)
initmaps();
+ if (!str)
+ return NULL;
for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++)
*dp = dos2unix[(unsigned char)*p];
*dp = 0;
@@ -443,6 +457,9 @@ char *dos2unix_format(char *str)
if (!mapsinited)
initmaps();
+ if (!str)
+ return NULL;
+
for (p = str; *p; p++)
*p = dos2unix[(unsigned char)*p];
return str;
diff --git a/source/lib/debug.c b/source/lib/debug.c
index 3731b3656fa..347c644c2a0 100644
--- a/source/lib/debug.c
+++ b/source/lib/debug.c
@@ -232,13 +232,12 @@ BOOL debug_parse_levels(char *params_str)
/* save current debug level */
memcpy(old_debuglevel_class, DEBUGLEVEL_CLASS, sizeof(DEBUGLEVEL_CLASS));
if (debug_parse_params(params, debuglevel_class))
- debug_message(0, getpid(), (void*)debuglevel_class, sizeof(debuglevel_class));
- memcpy(parsed_debuglevel_class, DEBUGLEVEL_CLASS, sizeof(DEBUGLEVEL_CLASS));
+ memcpy(parsed_debuglevel_class, debuglevel_class, sizeof(DEBUGLEVEL_CLASS));
memcpy(DEBUGLEVEL_CLASS, old_debuglevel_class, sizeof(old_debuglevel_class));
return True;
}
if (debug_parse_params(params, debuglevel_class)) {
- debug_message(DEBUGLEVEL, getpid(), (void*)debuglevel_class, sizeof(debuglevel_class));
+ debug_message(MSG_DEBUG, getpid(), (void*)debuglevel_class, sizeof(debuglevel_class));
return True;
} else
return False;
@@ -247,14 +246,14 @@ BOOL debug_parse_levels(char *params_str)
/****************************************************************************
receive a "set debug level" message
****************************************************************************/
-void debug_message(int msg_level, pid_t src, void *buf, size_t len)
+void debug_message(int msg_type, pid_t src, void *buf, size_t len)
{
int i;
/* Set the new DEBUGLEVEL_CLASS array from the pased array */
memcpy(DEBUGLEVEL_CLASS, buf, sizeof(DEBUGLEVEL_CLASS));
- DEBUG(msg_level,("INFO: Debug class %s level = %d (pid %u from pid %u)\n",
+ DEBUG(1,("INFO: Debug class %s level = %d (pid %u from pid %u)\n",
classname_table[DBGC_ALL],
DEBUGLEVEL_CLASS[DBGC_ALL], (unsigned int)getpid(), (unsigned int)src));
diff --git a/source/lib/error.c b/source/lib/error.c
index ec7efd11f4c..5fbc9a7f4fa 100644
--- a/source/lib/error.c
+++ b/source/lib/error.c
@@ -26,8 +26,8 @@
struct unix_error_map unix_dos_nt_errmap[] = {
{ EPERM, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
{ EACCES, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED },
- { ENOENT, ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE },
- { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_NOT_A_DIRECTORY },
+ { ENOENT, ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND },
+ { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND },
{ EIO, ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR },
{ EBADF, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
{ EINVAL, ERRSRV, ERRsrverror, NT_STATUS_INVALID_HANDLE },
diff --git a/source/lib/interfaces.c b/source/lib/interfaces.c
index e7b9efa1f0a..9e8c979aa7b 100644
--- a/source/lib/interfaces.c
+++ b/source/lib/interfaces.c
@@ -39,15 +39,8 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/ioctl.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
#include <net/if.h>
-#ifndef SIOCGIFCONF
-#include <sys/sockio.h>
-#endif
-
#ifdef AUTOCONF_TEST
struct iface_struct {
char name[16];
@@ -59,6 +52,16 @@ struct iface_struct {
#include "interfaces.h"
#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifndef SIOCGIFCONF
+#ifdef HAVE_SYS_SOCKIO_H
+#include <sys/sockio.h>
+#endif
+#endif
+
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
diff --git a/source/lib/kanji.c b/source/lib/kanji.c
index 8a7494e6d77..940457d1681 100644
--- a/source/lib/kanji.c
+++ b/source/lib/kanji.c
@@ -1249,7 +1249,7 @@ static char *sj_to_hex_static(const char *from)
const unsigned char *sp;
unsigned char *dp;
- sp = from;
+ sp = (const uchar *)from;
dp = (unsigned char*) cvtbuf;
while (*sp && (((char *)dp)- cvtbuf < sizeof(cvtbuf)-7)) {
if (is_kana(*sp)) {
@@ -1321,7 +1321,7 @@ static char *sj_to_cap_static(const char *from)
const unsigned char *sp;
unsigned char *dp;
- sp = from;
+ sp = (const uchar *)from;
dp = (unsigned char*) cvtbuf;
while (*sp && (((char *)dp) - cvtbuf < sizeof(cvtbuf)-4)) {
if (*sp >= 0x80) {
diff --git a/source/lib/messages.c b/source/lib/messages.c
index 518b7d51c1e..9d2d46e4114 100644
--- a/source/lib/messages.c
+++ b/source/lib/messages.c
@@ -322,8 +322,8 @@ void message_dispatch(void)
received_signal = 0;
while (message_recv(&msg_type, &src, &buf, &len)) {
- DEBUG(10,("message_dispatch: received msg_type=%d src_pid=%d\n",
- msg_type, (int) src));
+ DEBUG(10,("message_dispatch: received msg_type=%d src_pid=%u\n",
+ msg_type, (unsigned int) src));
n_handled = 0;
for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
if (dfn->msg_type == msg_type) {
@@ -334,8 +334,8 @@ void message_dispatch(void)
}
if (!n_handled) {
DEBUG(5,("message_dispatch: warning: no handlers registed for "
- "msg_type %d in pid%d\n",
- msg_type, getpid()));
+ "msg_type %d in pid%u\n",
+ msg_type, (unsigned int)getpid()));
}
SAFE_FREE(buf);
}
@@ -459,7 +459,7 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
/** @} **/
-static VOLATILE sig_atomic_t gotalarm;
+static SIG_ATOMIC_T gotalarm;
/***************************************************************
Signal function to tell us we timed out.
@@ -474,7 +474,7 @@ static void gotalarm_sig(void)
lock the messaging tdb based on a string - this is used as a primitive form of mutex
between smbd instances.
*/
-BOOL message_named_mutex(char *name, unsigned int timeout)
+BOOL message_named_mutex(const char *name, unsigned int timeout)
{
TDB_DATA key;
int ret;
@@ -482,7 +482,7 @@ BOOL message_named_mutex(char *name, unsigned int timeout)
if (!message_init())
return False;
- key.dptr = name;
+ key.dptr = (char *)name;
key.dsize = strlen(name)+1;
if (timeout) {
diff --git a/source/lib/replace.c b/source/lib/replace.c
index dd50ff035e0..370b6dfebf2 100644
--- a/source/lib/replace.c
+++ b/source/lib/replace.c
@@ -47,7 +47,7 @@ ftruncate for operating systems that don't have it
{
size_t len = strlen(s);
size_t ret = len;
- if (bufsize <= 0) return 0;
+ if (bufsize == 0) return 0;
if (len >= bufsize) len = bufsize-1;
memcpy(d, s, len);
d[len] = 0;
diff --git a/source/lib/select.c b/source/lib/select.c
index f70268b7ce4..efcf63becca 100644
--- a/source/lib/select.c
+++ b/source/lib/select.c
@@ -134,10 +134,12 @@ int sys_select_intr(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorf
{
int ret;
fd_set *readfds2, readfds_buf, *writefds2, writefds_buf, *errorfds2, errorfds_buf;
+ struct timeval tval2, *ptval;
readfds2 = (readfds ? &readfds_buf : NULL);
writefds2 = (writefds ? &writefds_buf : NULL);
errorfds2 = (errorfds ? &errorfds_buf : NULL);
+ ptval = (tval ? &tval2 : NULL);
do {
if (readfds)
@@ -146,7 +148,10 @@ int sys_select_intr(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorf
writefds_buf = *writefds;
if (errorfds)
errorfds_buf = *errorfds;
- ret = sys_select(maxfd, readfds2, writefds2, errorfds2, tval);
+ if (tval)
+ tval2 = *tval;
+
+ ret = sys_select(maxfd, readfds2, writefds2, errorfds2, ptval);
} while (ret == -1 && errno == EINTR);
if (readfds)
diff --git a/source/lib/snprintf.c b/source/lib/snprintf.c
index 27336261086..ebb8bf74c77 100644
--- a/source/lib/snprintf.c
+++ b/source/lib/snprintf.c
@@ -105,8 +105,16 @@
#define SAFE_FREE(x) do { if ((x) != NULL) {free((x)); (x)=NULL;} } while(0)
#endif
+#ifndef VA_COPY
+#ifdef HAVE_VA_COPY
+#define VA_COPY(dest, src) __va_copy(dest, src)
+#else
+#define VA_COPY(dest, src) (dest) = (src)
+#endif
+#endif
+
static size_t dopr(char *buffer, size_t maxlen, const char *format,
- va_list args);
+ va_list args_in);
static void fmtstr(char *buffer, size_t *currlen, size_t maxlen,
char *value, int flags, int min, int max);
static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
@@ -149,7 +157,7 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c);
#define MAX(p,q) (((p) >= (q)) ? (p) : (q))
#endif
-static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args)
+static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args_in)
{
char ch;
LLONG value;
@@ -161,7 +169,10 @@ static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args
int flags;
int cflags;
size_t currlen;
+ va_list args;
+ VA_COPY(args, args_in);
+
state = DP_S_DEFAULT;
currlen = flags = cflags = min = 0;
max = -1;
@@ -793,13 +804,16 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c)
int vasprintf(char **ptr, const char *format, va_list ap)
{
int ret;
+ va_list ap2;
- ret = vsnprintf(NULL, 0, format, ap);
+ VA_COPY(ap2, ap);
+ ret = vsnprintf(NULL, 0, format, ap2);
if (ret <= 0) return ret;
(*ptr) = (char *)malloc(ret+1);
if (!*ptr) return -1;
- ret = vsnprintf(*ptr, ret+1, format, ap);
+ VA_COPY(ap2, ap);
+ ret = vsnprintf(*ptr, ret+1, format, ap2);
return ret;
}
diff --git a/source/lib/sysacls.c b/source/lib/sysacls.c
index 9ce04e596b9..21814383697 100644
--- a/source/lib/sysacls.c
+++ b/source/lib/sysacls.c
@@ -2937,7 +2937,7 @@ int sys_acl_set_file( const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl
memcpy(acl_entry->ace_id->id_data, &user_id, sizeof(uid_t));
}
- rc = chacl(name,file_acl,file_acl->acl_len);
+ rc = chacl((char *)name,file_acl,file_acl->acl_len);
DEBUG(10,("errno is %d\n",errno));
DEBUG(10,("return code is %d\n",rc));
SAFE_FREE(file_acl);
diff --git a/source/lib/talloc.c b/source/lib/talloc.c
index 6ac784a9297..8c722e1ff78 100644
--- a/source/lib/talloc.c
+++ b/source/lib/talloc.c
@@ -307,12 +307,16 @@ char *talloc_strdup(TALLOC_CTX *t, const char *p)
{
int len;
char *ret;
+ va_list ap2;
- len = vsnprintf(NULL, 0, fmt, ap);
+ VA_COPY(ap2, ap); /* for systems were va_list is a struct */
+ len = vsnprintf(NULL, 0, fmt, ap2);
ret = talloc(t, len+1);
- if (ret)
- vsnprintf(ret, len+1, fmt, ap);
+ if (ret) {
+ VA_COPY(ap2, ap);
+ vsnprintf(ret, len+1, fmt, ap2);
+ }
return ret;
}
@@ -345,14 +349,17 @@ char *talloc_strdup(TALLOC_CTX *t, const char *p)
const char *fmt, va_list ap)
{
int len, s_len;
+ va_list ap2;
+ VA_COPY(ap2, ap);
s_len = strlen(s);
- len = vsnprintf(NULL, 0, fmt, ap);
+ len = vsnprintf(NULL, 0, fmt, ap2);
s = talloc_realloc(t, s, s_len + len+1);
if (!s) return NULL;
- vsnprintf(s+s_len, len+1, fmt, ap);
+ VA_COPY(ap2, ap);
+ vsnprintf(s+s_len, len+1, fmt, ap2);
return s;
}
diff --git a/source/lib/time.c b/source/lib/time.c
index 43c8ca67dd4..aa433a769c6 100644
--- a/source/lib/time.c
+++ b/source/lib/time.c
@@ -33,14 +33,6 @@ int extra_time_offset = 0;
#define CHAR_BIT 8
#endif
-#ifndef TIME_T_MIN
-#define TIME_T_MIN ((time_t)0 < (time_t) -1 ? (time_t) 0 \
- : ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1))
-#endif
-#ifndef TIME_T_MAX
-#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
-#endif
-
/*******************************************************************
External access to time_t_min and time_t_max.
********************************************************************/
@@ -414,7 +406,7 @@ void unix_to_nt_time(NTTIME *nt, time_t t)
}
/* this converts GMT to kludge-GMT */
- t -= LocTimeDiff(t) - get_serverzone();
+ t -= TimeDiff(t) - get_serverzone();
d = (double)(t);
d += TIME_FIXUP_CONSTANT;
diff --git a/source/lib/util.c b/source/lib/util.c
index 9ff2bba5647..b017e75dca2 100644
--- a/source/lib/util.c
+++ b/source/lib/util.c
@@ -119,7 +119,7 @@ BOOL in_group(gid_t group, gid_t current_gid, int ngroups, gid_t *groups)
}
/****************************************************************************
- Like atoi but gets the value up to the separater character.
+ Like atoi but gets the value up to the separator character.
****************************************************************************/
char *Atoic(char *p, int *n, char *c)
@@ -1783,7 +1783,11 @@ char *smb_xstrdup(const char *s)
int smb_xvasprintf(char **ptr, const char *format, va_list ap)
{
int n;
- n = vasprintf(ptr, format, ap);
+ va_list ap2;
+
+ VA_COPY(ap2, ap);
+
+ n = vasprintf(ptr, format, ap2);
if (n == -1 || ! *ptr) {
smb_panic("smb_xvasprintf: out of memory");
}
diff --git a/source/lib/util_sock.c b/source/lib/util_sock.c
index 4b5abbb5724..dca80289e1f 100644
--- a/source/lib/util_sock.c
+++ b/source/lib/util_sock.c
@@ -42,7 +42,8 @@ int smb_read_error = 0;
BOOL is_a_socket(int fd)
{
- int v,l;
+ int v;
+ socklen_t l;
l = sizeof(int);
return(getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0);
}
@@ -99,7 +100,8 @@ smb_socket_option socket_options[] = {
static void print_socket_options(int s)
{
- int value, vlen = 4;
+ int value;
+ socklen_t vlen = 4;
smb_socket_option *p = &socket_options[0];
for (; p->name != NULL; p++) {
@@ -931,7 +933,7 @@ static BOOL matchname(char *remotehost,struct in_addr addr)
/* Look up the host address in the address list we just got. */
for (i = 0; hp->h_addr_list[i]; i++) {
- if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0)
+ if (memcmp(hp->h_addr_list[i], (void *) & addr, sizeof(addr)) == 0)
return True;
}
@@ -997,7 +999,7 @@ char *get_socket_addr(int fd)
{
struct sockaddr sa;
struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);
- int length = sizeof(sa);
+ socklen_t length = sizeof(sa);
static fstring addr_buf;
fstrcpy(addr_buf,"0.0.0.0");
diff --git a/source/lib/util_str.c b/source/lib/util_str.c
index a2b01a0fc7e..f44341b8dd1 100644
--- a/source/lib/util_str.c
+++ b/source/lib/util_str.c
@@ -1332,3 +1332,37 @@ char *binary_string(char *buf, int len)
s[j] = 0;
return s;
}
+
+#ifndef HAVE_STRNLEN
+/*******************************************************************
+ Some platforms don't have strnlen
+********************************************************************/
+
+ size_t strnlen(const char *s, size_t n)
+{
+ int i;
+ for (i=0; s[i] && i<n; i++)
+ /* noop */ ;
+ return i;
+}
+#endif
+
+#ifndef HAVE_STRNDUP
+/*******************************************************************
+ Some platforms don't have strndup.
+********************************************************************/
+
+ char *strndup(const char *s, size_t n)
+{
+ char *ret;
+
+ n = strnlen(s, n);
+ ret = malloc(n+1);
+ if (!ret)
+ return NULL;
+ memcpy(ret, s, n);
+ ret[n] = 0;
+
+ return ret;
+}
+#endif
diff --git a/source/lib/util_unistr.c b/source/lib/util_unistr.c
index a2bd0cf4913..efad8df1ea8 100644
--- a/source/lib/util_unistr.c
+++ b/source/lib/util_unistr.c
@@ -310,11 +310,11 @@ void unistr_to_ascii(char *dest, const uint16 *src, int len)
}
/*******************************************************************
- Convert a (little-endian) UNISTR2 structure to an ASCII string
- Warning: this version does DOS codepage.
+ Convert a (little-endian) UNISTR2 structure to an ASCII string, either
+ DOS or UNIX codepage.
********************************************************************/
-void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
+static void unistr2_to_mbcp(char *dest, const UNISTR2 *str, size_t maxlen, uint16 *ucs2_to_mbcp)
{
char *p;
uint16 *src;
@@ -335,7 +335,7 @@ void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
for (p = dest; (p-dest < maxlen-3) && (src - str->buffer < str->uni_str_len) && *src; src++) {
uint16 ucs2_val = SVAL(src,0);
- uint16 cp_val = ucs2_to_doscp[ucs2_val];
+ uint16 cp_val = ucs2_to_mbcp[ucs2_val];
if (cp_val < 256)
*p++ = (char)cp_val;
@@ -349,18 +349,23 @@ void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
}
/*******************************************************************
- duplicate a UNISTR2 string into a null terminated char*
- using a talloc context
+ Convert a (little-endian) UNISTR2 structure to an ASCII string
+ Warning: this version does DOS codepage.
********************************************************************/
-char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str)
-{
- char *s;
- int maxlen = (str->uni_str_len+1)*4;
- if (!str->buffer) return NULL;
- s = (char *)talloc(ctx, maxlen); /* convervative */
- if (!s) return NULL;
- unistr2_to_ascii(s, str, maxlen);
- return s;
+
+void unistr2_to_dos(char *dest, const UNISTR2 *str, size_t maxlen)
+{
+ unistr2_to_mbcp(dest, str, maxlen, ucs2_to_doscp);
+}
+
+/*******************************************************************
+ Convert a (little-endian) UNISTR2 structure to an ASCII string
+ Warning: this version does UNIX codepage.
+********************************************************************/
+
+void unistr2_to_unix(char *dest, const UNISTR2 *str, size_t maxlen)
+{
+ unistr2_to_mbcp(dest, str, maxlen, ucs2_to_unixcp);
}
/*******************************************************************
diff --git a/source/libsmb/cli_lsarpc.c b/source/libsmb/cli_lsarpc.c
index 3234c366568..0a0c5323304 100644
--- a/source/libsmb/cli_lsarpc.c
+++ b/source/libsmb/cli_lsarpc.c
@@ -217,7 +217,10 @@ NTSTATUS cli_lsa_close(struct cli_state *cli, TALLOC_CTX *mem_ctx,
return result;
}
-/** Lookup a list of sids */
+/** Lookup a list of sids */
+/********************************************************************
+ Converts SIDs to names. Outgoing names are in UNIX charset.
+*********************************************************************/
NTSTATUS cli_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
POLICY_HND *pol, int num_sids, DOM_SID *sids,
@@ -308,8 +311,8 @@ NTSTATUS cli_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
if (dom_idx != 0xffffffff) {
- unistr2_to_ascii(dom_name, &ref.ref_dom[dom_idx].uni_dom_name, sizeof(dom_name)- 1);
- unistr2_to_ascii(name, &t_names.uni_name[i], sizeof(name) - 1);
+ unistr2_to_unix(dom_name, &ref.ref_dom[dom_idx].uni_dom_name, sizeof(dom_name)- 1);
+ unistr2_to_unix(name, &t_names.uni_name[i], sizeof(name) - 1);
(*names)[i] = talloc_strdup(mem_ctx, name);
(*domains)[i] = talloc_strdup(mem_ctx, dom_name);
@@ -335,6 +338,9 @@ NTSTATUS cli_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
}
/** Lookup a list of names */
+/********************************************************************
+ Converts names to SIDs. Incoming names are in UNIX charset.
+*********************************************************************/
NTSTATUS cli_lsa_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx,
POLICY_HND *pol, int num_names,
@@ -358,6 +364,7 @@ NTSTATUS cli_lsa_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx,
/* Marshall data and send request */
+ /* This call converts from UNIX to DOS charset then to unicode. */
init_q_lookup_names(mem_ctx, &q, pol, num_names, names);
if (!lsa_io_q_lookup_names("", &q, &qbuf, 0) ||
@@ -488,7 +495,7 @@ NTSTATUS cli_lsa_query_info_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
case 3:
if (r.dom.id3.buffer_dom_name != 0) {
- unistr2_to_ascii(domain_name,
+ unistr2_to_unix(domain_name,
&r.dom.id3.
uni_domain_name,
sizeof (fstring) - 1);
@@ -503,7 +510,7 @@ NTSTATUS cli_lsa_query_info_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
case 5:
if (r.dom.id5.buffer_dom_name != 0) {
- unistr2_to_ascii(domain_name, &r.dom.id5.
+ unistr2_to_unix(domain_name, &r.dom.id5.
uni_domain_name,
sizeof (fstring) - 1);
}
@@ -604,7 +611,7 @@ NTSTATUS cli_lsa_enum_trust_dom(struct cli_state *cli, TALLOC_CTX *mem_ctx,
for (i = 0; i < r.num_domains; i++) {
fstring tmp;
- unistr2_to_ascii(tmp, &r.uni_domain_name[i],
+ unistr2_to_unix(tmp, &r.uni_domain_name[i],
sizeof(tmp) - 1);
(*domain_names)[i] = talloc_strdup(mem_ctx, tmp);
sid_copy(&(*domain_sids)[i], &r.domain_sid[i].sid);
@@ -688,7 +695,7 @@ NTSTATUS cli_lsa_enum_privilege(struct cli_state *cli, TALLOC_CTX *mem_ctx,
for (i = 0; i < r.count; i++) {
fstring name;
- unistr2_to_ascii( name, &r.privs[i].name, sizeof(name)-1);
+ unistr2_to_unix( name, &r.privs[i].name, sizeof(name)-1);
(*privs_name)[i] = talloc_strdup(mem_ctx, name);
@@ -745,7 +752,7 @@ NTSTATUS cli_lsa_get_dispname(struct cli_state *cli, TALLOC_CTX *mem_ctx,
/* Return output parameters */
- unistr2_to_ascii(description ,&r.desc, sizeof(description)-1);
+ unistr2_to_unix(description ,&r.desc, sizeof(description)-1);
*lang_id_desc = r.lang_id;
done:
diff --git a/source/libsmb/cli_netlogon.c b/source/libsmb/cli_netlogon.c
index cb438de9873..560de2192ee 100644
--- a/source/libsmb/cli_netlogon.c
+++ b/source/libsmb/cli_netlogon.c
@@ -443,7 +443,7 @@ NTSTATUS cli_netlogon_sam_logon(struct cli_state *cli, TALLOC_CTX *mem_ctx,
0, /* param_ctrl */
0xdead, 0xbeef, /* LUID? */
username, cli->clnt_name_slash,
- cli->sess_key, lm_owf_user_pwd,
+ (char *)cli->sess_key, lm_owf_user_pwd,
nt_owf_user_pwd);
break;
@@ -455,8 +455,8 @@ NTSTATUS cli_netlogon_sam_logon(struct cli_state *cli, TALLOC_CTX *mem_ctx,
generate_random_buffer(chal, 8, False);
- SMBencrypt(password, chal, local_lm_response);
- SMBNTencrypt(password, chal, local_nt_response);
+ SMBencrypt((const uchar *)password, chal, local_lm_response);
+ SMBNTencrypt((const uchar *)password, chal, local_nt_response);
init_id_info2(&ctr.auth.id2, lp_workgroup(),
0, /* param_ctrl */
diff --git a/source/libsmb/cli_samr.c b/source/libsmb/cli_samr.c
index e5ddc8f7bd1..b1231c6cbd2 100644
--- a/source/libsmb/cli_samr.c
+++ b/source/libsmb/cli_samr.c
@@ -566,7 +566,7 @@ NTSTATUS cli_samr_enum_dom_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx,
(*dom_groups)[i].rid = r.sam[i].rid;
if (r.sam[i].hdr_name.buffer) {
- unistr2_to_ascii((*dom_groups)[i].acct_name,
+ unistr2_to_unix((*dom_groups)[i].acct_name,
&r.uni_grp_name[name_idx],
sizeof(fstring) - 1);
name_idx++;
@@ -644,7 +644,7 @@ NTSTATUS cli_samr_enum_als_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx,
(*dom_groups)[i].rid = r.sam[i].rid;
if (r.sam[i].hdr_name.buffer) {
- unistr2_to_ascii((*dom_groups)[i].acct_name,
+ unistr2_to_unix((*dom_groups)[i].acct_name,
&r.uni_grp_name[name_idx],
sizeof(fstring) - 1);
name_idx++;
@@ -937,7 +937,7 @@ NTSTATUS cli_samr_lookup_rids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
for (i = 0; i < r.num_names1; i++) {
fstring tmp;
- unistr2_to_ascii(tmp, &r.uni_name[i], sizeof(tmp) - 1);
+ unistr2_to_unix(tmp, &r.uni_name[i], sizeof(tmp) - 1);
(*names)[i] = talloc_strdup(mem_ctx, tmp);
(*name_types)[i] = r.type[i];
}
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 5e1cbeca386..4e81ad99276 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -154,10 +154,10 @@ static BOOL cli_session_setup_guest(struct cli_state *cli)
SSVAL(cli->outbuf,smb_vwv8,0);
SIVAL(cli->outbuf,smb_vwv11,capabilities);
p = smb_buf(cli->outbuf);
- p += clistr_push(cli, p, "", -1, STR_TERMINATE); /* username */
- p += clistr_push(cli, p, "", -1, STR_TERMINATE); /* workgroup */
- p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
- p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, "", -1, STR_TERMINATE|STR_CONVERT); /* username */
+ p += clistr_push(cli, p, "", -1, STR_TERMINATE|STR_CONVERT); /* workgroup */
+ p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE|STR_CONVERT);
+ p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
cli_send_smb(cli);
@@ -194,7 +194,7 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
int passlen;
char *p;
- passlen = clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE);
+ passlen = clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE|STR_CONVERT);
set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
@@ -211,10 +211,10 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
p = smb_buf(cli->outbuf);
memcpy(p, pword, passlen);
p += passlen;
- p += clistr_push(cli, p, user, -1, STR_TERMINATE); /* username */
- p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE); /* workgroup */
- p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
- p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, user, -1, STR_TERMINATE|STR_CONVERT); /* username */
+ p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE|STR_CONVERT); /* workgroup */
+ p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE|STR_CONVERT);
+ p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
cli_send_smb(cli);
@@ -258,8 +258,8 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
/* non encrypted password supplied. */
passlen = 24;
ntpasslen = 24;
- clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE);
- clistr_push(cli, ntpword, ntpass, sizeof(ntpword), STR_TERMINATE);
+ clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE|STR_CONVERT);
+ clistr_push(cli, ntpword, ntpass, sizeof(ntpword), STR_TERMINATE|STR_CONVERT);
SMBencrypt((uchar *)pword,cli->cryptkey,(uchar *)pword);
SMBNTencrypt((uchar *)ntpword,cli->cryptkey,(uchar *)ntpword);
} else {
@@ -285,10 +285,10 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
p = smb_buf(cli->outbuf);
memcpy(p,pword,passlen); p += passlen;
memcpy(p,ntpword,ntpasslen); p += ntpasslen;
- p += clistr_push(cli, p, user, -1, STR_TERMINATE|STR_UPPER);
- p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE|STR_UPPER);
- p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
- p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, user, -1, STR_TERMINATE|STR_UPPER|STR_CONVERT);
+ p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE|STR_UPPER|STR_CONVERT);
+ p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE|STR_CONVERT);
+ p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
cli_send_smb(cli);
diff --git a/source/libsmb/clifile.c b/source/libsmb/clifile.c
index ed13bf4d812..cce36613b74 100644
--- a/source/libsmb/clifile.c
+++ b/source/libsmb/clifile.c
@@ -42,11 +42,11 @@ static BOOL cli_link_internal(struct cli_state *cli, const char *fname_src, cons
SSVAL(param,0,hard_link ? SMB_SET_FILE_UNIX_HLINK : SMB_SET_FILE_UNIX_LINK);
p = &param[6];
- p += clistr_push(cli, p, fname_src, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname_src, -1, STR_TERMINATE|STR_CONVERT);
param_len = PTR_DIFF(p, param);
p = data;
- p += clistr_push(cli, p, fname_dst, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname_dst, -1, STR_TERMINATE|STR_CONVERT);
data_len = PTR_DIFF(p, data);
if (!cli_send_trans(cli, SMBtrans2,
@@ -77,7 +77,7 @@ static BOOL cli_link_internal(struct cli_state *cli, const char *fname_src, cons
uint32 unix_perms_to_wire(mode_t perms)
{
- uint ret = 0;
+ uint32 ret = 0;
ret |= ((perms & S_IXOTH) ? UNIX_X_OTH : 0);
ret |= ((perms & S_IWOTH) ? UNIX_W_OTH : 0);
@@ -95,7 +95,7 @@ uint32 unix_perms_to_wire(mode_t perms)
ret |= ((perms & S_ISGID) ? UNIX_SET_GID : 0);
#endif
#ifdef S_ISUID
- ret |= ((perms & S_ISVTX) ? UNIX_SET_UID : 0);
+ ret |= ((perms & S_ISUID) ? UNIX_SET_UID : 0);
#endif
return ret;
}
@@ -137,7 +137,7 @@ static BOOL cli_unix_chmod_chown_internal(struct cli_state *cli, const char *fna
SSVAL(param,0,SMB_SET_FILE_UNIX_BASIC);
p = &param[6];
- p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, -1, STR_TERMINATE|STR_CONVERT);
param_len = PTR_DIFF(p, param);
SIVAL(data,40,uid);
@@ -208,9 +208,9 @@ BOOL cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, fname_src, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname_src, -1, STR_TERMINATE|STR_CONVERT);
*p++ = 4;
- p += clistr_push(cli, p, fname_dst, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname_dst, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -245,7 +245,7 @@ BOOL cli_unlink(struct cli_state *cli, const char *fname)
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
cli_send_smb(cli);
@@ -279,7 +279,7 @@ BOOL cli_mkdir(struct cli_state *cli, const char *dname)
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, dname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, dname, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -314,7 +314,7 @@ BOOL cli_rmdir(struct cli_state *cli, const char *dname)
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, dname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, dname, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -412,7 +412,7 @@ int cli_nt_create_full(struct cli_state *cli, const char *fname, uint32 DesiredA
p += len;
SSVAL(cli->outbuf,smb_ntcreate_NameLength, len);
/* sigh. this copes with broken netapp filer behaviour */
- p += clistr_push(cli, p, "", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, "", -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -501,7 +501,7 @@ int cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode
}
p = smb_buf(cli->outbuf);
- p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -872,7 +872,7 @@ BOOL cli_getatr(struct cli_state *cli, const char *fname,
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -923,7 +923,7 @@ BOOL cli_setatr(struct cli_state *cli, const char *fname, uint16 attr, time_t t)
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, -1, STR_TERMINATE|STR_CONVERT);
*p++ = 4;
cli_setup_bcc(cli, p);
@@ -960,7 +960,7 @@ BOOL cli_chkpath(struct cli_state *cli, const char *path)
cli_setup_packet(cli);
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, path2, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, path2, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
@@ -1021,7 +1021,7 @@ int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path)
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, path, -1, STR_TERMINATE);
+ p += clistr_push(cli, p, path, -1, STR_TERMINATE|STR_CONVERT);
cli_setup_bcc(cli, p);
diff --git a/source/libsmb/clilist.c b/source/libsmb/clilist.c
index 0c80044b68f..77ffe7b41b0 100644
--- a/source/libsmb/clilist.c
+++ b/source/libsmb/clilist.c
@@ -177,7 +177,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
SIVAL(param,8,0);
p = param+12;
p += clistr_push(cli, param+12, mask, -1,
- STR_TERMINATE);
+ STR_TERMINATE|STR_CONVERT);
} else {
setup = TRANSACT2_FINDNEXT;
SSVAL(param,0,ff_dir_handle);
@@ -187,7 +187,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
SSVAL(param,10,8+4+2); /* continue + resume required + close on end */
p = param+12;
p += clistr_push(cli, param+12, mask, -1,
- STR_TERMINATE);
+ STR_TERMINATE|STR_CONVERT);
}
param_len = PTR_DIFF(p, param);
@@ -369,7 +369,7 @@ int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
p = smb_buf(cli->outbuf);
*p++ = 4;
- p += clistr_push(cli, p, first?mask:"", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, first?mask:"", -1, STR_TERMINATE|STR_CONVERT);
*p++ = 5;
if (first) {
SSVAL(p,0,0);
diff --git a/source/libsmb/clirap.c b/source/libsmb/clirap.c
index 2f1423aa1a1..e0e5bc0c1f8 100644
--- a/source/libsmb/clirap.c
+++ b/source/libsmb/clirap.c
@@ -386,7 +386,7 @@ BOOL cli_qpathinfo(struct cli_state *cli, const char *fname,
memset(p, 0, 6);
SSVAL(p, 0, SMB_INFO_STANDARD);
p += 6;
- p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE );
+ p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE|STR_CONVERT );
param_len = PTR_DIFF(p, param);
@@ -462,7 +462,7 @@ BOOL cli_qpathinfo2(struct cli_state *cli, const char *fname,
memset(p, 0, 6);
SSVAL(p, 0, SMB_QUERY_FILE_ALL_INFO);
p += 6;
- p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE );
+ p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE|STR_CONVERT );
param_len = PTR_DIFF(p, param);
@@ -649,7 +649,7 @@ NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, fstrin
memset(p, 0, 6);
SSVAL(p, 0, SMB_QUERY_FILE_ALT_NAME_INFO);
p += 6;
- p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE);
+ p += clistr_push(cli, p, fname, sizeof(pstring)-6, STR_TERMINATE|STR_CONVERT);
param_len = PTR_DIFF(p, param);
diff --git a/source/libsmb/clitrans.c b/source/libsmb/clitrans.c
index 96c041fa3be..bd8647421b2 100644
--- a/source/libsmb/clitrans.c
+++ b/source/libsmb/clitrans.c
@@ -46,12 +46,12 @@ BOOL cli_send_trans(struct cli_state *cli, int trans,
memset(cli->outbuf,'\0',smb_size);
set_message(cli->outbuf,14+lsetup,0,True);
- SCVAL(cli->outbuf,smb_com,trans);
+ SCVAL(cli->outbuf,smb_com,trans);
SSVAL(cli->outbuf,smb_tid, cli->cnum);
cli_setup_packet(cli);
if (pipe_name) {
- pipe_name_len = clistr_push(cli, smb_buf(cli->outbuf), pipe_name, -1, STR_TERMINATE);
+ pipe_name_len = clistr_push(cli, smb_buf(cli->outbuf), pipe_name, -1, STR_TERMINATE|STR_CONVERT);
}
outparam = smb_buf(cli->outbuf)+(trans==SMBtrans ? pipe_name_len : 3);
diff --git a/source/libsmb/namequery.c b/source/libsmb/namequery.c
index 24018bfb26a..09825ac6f1e 100644
--- a/source/libsmb/namequery.c
+++ b/source/libsmb/namequery.c
@@ -292,7 +292,7 @@ BOOL name_register(int fd, const char *name, int name_type,
****************************************************************************/
struct in_addr *name_query(int fd,const char *name,int name_type,
BOOL bcast,BOOL recurse,
- struct in_addr to_ip, int *count)
+ struct in_addr to_ip, int *count, int *flags)
{
BOOL found=False;
int i, retries = 3;
@@ -305,6 +305,7 @@ struct in_addr *name_query(int fd,const char *name,int name_type,
memset((char *)&p,'\0',sizeof(p));
(*count) = 0;
+ (*flags) = 0;
nmb->header.name_trn_id = generate_trn_id();
nmb->header.opcode = 0;
@@ -428,6 +429,19 @@ struct in_addr *name_query(int fd,const char *name,int name_type,
found=True;
retries=0;
+ /* We add the flags back ... */
+ if (nmb2->header.response)
+ (*flags) |= NM_FLAGS_RS;
+ if (nmb2->header.nm_flags.authoritative)
+ (*flags) |= NM_FLAGS_AA;
+ if (nmb2->header.nm_flags.trunc)
+ (*flags) |= NM_FLAGS_TC;
+ if (nmb2->header.nm_flags.recursion_desired)
+ (*flags) |= NM_FLAGS_RD;
+ if (nmb2->header.nm_flags.recursion_available)
+ (*flags) |= NM_FLAGS_RA;
+ if (nmb2->header.nm_flags.bcast)
+ (*flags) |= NM_FLAGS_B;
free_packet(p2);
/*
@@ -655,10 +669,11 @@ BOOL name_resolve_bcast(const char *name, int name_type,
*/
for( i = num_interfaces-1; i >= 0; i--) {
struct in_addr sendto_ip;
+ int flags;
/* Done this way to fix compiler error on IRIX 5.x */
sendto_ip = *iface_bcast(*iface_n_ip(i));
*return_ip_list = name_query(sock, name, name_type, True,
- True, sendto_ip, return_count);
+ True, sendto_ip, return_count, &flags);
if(*return_ip_list != NULL) {
close(sock);
return True;
@@ -715,10 +730,11 @@ static BOOL resolve_wins(const char *name, int name_type,
interpret_addr(lp_socket_address()),
True );
if (sock != -1) {
+ int flags;
*return_iplist = name_query( sock, name,
name_type, False,
True, wins_ip,
- return_count);
+ return_count, &flags);
if(*return_iplist != NULL) {
close(sock);
return True;
@@ -792,15 +808,17 @@ static BOOL resolve_hosts(const char *name,
DEBUG(3,("resolve_hosts: Attempting host lookup for name %s<0x20>\n", name));
if (((hp = sys_gethostbyname(name)) != NULL) && (hp->h_addr != NULL)) {
- struct in_addr return_ip;
- putip((char *)&return_ip,(char *)hp->h_addr);
- *return_iplist = (struct in_addr *)malloc(sizeof(struct in_addr));
+ int i = 0, j;
+ while (hp->h_addr_list[i]) i++;
+ DEBUG(10, ("%d addresses returned\n", i));
+ *return_iplist = (struct in_addr *)malloc(i*sizeof(struct in_addr));
if(*return_iplist == NULL) {
DEBUG(3,("resolve_hosts: malloc fail !\n"));
return False;
}
- **return_iplist = return_ip;
- *return_count = 1;
+ for (j = 0; j < i; j++)
+ putip(&(*return_iplist)[j], (char *)hp->h_addr_list[j]);
+ *return_count = i;
return True;
}
return False;
@@ -973,6 +991,15 @@ BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type)
return False;
}
+/**************************************************************************
+ Resolve a name to a list of addresses
+**************************************************************************/
+BOOL resolve_name_2(const char *name, struct in_addr **return_ip, int *count, int name_type)
+{
+
+ return internal_resolve_name(name, name_type, return_ip, count);
+
+}
/********************************************************
resolve a name of format \\server_name or \\ipaddress
@@ -1267,7 +1294,7 @@ BOOL get_dc_list(BOOL pdc_only, const char *group, struct in_addr **ip_list, int
char *p;
char *pserver = lp_passwordserver();
fstring name;
- int num_adresses = 0;
+ int num_addresses = 0;
struct in_addr *return_iplist = NULL;
if (! *pserver)
@@ -1284,12 +1311,12 @@ BOOL get_dc_list(BOOL pdc_only, const char *group, struct in_addr **ip_list, int
return True;
return internal_resolve_name(group, 0x1B, ip_list, count);
}
- num_adresses++;
+ num_addresses++;
}
- if (num_adresses == 0)
+ if (num_addresses == 0)
return internal_resolve_name(group, name_type, ip_list, count);
- return_iplist = (struct in_addr *)malloc(num_adresses * sizeof(struct in_addr));
+ return_iplist = (struct in_addr *)malloc(num_addresses * sizeof(struct in_addr));
if(return_iplist == NULL) {
DEBUG(3,("get_dc_list: malloc fail !\n"));
return False;
@@ -1297,10 +1324,22 @@ BOOL get_dc_list(BOOL pdc_only, const char *group, struct in_addr **ip_list, int
p = pserver;
*count = 0;
while (next_token(&p,name,LIST_SEP,sizeof(name))) {
- struct in_addr name_ip;
- if (resolve_name( name, &name_ip, 0x20) == False)
+ struct in_addr *more_ip, *tmp;
+ int count_more;
+ if (resolve_name_2( name, &more_ip, &count_more, 0x20) == False)
continue;
- return_iplist[(*count)++] = name_ip;
+ tmp = (struct in_addr *)realloc(return_iplist,(num_addresses + count_more) * sizeof(struct in_addr));
+ if (return_iplist == NULL) {
+ DEBUG(3, ("realloc failed with %d addresses\n", num_addresses + count_more));
+ SAFE_FREE(return_iplist);
+ SAFE_FREE(more_ip);
+ return False;
+ }
+ return_iplist = tmp;
+ memmove(&return_iplist[(*count)], more_ip, count_more * sizeof(struct in_addr));
+ SAFE_FREE(more_ip); /* Done with this ... */
+ *count += count_more;
+ num_addresses += count_more - 1;
}
*ip_list = return_iplist;
return (*count != 0);
diff --git a/source/libsmb/nmblib.c b/source/libsmb/nmblib.c
index 54f34cc233a..95d124c0208 100644
--- a/source/libsmb/nmblib.c
+++ b/source/libsmb/nmblib.c
@@ -1119,7 +1119,11 @@ char *dns_to_netbios_name(char *dns_name)
netbios name up to and including the '.' this even applies, by
mistake, to workgroup (domain) names, which is _really_ daft.
*/
- for (i = 15; i >= 0; i--)
+ /*
+ * We need to go up, not down, to avoid netbios names like
+ * fred.xyz being produced from fred.xyz.someco.com.
+ */
+ for (i = 0; i < 15; i++)
{
if (netbios_name[i] == '.')
{
diff --git a/source/libsmb/smbencrypt.c b/source/libsmb/smbencrypt.c
index c87ff61fdfc..9d862444e0e 100644
--- a/source/libsmb/smbencrypt.c
+++ b/source/libsmb/smbencrypt.c
@@ -59,7 +59,7 @@ void E_md4hash(const uchar *passwd, uchar *p16)
int16 wpwd[129];
/* Password cannot be longer than 128 characters */
- len = strlen(passwd);
+ len = strlen((const char *)passwd);
if(len > 128)
len = 128;
/* Password must be converted to NT unicode - null terminated. */
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 90ef61ddf51..21f6bb7cf27 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -743,6 +743,7 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
int i;
share_mode_entry *shares;
BOOL need_store=False;
+ BOOL ret = True;
/* read in the existing share modes */
dbuf = tdb_fetch(tdb, locking_key(dev, inode));
@@ -764,15 +765,15 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
if (need_store) {
if (data->u.num_share_mode_entries == 0) {
if (tdb_delete(tdb, locking_key(dev, inode)) == -1)
- need_store = False;
+ ret = False;
} else {
if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1)
- need_store = False;
+ ret = False;
}
}
SAFE_FREE(dbuf.dptr);
- return need_store;
+ return ret;
}
/*******************************************************************
diff --git a/source/msdfs/msdfs.c b/source/msdfs/msdfs.c
index 97f3a7b2092..5220f38ab8d 100644
--- a/source/msdfs/msdfs.c
+++ b/source/msdfs/msdfs.c
@@ -84,9 +84,11 @@ static BOOL parse_dfs_path(char* pathname, struct dfs_path* pdp)
static BOOL create_conn_struct( connection_struct *conn, int snum)
{
+
ZERO_STRUCTP(conn);
conn->service = snum;
conn->connectpath = lp_pathname(snum);
+ pstring_sub(conn->connectpath, "%S", lp_servicename(snum));
if (!smbd_vfs_init(conn)) {
DEBUG(0,("create_conn_struct: smbd_vfs_init failed.\n"));
@@ -366,8 +368,10 @@ BOOL get_referred_path(char *pathname, struct junction_map* jn,
/* Verify the share is a dfs root */
snum = lp_servicenumber(jn->service_name);
- if(snum < 0)
- return False;
+ if(snum < 0) {
+ if ((snum = find_service(jn->service_name)) < 0)
+ return False;
+ }
if (!create_conn_struct(conn, snum))
return False;
diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
index 52f9d6d9f03..122bd8ba42a 100644
--- a/source/nmbd/nmbd.c
+++ b/source/nmbd/nmbd.c
@@ -77,7 +77,7 @@ static void terminate(void)
Catch a SIGTERM signal.
**************************************************************************** */
-static VOLATILE sig_atomic_t got_sig_term;
+static SIG_ATOMIC_T got_sig_term;
static void sig_term(int sig)
{
@@ -89,7 +89,7 @@ static void sig_term(int sig)
Catch a SIGHUP signal.
**************************************************************************** */
-static VOLATILE sig_atomic_t reload_after_sighup;
+static SIG_ATOMIC_T reload_after_sighup;
static void sig_hup(int sig)
{
diff --git a/source/nmbd/nmbd_namequery.c b/source/nmbd/nmbd_namequery.c
index 9d2a7a48958..945058d2b2b 100644
--- a/source/nmbd/nmbd_namequery.c
+++ b/source/nmbd/nmbd_namequery.c
@@ -108,7 +108,7 @@ static void query_name_response( struct subnet_record *subrec,
dbgtext( "Multiple (%d) responses ", rrec->num_msgs );
dbgtext( "received for a query on subnet %s ", subrec->subnet_name );
dbgtext( "for name %s.\nThis response ", nmb_namestr(question_name) );
- dbgtext( "was from IP %s, reporting", inet_ntoa(p->ip) );
+ dbgtext( "was from IP %s, reporting ", inet_ntoa(p->ip) );
dbgtext( "an IP address of %s.\n", inet_ntoa(answer_ip) );
}
diff --git a/source/nsswitch/hp_nss_common.h b/source/nsswitch/hp_nss_common.h
index 5f39e9abb05..5bd5374182e 100644
--- a/source/nsswitch/hp_nss_common.h
+++ b/source/nsswitch/hp_nss_common.h
@@ -23,8 +23,12 @@
Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_SYNCH_H
#include <synch.h>
+#endif
+#ifdef HAVE_PTHREAD_H
#include <pthread.h>
+#endif
typedef enum {
NSS_SUCCESS,
diff --git a/source/nsswitch/nss.h b/source/nsswitch/nss.h
index e021b013b50..d83a5e237ed 100644
--- a/source/nsswitch/nss.h
+++ b/source/nsswitch/nss.h
@@ -72,7 +72,7 @@ typedef enum
#define NSD_MEM_VOLATILE 1
#define NSD_MEM_DYNAMIC 2
-#elif defined(HPUX)
+#elif defined(HPUX) && defined(HAVE_NSSWITCH_H)
/* HP-UX 11 */
#include "nsswitch/hp_nss_common.h"
diff --git a/source/nsswitch/wb_common.c b/source/nsswitch/wb_common.c
index 6a2143f8f0f..928b70d8b1b 100644
--- a/source/nsswitch/wb_common.c
+++ b/source/nsswitch/wb_common.c
@@ -168,7 +168,7 @@ int winbind_open_pipe_sock(void)
return winbindd_fd;
}
-/* Write data to winbindd socket with timeout */
+/* Write data to winbindd socket */
int write_sock(void *buffer, int count)
{
@@ -234,7 +234,7 @@ int write_sock(void *buffer, int count)
return nwritten;
}
-/* Read data from winbindd socket with timeout */
+/* Read data from winbindd socket */
static int read_sock(void *buffer, int count)
{
diff --git a/source/nsswitch/wbinfo.c b/source/nsswitch/wbinfo.c
index 9803d6505f4..3b44c40ba26 100644
--- a/source/nsswitch/wbinfo.c
+++ b/source/nsswitch/wbinfo.c
@@ -3,7 +3,7 @@
Winbind status program.
- Copyright (C) Tim Potter 2000
+ Copyright (C) Tim Potter 2000-2002
Copyright (C) Andrew Bartlett 2002
This program is free software; you can redistribute it and/or modify
@@ -257,11 +257,11 @@ static BOOL wbinfo_check_secret(void)
if (result) {
- if (response.data.num_entries == 0)
+ if (response.data.auth.nt_status == 0)
printf("Secret is good\n");
else
printf("Secret is bad\n0x%08x\n",
- response.data.num_entries);
+ response.data.auth.nt_status);
return True;
}
@@ -458,6 +458,8 @@ static BOOL wbinfo_auth(char *username)
return result == NSS_STATUS_SUCCESS;
}
+#ifdef WITH_WINBIND_AUTH_CRAP
+
/* Authenticate a user with a challenge/response */
static BOOL wbinfo_auth_crap(char *username)
@@ -512,6 +514,8 @@ static BOOL wbinfo_auth_crap(char *username)
return result == NSS_STATUS_SUCCESS;
}
+#endif /* WITH_WINBIND_AUTH_CRAP */
+
/* Print domain users */
static BOOL print_domain_users(void)
@@ -593,8 +597,10 @@ static BOOL wbinfo_set_auth_user(char *username)
/* Store in secrets.tdb */
- if (!secrets_store(SECRETS_AUTH_USER, username,
- strlen(username) + 1) ||
+ secrets_init();
+
+ if (!secrets_store(SECRETS_AUTH_USER, user,
+ strlen(user) + 1) ||
!secrets_store(SECRETS_AUTH_DOMAIN, domain,
strlen(domain) + 1) ||
!secrets_store(SECRETS_AUTH_PASSWORD, password,
@@ -625,7 +631,7 @@ static BOOL wbinfo_ping(void)
static void usage(void)
{
printf("Usage: wbinfo -ug | -n name | -sSY sid | -UG uid/gid | -tm "
- "| -a user%%password\n");
+ "| -[aA] user%%password\n");
printf("\t-u\t\t\tlists all domain users\n");
printf("\t-g\t\t\tlists all domain groups\n");
printf("\t-n name\t\t\tconverts name to sid\n");
@@ -640,6 +646,7 @@ static void usage(void)
printf("\t-m\t\t\tlist trusted domains\n");
printf("\t-r user\t\t\tget user groups\n");
printf("\t-a user%%password\tauthenticate user\n");
+ printf("\t-A user%%password\tstore user and password used by winbindd (root only)\n");
printf("\t-p 'ping' winbindd to see if it is alive\n");
printf("\t--sequence\t\tshow sequence numbers of all domains\n");
}
@@ -648,7 +655,7 @@ static void usage(void)
enum {
OPT_SET_AUTH_USER = 1000,
- OPT_SEQUENCE,
+ OPT_SEQUENCE
};
int main(int argc, char **argv)
@@ -683,7 +690,7 @@ int main(int argc, char **argv)
{ "sequence", 0, POPT_ARG_NONE, 0, OPT_SEQUENCE },
{ "user-groups", 'r', POPT_ARG_STRING, &string_arg, 'r' },
{ "authenticate", 'a', POPT_ARG_STRING, &string_arg, 'a' },
- { "set-auth-user", 0, POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER },
+ { "set-auth-user", 'A', POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER },
{ "ping", 'p', POPT_ARG_NONE, 0, 'p' },
{ 0, 0, 0, 0 }
};
@@ -838,13 +845,13 @@ int main(int argc, char **argv)
"plaintext password\n", string_arg);
got_error = True;
}
-
+#ifdef WITH_WINBIND_AUTH_CRAP
if (!wbinfo_auth_crap(string_arg)) {
printf("Could not authenticate user %s with "
"challenge/response\n", string_arg);
got_error = True;
}
-
+#endif
if (got_error)
goto done;
break;
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c
index 0a49f5ec968..c087c6c7ad9 100644
--- a/source/nsswitch/winbind_nss.c
+++ b/source/nsswitch/winbind_nss.c
@@ -659,6 +659,17 @@ static NSS_STATUS fill_pwent(struct passwd *result,
strcpy(result->pw_shell, pw->pw_shell);
+ /* The struct passwd for Solaris has some extra fields which must
+ be initialised or nscd crashes. */
+
+#if HAVE_PASSWD_PW_COMMENT
+ result->pw_comment = "";
+#endif
+
+#if HAVE_PASSWD_PW_AGE
+ result->pw_age = "";
+#endif
+
return NSS_STATUS_SUCCESS;
}
@@ -856,7 +867,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
}
ret = fill_pwent(result, &pw_cache[ndx_pw_cache],
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -906,7 +917,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -919,7 +930,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -968,7 +979,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw, &buffer,
- &buflen);
+ (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -981,7 +992,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1105,7 +1116,7 @@ _nss_winbind_getgrent_r(struct group *result,
ret = fill_grent(result, &gr_cache[ndx_gr_cache],
((char *)getgrent_response.extra_data)+mem_ofs,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -1165,7 +1176,7 @@ _nss_winbind_getgrnam_r(const char *name,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1179,7 +1190,7 @@ _nss_winbind_getgrnam_r(const char *name,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1228,7 +1239,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1242,7 +1253,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
diff --git a/source/nsswitch/winbind_nss_config.h b/source/nsswitch/winbind_nss_config.h
index 0de63878be5..00cd5c12e47 100644
--- a/source/nsswitch/winbind_nss_config.h
+++ b/source/nsswitch/winbind_nss_config.h
@@ -38,6 +38,10 @@
#include <unistd.h>
#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
@@ -129,11 +133,15 @@ typedef int BOOL;
#endif
/* zero a structure */
+#ifndef ZERO_STRUCT
#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
+#endif
/* zero a structure given a pointer to the structure */
+#ifndef ZERO_STRUCTP
#define ZERO_STRUCTP(x) { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); }
-
+#endif
+
/* Some systems (SCO) treat UNIX domain sockets as FIFOs */
#ifndef S_IFSOCK
diff --git a/source/nsswitch/winbindd.c b/source/nsswitch/winbindd.c
index 666472eddbe..65361b571c4 100644
--- a/source/nsswitch/winbindd.c
+++ b/source/nsswitch/winbindd.c
@@ -50,14 +50,21 @@ static BOOL reload_services_file(BOOL test)
snprintf(logfile, sizeof(logfile), "%s/log.winbindd", LOGFILEBASE);
lp_set_logfile(logfile);
- reopen_logs();
+ if (!reopen_logs()) {
+ fprintf(stderr, "Could not open logfile: %s\n", logfile);
+ fprintf(stderr, "Continuing in the hope that that is OK\n");
+ }
ret = lp_load(servicesf,False,False,True);
snprintf(logfile, sizeof(logfile), "%s/log.winbindd", LOGFILEBASE);
lp_set_logfile(logfile);
- reopen_logs();
+ if (!reopen_logs()) {
+ fprintf(stderr, "Could not open logfile: %s\n", logfile);
+ fprintf(stderr, "Continuing in the hope that that is OK\n");
+ }
+
load_interfaces();
return(ret);
@@ -228,7 +235,9 @@ static struct dispatch_table dispatch_table[] = {
/* PAM auth functions */
{ WINBINDD_PAM_AUTH, winbindd_pam_auth, "PAM_AUTH" },
+#ifdef WITH_WINBIND_AUTH_CRAP
{ WINBINDD_PAM_AUTH_CRAP, winbindd_pam_auth_crap, "AUTH_CRAP" },
+#endif
{ WINBINDD_PAM_CHAUTHTOK, winbindd_pam_chauthtok, "CHAUTHTOK" },
/* Enumeration functions */
@@ -750,7 +759,10 @@ int main(int argc, char **argv)
lp_set_logfile(logfile);
setup_logging("winbindd", interactive);
- reopen_logs();
+ if (!reopen_logs()) {
+ fprintf(stderr, "Could not open logfile: %s\n", logfile);
+ fprintf(stderr, "Continuing in the hope that that is OK\n");
+ }
DEBUG(1, ("winbindd version %s started.\n", VERSION ) );
DEBUGADD( 1, ( "Copyright The Samba Team 2000-2001\n" ) );
@@ -760,8 +772,6 @@ int main(int argc, char **argv)
exit(1);
}
- pidfile_create("winbindd");
-
codepage_initialise(lp_client_code_page());
/* Setup names. */
@@ -777,8 +787,11 @@ int main(int argc, char **argv)
fstrcpy(global_myworkgroup, lp_workgroup());
- if (!interactive)
+ if (!interactive) {
become_daemon();
+ pidfile_create("winbindd");
+ }
+
#if HAVE_SETPGID
/*
@@ -791,7 +804,12 @@ int main(int argc, char **argv)
load_interfaces();
- secrets_init();
+ if (!secrets_init()) {
+
+ DEBUG(0,("Could not initialize domain trust account secrets. Giving up\n"));
+ return 1;
+
+ }
/* Get list of domains we look up requests for. This includes the
domain which we are a member of as well as any trusted
diff --git a/source/nsswitch/winbindd_cache.c b/source/nsswitch/winbindd_cache.c
index 3a76ba97fae..4978ced334d 100644
--- a/source/nsswitch/winbindd_cache.c
+++ b/source/nsswitch/winbindd_cache.c
@@ -275,7 +275,7 @@ static struct cache_entry *wcache_fetch(struct winbind_cache *cache,
}
centry = smb_xmalloc(sizeof(*centry));
- centry->data = data.dptr;
+ centry->data = (uchar *)data.dptr;
centry->len = data.dsize;
centry->ofs = 0;
@@ -389,7 +389,7 @@ static void centry_end(struct cache_entry *centry, const char *format, ...)
key.dptr = kstr;
key.dsize = strlen(kstr);
- data.dptr = centry->data;
+ data.dptr = (char *)centry->data;
data.dsize = centry->ofs;
tdb_store(wcache->tdb, key, data, TDB_REPLACE);
@@ -410,15 +410,18 @@ static void wcache_save_name_to_sid(struct winbindd_domain *domain, NTSTATUS sta
{
struct cache_entry *centry;
uint32 len;
+ fstring uname;
centry = centry_start(domain, status);
if (!centry) return;
len = sid_size(sid);
centry_expand(centry, len);
centry_put_uint32(centry, type);
- sid_linearize(centry->data + centry->ofs, len, sid);
+ sid_linearize((char *)centry->data + centry->ofs, len, sid);
centry->ofs += len;
- centry_end(centry, "NS/%s/%s", domain->name, name);
+ fstrcpy(uname, name);
+ strupper(uname);
+ centry_end(centry, "NS/%s/%s", domain->name, uname);
centry_free(centry);
}
@@ -448,7 +451,7 @@ static void wcache_save_user(struct winbindd_domain *domain, NTSTATUS status, WI
centry_put_string(centry, info->full_name);
centry_put_uint32(centry, info->user_rid);
centry_put_uint32(centry, info->group_rid);
- centry_end(centry, "U/%s/%x", domain->name, info->user_rid);
+ centry_end(centry, "U/%s/%d", domain->name, info->user_rid);
centry_free(centry);
}
@@ -597,13 +600,16 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
+ fstring uname;
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "NS/%s/%s", domain->name, name);
+ fstrcpy(uname, name);
+ strupper(uname);
+ centry = wcache_fetch(cache, domain, "NS/%s/%s", domain->name, uname);
if (!centry) goto do_query;
*type = centry_uint32(centry);
- sid_parse(centry->data + centry->ofs, centry->len - centry->ofs, sid);
+ sid_parse((char *)centry->data + centry->ofs, centry->len - centry->ofs, sid);
status = centry->status;
centry_free(centry);
@@ -620,6 +626,9 @@ do_query:
/* and save it */
wcache_save_name_to_sid(domain, status, name, sid, *type);
+ /* We can't save the sid to name mapping as we don't know the
+ correct case of the name without looking it up */
+
return status;
}
@@ -661,6 +670,7 @@ do_query:
/* and save it */
refresh_sequence_number(domain, True);
wcache_save_sid_to_name(domain, status, sid, *name, *type, rid);
+ wcache_save_name_to_sid(domain, status, *name, sid, *type);
return status;
}
@@ -678,7 +688,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "U/%s/%x", domain->name, user_rid);
+ centry = wcache_fetch(cache, domain, "U/%s/%d", domain->name, user_rid);
if (!centry) goto do_query;
info->acct_name = centry_string(centry, mem_ctx);
@@ -719,7 +729,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "UG/%s/%x", domain->name, user_rid);
+ centry = wcache_fetch(cache, domain, "UG/%s/%d", domain->name, user_rid);
if (!centry) goto do_query;
*num_groups = centry_uint32(centry);
@@ -754,7 +764,7 @@ do_query:
for (i=0; i<(*num_groups); i++) {
centry_put_uint32(centry, (*user_gids)[i]);
}
- centry_end(centry, "UG/%s/%x", domain->name, user_rid);
+ centry_end(centry, "UG/%s/%d", domain->name, user_rid);
centry_free(centry);
skip_save:
@@ -775,7 +785,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "GM/%s/%x", domain->name, group_rid);
+ centry = wcache_fetch(cache, domain, "GM/%s/%d", domain->name, group_rid);
if (!centry) goto do_query;
*num_names = centry_uint32(centry);
@@ -824,7 +834,7 @@ do_query:
centry_put_string(centry, (*names)[i]);
centry_put_uint32(centry, (*name_types)[i]);
}
- centry_end(centry, "GM/%s/%x", domain->name, group_rid);
+ centry_end(centry, "GM/%s/%d", domain->name, group_rid);
centry_free(centry);
skip_save:
diff --git a/source/nsswitch/winbindd_misc.c b/source/nsswitch/winbindd_misc.c
index 5678bdaa5af..c71776f7096 100644
--- a/source/nsswitch/winbindd_misc.c
+++ b/source/nsswitch/winbindd_misc.c
@@ -88,7 +88,10 @@ enum winbindd_result winbindd_check_machine_acct(struct winbindd_cli_state *stat
"good" : "bad"));
done:
- state->response.data.num_entries = NT_STATUS_V(result);
+ state->response.data.auth.nt_status = NT_STATUS_V(result);
+ fstrcpy(state->response.data.auth.nt_status_string, get_nt_error_msg(result));
+ fstrcpy(state->response.data.auth.error_string, get_nt_error_msg(result));
+ /*state->response.data.auth.pam_error = nt_status_to_pam(result);*/
return WINBINDD_OK;
}
diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c
index 5adbf98789f..45aebe385d2 100644
--- a/source/nsswitch/winbindd_pam.c
+++ b/source/nsswitch/winbindd_pam.c
@@ -126,6 +126,7 @@ done:
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
+#ifdef WITH_WINBIND_AUTH_CRAP
/* Challenge Response Authentication Protocol */
enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
@@ -217,6 +218,8 @@ done:
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
+#endif /* WITH_WINBIND_AUTH_CRAP */
+
/* Change a user password */
enum winbindd_result winbindd_pam_chauthtok(struct winbindd_cli_state *state)
diff --git a/source/nsswitch/winbindd_rpc.c b/source/nsswitch/winbindd_rpc.c
index 684ce5ac288..edf445a0ec9 100644
--- a/source/nsswitch/winbindd_rpc.c
+++ b/source/nsswitch/winbindd_rpc.c
@@ -23,6 +23,24 @@
#include "winbindd.h"
+/*******************************************************************
+ Duplicate a UNISTR2 string into a UNIX codepage null terminated char*
+ using a talloc context
+********************************************************************/
+
+static char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str)
+{
+ char *s;
+ int maxlen = (str->uni_str_len+1)*4;
+ if (!str->buffer)
+ return NULL;
+ s = (char *)talloc(ctx, maxlen); /* convervative */
+ if (!s)
+ return NULL;
+ unistr2_to_unix(s, str, maxlen);
+ return s;
+}
+
/* Query display info for a domain. This returns enough information plus a
bit extra to give an overview of domain users for the User Manager
application. */
@@ -92,6 +110,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
}
for (j=0;j<count;i++, j++) {
+ /* unistr2_tdup converts to UNIX charset. */
(*info)[i].acct_name = unistr2_tdup(mem_ctx, &info1.str[j].uni_acct_name);
(*info)[i].full_name = unistr2_tdup(mem_ctx, &info1.str[j].uni_full_name);
(*info)[i].user_rid = info1.sam[j].rid_user;
diff --git a/source/nsswitch/winbindd_util.c b/source/nsswitch/winbindd_util.c
index 06804b3b43f..90bc3479ea4 100644
--- a/source/nsswitch/winbindd_util.c
+++ b/source/nsswitch/winbindd_util.c
@@ -151,7 +151,7 @@ BOOL init_domain_list(void)
DEBUG(1, ("getting trusted domain list\n"));
- result = cache_methods.trusted_domains(domain, mem_ctx, &num_domains,
+ result = cache_methods.trusted_domains(domain, mem_ctx, (uint *)&num_domains,
&names, &dom_sids);
/* Add each domain to the trusted domain list */
diff --git a/source/nsswitch/winbindd_wins.c b/source/nsswitch/winbindd_wins.c
index af624170eb4..79f88ed6c2c 100644
--- a/source/nsswitch/winbindd_wins.c
+++ b/source/nsswitch/winbindd_wins.c
@@ -85,7 +85,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
int fd;
struct in_addr *ret = NULL;
struct in_addr p;
- int j;
+ int j, flags;
*count = 0;
@@ -95,13 +95,13 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
p = wins_srv_ip();
if( !is_zero_ip(p) ) {
- ret = name_query(fd,name,0x20,False,True, p, count);
+ ret = name_query(fd,name,0x20,False,True, p, count, &flags);
goto out;
}
if (lp_wins_support()) {
/* we are our own WINS server */
- ret = name_query(fd,name,0x20,False,True, *interpret_addr2("127.0.0.1"), count);
+ ret = name_query(fd,name,0x20,False,True, *interpret_addr2("127.0.0.1"), count, &flags);
goto out;
}
@@ -110,7 +110,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
j >= 0;
j--) {
struct in_addr *bcast = iface_n_bcast(j);
- ret = name_query(fd,name,0x20,True,True,*bcast,count);
+ ret = name_query(fd,name,0x20,True,True,*bcast,count, &flags);
if (ret) break;
}
diff --git a/source/nsswitch/wins.c b/source/nsswitch/wins.c
index c88bd379100..d74b006bb92 100644
--- a/source/nsswitch/wins.c
+++ b/source/nsswitch/wins.c
@@ -118,7 +118,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
int fd;
struct in_addr *ret = NULL;
struct in_addr p;
- int j;
+ int j, flags;
if (!initialised) {
nss_wins_init();
@@ -132,13 +132,13 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
p = wins_srv_ip();
if( !is_zero_ip(p) ) {
- ret = name_query(fd,name,0x20,False,True, p, count);
+ ret = name_query(fd,name,0x20,False,True, p, count, &flags);
goto out;
}
if (lp_wins_support()) {
/* we are our own WINS server */
- ret = name_query(fd,name,0x20,False,True, *interpret_addr2("127.0.0.1"), count);
+ ret = name_query(fd,name,0x20,False,True, *interpret_addr2("127.0.0.1"), count, &flags);
goto out;
}
@@ -147,7 +147,7 @@ static struct in_addr *lookup_byname_backend(const char *name, int *count)
j >= 0;
j--) {
struct in_addr *bcast = iface_n_bcast(j);
- ret = name_query(fd,name,0x20,True,True,*bcast,count);
+ ret = name_query(fd,name,0x20,True,True,*bcast,count, &flags);
if (ret) break;
}
@@ -319,4 +319,21 @@ _nss_wins_gethostbyname_r(const char *name, struct hostent *he,
return NSS_STATUS_SUCCESS;
}
+
+NSS_STATUS
+_nss_wins_gethostbyname2_r(const char *name, int af, struct hostent *he,
+ char *buffer, size_t buflen, int *errnop,
+ int *h_errnop)
+{
+ if(af!=AF_INET) {
+ *h_errnop = NO_DATA;
+ *errnop = EAFNOSUPPORT;
+ return NSS_STATUS_UNAVAIL;
+ }
+
+ return _nss_wins_gethostbyname_r(name,he,buffer,buflen,errnop,h_errnop);
+}
+
+
+
#endif
diff --git a/source/pam_smbpass/general.h b/source/pam_smbpass/general.h
index 0291146cbba..4de9d369631 100644
--- a/source/pam_smbpass/general.h
+++ b/source/pam_smbpass/general.h
@@ -11,12 +11,15 @@
#include <stdio.h>
#include <stdlib.h>
-#include <syslog.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
+#ifdef HAVE_SYSLOG_H
+#include <syslog.h>
+#endif
+
/*
* here is the string to inform the user that the new passwords they
* typed were not the same.
diff --git a/source/param/loadparm.c b/source/param/loadparm.c
index 3d9f64945cc..6fb88628fcf 100644
--- a/source/param/loadparm.c
+++ b/source/param/loadparm.c
@@ -175,6 +175,7 @@ typedef struct
char *szAddShareCommand;
char *szChangeShareCommand;
char *szDeleteShareCommand;
+ char *szManglingMethod;
int max_log_size;
int mangled_stack;
int max_xmit;
@@ -408,6 +409,7 @@ typedef struct
BOOL bUseClientDriver;
BOOL bDefaultDevmode;
BOOL bNTAclSupport;
+ BOOL bForceUnknownAclUser;
char dummy[3]; /* for alignment */
}
@@ -527,6 +529,7 @@ static service sDefault = {
False, /* bUseClientDriver */
False, /* bDefaultDevmode */
True, /* bNTAclSupport */
+ False, /* bForceUnknownAclUser */
"" /* dummy */
};
@@ -655,7 +658,8 @@ static struct enum_list enum_csc_policy[] = {
{CSC_POLICY_MANUAL, "manual"},
{CSC_POLICY_DOCUMENTS, "documents"},
{CSC_POLICY_PROGRAMS, "programs"},
- {CSC_POLICY_DISABLE, "disable"}
+ {CSC_POLICY_DISABLE, "disable"},
+ {-1,NULL}
};
/*
@@ -779,6 +783,7 @@ static struct parm_struct parm_table[] = {
{"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
{"directory security mask", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
{"force directory security mode", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
+ {"force unknown acl user", P_OCTAL, P_LOCAL, &sDefault.bForceUnknownAclUser, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
{"inherit permissions", P_BOOL, P_LOCAL, &sDefault.bInheritPerms, NULL, NULL, FLAG_SHARE},
{"inherit acls", P_BOOL, P_LOCAL, &sDefault.bInheritACLS, NULL, NULL, FLAG_SHARE},
{"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE},
@@ -831,7 +836,7 @@ static struct parm_struct parm_table[] = {
{"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, 0},
{"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, 0},
- {"status", P_BOOL, P_LOCAL, &sDefault.status, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_PRINT},
+ {"status", P_BOOL, P_LOCAL, &sDefault.status, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_PRINT | FLAG_DEPRECATED},
{"Protocol Options", P_SEP, P_SEPARATOR},
@@ -919,7 +924,8 @@ static struct parm_struct parm_table[] = {
{"printer driver location", P_STRING, P_LOCAL, &sDefault.szPrinterDriverLocation, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL | FLAG_DEPRECATED},
{"Filename Handling", P_SEP, P_SEPARATOR},
- {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, 0},
+ {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, FLAG_DEPRECATED },
+ {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, 0},
{"character set", P_STRING, P_GLOBAL, &Globals.szCharacterSet, handle_character_set, NULL, 0},
{"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, 0},
@@ -1256,6 +1262,10 @@ static void init_globals(void)
#else
string_set(&Globals.szSMBPasswdFile, SMB_PASSWD_FILE);
#endif
+
+ /* use the old 'hash' method by default */
+ string_set(&Globals.szManglingMethod, "hash");
+
/*
* Allow the default PASSWD_CHAT to be overridden in local.h.
*/
@@ -1582,6 +1592,7 @@ FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl)
FN_GLOBAL_STRING(lp_add_share_cmd, &Globals.szAddShareCommand)
FN_GLOBAL_STRING(lp_change_share_cmd, &Globals.szChangeShareCommand)
FN_GLOBAL_STRING(lp_delete_share_cmd, &Globals.szDeleteShareCommand)
+FN_GLOBAL_STRING(lp_mangling_method, &Globals.szManglingMethod)
#ifdef WITH_SSL
FN_GLOBAL_INTEGER(lp_ssl_version, &Globals.sslVersion)
@@ -1769,6 +1780,7 @@ FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS)
FN_LOCAL_BOOL(lp_use_client_driver, bUseClientDriver)
FN_LOCAL_BOOL(lp_default_devmode, bDefaultDevmode)
FN_LOCAL_BOOL(lp_nt_acl_support, bNTAclSupport)
+FN_LOCAL_BOOL(lp_force_unknown_acl_user, bForceUnknownAclUser)
FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask)
FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode)
FN_LOCAL_INTEGER(lp_security_mask, iSecurity_mask)
@@ -2620,54 +2632,55 @@ BOOL lp_winbind_gid(gid_t *low, gid_t *high)
static BOOL handle_winbind_uid(char *pszParmValue, char **ptr)
{
- int low, high;
+ unsigned int low, high;
- if (sscanf(pszParmValue, "%d-%d", &low, &high) != 2 || high < low)
+ if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low)
return False;
/* Parse OK */
string_set(ptr, pszParmValue);
- winbind_uid_low = low;
- winbind_uid_high = high;
+ winbind_uid_low = (uid_t)low;
+ winbind_uid_high = (uid_t)high;
return True;
}
static BOOL handle_winbind_gid(char *pszParmValue, char **ptr)
{
- gid_t low, high;
+ unsigned int low, high;
- if (sscanf(pszParmValue, "%d-%d", &low, &high) != 2 || high < low)
+ if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low)
return False;
/* Parse OK */
string_set(ptr, pszParmValue);
- winbind_gid_low = low;
- winbind_gid_high = high;
+ winbind_gid_low = (gid_t)low;
+ winbind_gid_high = (gid_t)high;
return True;
}
/***************************************************************************
- Handle the WINS SERVER list
+ Handle the WINS SERVER list.
***************************************************************************/
-static BOOL handle_wins_server_list( char *pszParmValue, char **ptr )
- {
- if( !wins_srv_load_list( pszParmValue ) )
- return( False ); /* Parse failed. */
- string_set( ptr, pszParmValue );
- return( True );
- }
+static BOOL handle_wins_server_list( char *pszParmValue, char **ptr )
+{
+ if( !wins_srv_load_list( pszParmValue ) )
+ return( False ); /* Parse failed. */
+ string_set( ptr, pszParmValue );
+ return( True );
+}
/***************************************************************************
- Handle the DEBUG level list
+ Handle the DEBUG level list.
***************************************************************************/
+
static BOOL handle_debug_list( char *pszParmValueIn, char **ptr )
{
pstring pszParmValue;
@@ -2678,8 +2691,9 @@ static BOOL handle_debug_list( char *pszParmValueIn, char **ptr )
/***************************************************************************
-initialise a copymap
+ Initialise a copymap.
***************************************************************************/
+
static void init_copymap(service * pservice)
{
int i;
@@ -3834,10 +3848,12 @@ const char *get_called_name(void)
/*
* Windows NT/2k uses "*SMBSERVER" and XP uses "*SMBSERV"
+ * arrggg!!! but we've already rewritten the client's
+ * netbios name at this point...
*/
if (*local_machine) {
- if (!StrCaseCmp(local_machine, "*SMBSERVER") || !StrCaseCmp(local_machine, "*SMBSERV")) {
+ if (!StrCaseCmp(local_machine, "_SMBSERVER") || !StrCaseCmp(local_machine, "_SMBSERV")) {
fstrcpy(called_name, get_my_primary_ip());
DEBUG(8,("get_called_name: assuming that client used IP address [%s] as called name.\n",
called_name));
diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c
index a043a355347..512735fdd8d 100644
--- a/source/passdb/passdb.c
+++ b/source/passdb/passdb.c
@@ -737,7 +737,7 @@ BOOL local_sid_to_gid(gid_t *pgid, DOM_SID *psid, enum SID_NAME_USE *name_type)
static void select_name(pstring string, const UNISTR2 *from)
{
if (from->buffer != 0)
- unistr2_to_ascii(string, from, sizeof(pstring));
+ unistr2_to_dos(string, from, sizeof(pstring));
}
/*************************************************************
@@ -900,7 +900,7 @@ account without a valid local system user.\n", user_name);
}
sam_pass = NULL;
- if (!pdb_init_sam_pw(&sam_pass, pwd)) {
+ if (!pdb_init_sam_pw(&sam_pass, sys_getpwnam(user_name))) {
return False;
}
@@ -1729,7 +1729,8 @@ BOOL pdb_getsampwuid (SAM_ACCOUNT* user, uid_t uid)
*/
if ((pw=sys_getpwuid(uid)) == NULL) {
- DEBUG(0,("pdb_getsampwuid: getpwuid(%d) return NULL. User does not exist in Unix accounts!\n", uid));
+ DEBUG(0,("pdb_getsampwuid: getpwuid(%u) return NULL. User does not exist in Unix accounts!\n",
+ (unsigned int)uid));
return False;
}
diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c
index a747ca40b1b..a214d51d14b 100644
--- a/source/passdb/pdb_ldap.c
+++ b/source/passdb/pdb_ldap.c
@@ -48,6 +48,10 @@
#include <lber.h>
#include <ldap.h>
+#ifndef LDAP_OPT_SUCCESS
+#define LDAP_OPT_SUCCESS LDAP_SUCCESS
+#endif
+
#ifndef SAM_ACCOUNT
#define SAM_ACCOUNT struct sam_passwd
#endif
@@ -72,21 +76,40 @@ extern BOOL sam_logon_in_ssb;
static BOOL ldap_open_connection (LDAP ** ldap_struct)
{
int port;
- int version, rc;
- int tls = LDAP_OPT_X_TLS_HARD;
+ int version;
+ int tls;
+ uid_t uid = geteuid();
+ struct passwd* pass;
+
+ DEBUG(5,("ldap_open_connection: starting...\n"));
+ /*
+ * using sys_getpwnam() here since I'm assuming that the
+ * ldapsam is only used on a standalone server or PDC.
+ * winbind not in the picture....
+ */
- if (geteuid() != 0) {
- DEBUG(0, ("ldap_open_connection: cannot access LDAP when not root..\n"));
+ if ( (pass=sys_getpwuid(uid)) == NULL ) {
+ DEBUG(0,("ldap_open_connection: Can't determine user of running process!\n"));
return False;
}
- if (lp_ldap_ssl() == LDAP_SSL_ON && lp_ldap_port() == 389) {
- port = 636;
+ /* check that the user is in the domain admin group for connecting */
+
+ if ( (uid != 0) && !user_in_list(pass->pw_name, lp_domain_admin_group()) ) {
+ DEBUG(0, ("ldap_open_connection: cannot access LDAP when not root or a member of domain admin group..\n"));
+ return False;
}
- else {
- port = lp_ldap_port();
+
+ port = lp_ldap_port();
+
+ /* remap default port is no SSL */
+ if ( (lp_ldap_ssl() == LDAP_SSL_OFF) && (lp_ldap_port() == 636) ) {
+ port = 389;
}
+ DEBUG(10,("Initializing connection to %s on port %d\n",
+ lp_ldap_server(), port ));
+
if ((*ldap_struct = ldap_init(lp_ldap_server(), port)) == NULL) {
DEBUG(0, ("The LDAP server is not responding !\n"));
return False;
@@ -105,6 +128,7 @@ static BOOL ldap_open_connection (LDAP ** ldap_struct)
switch (lp_ldap_ssl())
{
case LDAP_SSL_START_TLS:
+#ifdef HAVE_LDAP_START_TLS_S
if (ldap_get_option (*ldap_struct, LDAP_OPT_PROTOCOL_VERSION,
&version) == LDAP_OPT_SUCCESS)
{
@@ -122,13 +146,25 @@ static BOOL ldap_open_connection (LDAP ** ldap_struct)
return False;
}
DEBUG (2, ("StartTLS issued: using a TLS connection\n"));
+#else
+ DEBUG(0,("ldap_open_connection: StartTLS not supported by LDAP client libraries!\n"));
+ return False;
+#endif
break;
case LDAP_SSL_ON:
+#ifdef LDAP_OPT_X_TLS
+ tls = LDAP_OPT_X_TLS_HARD;
if (ldap_set_option (*ldap_struct, LDAP_OPT_X_TLS, &tls) != LDAP_SUCCESS)
{
DEBUG(0, ("Failed to setup a TLS session\n"));
}
+
+ DEBUG(0,("LDAPS option set...!\n"));
+#else
+ DEBUG(0,("ldap_open_connection: Secure connection not supported by LDAP client libraries!\n"));
+ return False;
+#endif
break;
case LDAP_SSL_OFF:
@@ -188,7 +224,7 @@ static int ldap_search_one_user (LDAP * ldap_struct, const char *filter, LDAPMes
DEBUG(2, ("ldap_search_one_user: searching for:[%s]\n", filter));
- rc = ldap_search_s(ldap_struct, lp_ldap_suffix (), scope, filter, NULL, 0, result);
+ rc = ldap_search_s(ldap_struct, lp_ldap_suffix (), scope, (char*)filter, NULL, 0, result);
if (rc != LDAP_SUCCESS) {
DEBUG(0,("ldap_search_one_user: Problem during the LDAP search: %s\n",
@@ -268,17 +304,17 @@ static int ldap_search_one_user_by_rid (LDAP * ldap_struct, uint32 rid,
}
/*******************************************************************
-search an attribute and return the first value found.
+ search an attribute and return the first value found.
+ the string in 'value' is unchanged if the attribute does not exist
******************************************************************/
+
static BOOL get_single_attribute (LDAP * ldap_struct, LDAPMessage * entry,
char *attribute, char *value)
{
char **values;
if ((values = ldap_get_values (ldap_struct, entry, attribute)) == NULL) {
- value = NULL;
- DEBUG (2, ("get_single_attribute: [%s] = [<does not exist>]\n", attribute));
-
+ DEBUG (2, ("get_single_attribute: [%s] = [<does not exist>]\n", attribute));
return False;
}
@@ -290,10 +326,10 @@ static BOOL get_single_attribute (LDAP * ldap_struct, LDAPMessage * entry,
}
/************************************************************************
-Routine to manage the LDAPMod structure array
-manage memory used by the array, by each struct, and values
-
+ Routine to manage the LDAPMod structure array
+ manage memory used by the array, by each struct, and values
************************************************************************/
+
static void make_a_mod (LDAPMod *** modlist, int modop, char *attribute, char *value)
{
LDAPMod **mods;
@@ -427,23 +463,31 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass,
pstrcpy(domain, lp_workgroup());
- get_single_attribute(ldap_struct, entry, "pwdLastSet", temp);
- pass_last_set_time = (time_t) atol(temp);
+ pass_last_set_time = TIME_T_MAX;
+ logon_time = TIME_T_MAX;
+ logoff_time = TIME_T_MAX;
+ kickoff_time = TIME_T_MAX;
+ pass_can_change_time = TIME_T_MAX;
+ pass_must_change_time = TIME_T_MAX;
+
+
+ if (get_single_attribute(ldap_struct, entry, "pwdLastSet", temp))
+ pass_last_set_time = (time_t) atol(temp);
- get_single_attribute(ldap_struct, entry, "logonTime", temp);
- logon_time = (time_t) atol(temp);
+ if (get_single_attribute(ldap_struct, entry, "logonTime", temp))
+ logon_time = (time_t) atol(temp);
- get_single_attribute(ldap_struct, entry, "logoffTime", temp);
- logoff_time = (time_t) atol(temp);
+ if (get_single_attribute(ldap_struct, entry, "logoffTime", temp))
+ logoff_time = (time_t) atol(temp);
- get_single_attribute(ldap_struct, entry, "kickoffTime", temp);
- kickoff_time = (time_t) atol(temp);
+ if (get_single_attribute(ldap_struct, entry, "kickoffTime", temp))
+ kickoff_time = (time_t) atol(temp);
- get_single_attribute(ldap_struct, entry, "pwdCanChange", temp);
- pass_can_change_time = (time_t) atol(temp);
+ if (get_single_attribute(ldap_struct, entry, "pwdCanChange", temp))
+ pass_can_change_time = (time_t) atol(temp);
- get_single_attribute(ldap_struct, entry, "pwdMustChange", temp);
- pass_must_change_time = (time_t) atol(temp);
+ if (get_single_attribute(ldap_struct, entry, "pwdMustChange", temp))
+ pass_must_change_time = (time_t) atol(temp);
/* recommend that 'gecos' and 'displayName' should refer to the same
* attribute OID. userFullName depreciated, only used by Samba
diff --git a/source/passdb/pdb_nisplus.c b/source/passdb/pdb_nisplus.c
index 21be4b88fba..0bcae57c2b4 100644
--- a/source/passdb/pdb_nisplus.c
+++ b/source/passdb/pdb_nisplus.c
@@ -57,7 +57,7 @@ struct nisp_enum_info
};
static struct nisp_enum_info global_nisp_ent;
-static VOLATILE sig_atomic_t gotalarm;
+static SIG_ATOMIC_T gotalarm;
/***************************************************************
@@ -130,19 +130,7 @@ static char *make_nisname_from_user_rid(uint32 rid, char *pfile)
{
static pstring nisname;
- slprintf(nisname, sizeof(nisname)-1, "[user_rid=%d]%s", rid, pfile);
-
- return nisname;
-}
-
-/***************************************************************
- make_nisname_from_uid
- ****************************************************************/
-static char *make_nisname_from_uid(int uid, char *pfile)
-{
- static pstring nisname;
-
- slprintf(nisname, sizeof(nisname)-1, "[uid=%d]%s", uid, pfile);
+ slprintf(nisname, sizeof(nisname)-1, "[user_rid=%d],%s", rid, pfile);
return nisname;
}
@@ -154,7 +142,7 @@ static char *make_nisname_from_name(char *user_name, char *pfile)
{
static pstring nisname;
- slprintf(nisname, sizeof(nisname)-1, "[name=%s]%s", user_name, pfile);
+ slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s", user_name, pfile);
return nisname;
}
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c
index c4c26b04be0..3311790cd2c 100644
--- a/source/printing/nt_printing.c
+++ b/source/printing/nt_printing.c
@@ -408,7 +408,7 @@ BOOL get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form)
{
int i,count;
fstring form_name;
- unistr2_to_ascii(form_name, uni_formname, sizeof(form_name)-1);
+ unistr2_to_dos(form_name, uni_formname, sizeof(form_name)-1);
DEBUGADD(6,("Looking for builtin form %s \n", form_name));
count = sizeof(default_forms) / sizeof(default_forms[0]);
for (i=0;i<count;i++) {
@@ -510,7 +510,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count)
update=False;
- unistr2_to_ascii(form_name, &form->name, sizeof(form_name)-1);
+ unistr2_to_dos(form_name, &form->name, sizeof(form_name)-1);
for (n=0; n<*count; n++) {
if (!strncmp((*list)[n].name, form_name, strlen(form_name))) {
DEBUG(103, ("NT workaround, [%s] already exists\n", form_name));
@@ -525,7 +525,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count)
return False;
}
*list = tl;
- unistr2_to_ascii((*list)[n].name, &form->name, sizeof((*list)[n].name)-1);
+ unistr2_to_dos((*list)[n].name, &form->name, sizeof((*list)[n].name)-1);
(*count)++;
}
@@ -552,7 +552,7 @@ BOOL delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR
*ret = WERR_OK;
- unistr2_to_ascii(form_name, del_name, sizeof(form_name)-1);
+ unistr2_to_dos(form_name, del_name, sizeof(form_name)-1);
for (n=0; n<*count; n++) {
if (!strncmp((*list)[n].name, form_name, strlen(form_name))) {
@@ -586,7 +586,7 @@ void update_a_form(nt_forms_struct **list, const FORM *form, int count)
{
int n=0;
fstring form_name;
- unistr2_to_ascii(form_name, &(form->name), sizeof(form_name)-1);
+ unistr2_to_dos(form_name, &(form->name), sizeof(form_name)-1);
DEBUG(106, ("[%s]\n", form_name));
for (n=0; n<count; n++)
@@ -3007,6 +3007,31 @@ BOOL set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level)
}
/****************************************************************************
+ Delete driver init data stored for a specified driver
+****************************************************************************/
+
+BOOL del_driver_init(char *drivername)
+{
+ pstring key;
+ TDB_DATA kbuf;
+
+ if (!drivername || !*drivername) {
+ DEBUG(3,("del_driver_init: No drivername specified!\n"));
+ return False;
+ }
+
+ slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, drivername);
+ dos_to_unix(key); /* Convert key to unix-codepage */
+
+ kbuf.dptr = key;
+ kbuf.dsize = strlen(key)+1;
+
+ DEBUG(6,("del_driver_init: Removing driver init data for [%s]\n", drivername));
+
+ return (tdb_delete(tdb_drivers, kbuf) == 0);
+}
+
+/****************************************************************************
Pack up the DEVMODE and specifics for a printer into a 'driver init' entry
in the tdb. Note: this is different from the driver entry and the printer
entry. There should be a single driver init entry for each driver regardless
diff --git a/source/rpc_client/cli_login.c b/source/rpc_client/cli_login.c
index 0492e73b7a3..be186e40a14 100644
--- a/source/rpc_client/cli_login.c
+++ b/source/rpc_client/cli_login.c
@@ -52,7 +52,7 @@ NTSTATUS cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16])
/**************** Long-term Session key **************/
/* calculate the session key */
- cred_session_key(&clnt_chal, &srv_chal, (char *)mach_pwd, cli->sess_key);
+ cred_session_key(&clnt_chal, &srv_chal, (uchar *)mach_pwd, cli->sess_key);
memset((char *)cli->sess_key+8, '\0', 8);
/******************* Authenticate 2 ********************/
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index 91b54b9c836..16f0a5bde8b 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -1071,10 +1071,10 @@ void init_q_lookup_names(TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l,
for (i = 0; i < num_names; i++) {
int len;
- len = strlen(names[i]);
+ len = strlen(unix_to_dos_static(names[i]));
init_uni_hdr(&q_l->hdr_name[i], len);
- init_unistr2(&q_l->uni_name[i], names[i], len);
+ init_unistr2(&q_l->uni_name[i], unix_to_dos_static(names[i]), len);
}
}
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index 7fecbfb806c..355e10a97bf 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -1467,9 +1467,9 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en
pwd=disp_user_info[i+start_idx].sam;
- len_sam_name = strlen(pdb_get_username(pwd));
- len_sam_full = strlen(pdb_get_fullname(pwd));
- len_sam_desc = strlen(pdb_get_acct_desc(pwd));
+ len_sam_name = strlen(unix_to_dos_static(pdb_get_username(pwd)));
+ len_sam_full = strlen(unix_to_dos_static(pdb_get_fullname(pwd)));
+ len_sam_desc = strlen(unix_to_dos_static(pdb_get_acct_desc(pwd)));
init_sam_entry1(&sam->sam[i], start_idx + i + 1,
len_sam_name, len_sam_full, len_sam_desc,
@@ -1479,9 +1479,9 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en
ZERO_STRUCTP(&sam->str[i].uni_full_name);
ZERO_STRUCTP(&sam->str[i].uni_acct_desc);
- init_unistr2(&sam->str[i].uni_acct_name, pdb_get_username(pwd), len_sam_name);
- init_unistr2(&sam->str[i].uni_full_name, pdb_get_fullname(pwd), len_sam_full);
- init_unistr2(&sam->str[i].uni_acct_desc, pdb_get_acct_desc(pwd), len_sam_desc);
+ init_unistr2(&sam->str[i].uni_acct_name, unix_to_dos_static(pdb_get_username(pwd)), len_sam_name);
+ init_unistr2(&sam->str[i].uni_full_name, unix_to_dos_static(pdb_get_fullname(pwd)), len_sam_full);
+ init_unistr2(&sam->str[i].uni_acct_desc, unix_to_dos_static(pdb_get_acct_desc(pwd)), len_sam_desc);
}
return NT_STATUS_OK;
@@ -1567,8 +1567,8 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en
DEBUG(11, ("init_sam_dispinfo_2: entry: %d\n",i));
pwd=disp_user_info[i+start_idx].sam;
- len_sam_name = strlen(pdb_get_username(pwd));
- len_sam_desc = strlen(pdb_get_acct_desc(pwd));
+ len_sam_name = strlen(unix_to_dos_static(pdb_get_username(pwd)));
+ len_sam_desc = strlen(unix_to_dos_static(pdb_get_acct_desc(pwd)));
init_sam_entry2(&sam->sam[i], start_idx + i + 1,
len_sam_name, len_sam_desc,
@@ -1577,8 +1577,8 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en
ZERO_STRUCTP(&sam->str[i].uni_srv_name);
ZERO_STRUCTP(&sam->str[i].uni_srv_desc);
- init_unistr2(&sam->str[i].uni_srv_name, pdb_get_username(pwd), len_sam_name);
- init_unistr2(&sam->str[i].uni_srv_desc, pdb_get_acct_desc(pwd), len_sam_desc);
+ init_unistr2(&sam->str[i].uni_srv_name, unix_to_dos_static(pdb_get_username(pwd)), len_sam_name);
+ init_unistr2(&sam->str[i].uni_srv_desc, unix_to_dos_static(pdb_get_acct_desc(pwd)), len_sam_desc);
}
return NT_STATUS_OK;
@@ -1760,11 +1760,12 @@ NTSTATUS init_sam_dispinfo_4(TALLOC_CTX *ctx, SAM_DISPINFO_4 *sam, uint32 num_en
DEBUG(11, ("init_sam_dispinfo_2: entry: %d\n",i));
pwd=disp_user_info[i+start_idx].sam;
- len_sam_name = strlen(pdb_get_username(pwd));
+ len_sam_name = strlen(unix_to_dos_static(pdb_get_username(pwd)));
init_sam_entry4(&sam->sam[i], start_idx + i + 1, len_sam_name);
- init_string2(&sam->str[i].acct_name, pdb_get_username(pwd), len_sam_name+1, len_sam_name);
+ init_string2(&sam->str[i].acct_name, unix_to_dos_static(pdb_get_username(pwd)),
+ len_sam_name+1, len_sam_name);
}
return NT_STATUS_OK;
@@ -5846,16 +5847,16 @@ void init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw)
const char* workstations = pdb_get_workstations(pw);
const char* munged_dial = pdb_get_munged_dial(pw);
- len_user_name = user_name != NULL ? strlen(user_name )+1 : 0;
- len_full_name = full_name != NULL ? strlen(full_name )+1 : 0;
- len_home_dir = home_dir != NULL ? strlen(home_dir )+1 : 0;
- len_dir_drive = dir_drive != NULL ? strlen(dir_drive )+1 : 0;
- len_logon_script = logon_script != NULL ? strlen(logon_script)+1 : 0;
- len_profile_path = profile_path != NULL ? strlen(profile_path)+1 : 0;
- len_description = description != NULL ? strlen(description )+1 : 0;
- len_workstations = workstations != NULL ? strlen(workstations)+1 : 0;
+ len_user_name = user_name != NULL ? strlen(unix_to_dos_static(user_name))+1 : 0;
+ len_full_name = full_name != NULL ? strlen(unix_to_dos_static(full_name))+1 : 0;
+ len_home_dir = home_dir != NULL ? strlen(unix_to_dos_static(home_dir))+1 : 0;
+ len_dir_drive = dir_drive != NULL ? strlen(unix_to_dos_static(dir_drive))+1 : 0;
+ len_logon_script = logon_script != NULL ? strlen(unix_to_dos_static(logon_script))+1 : 0;
+ len_profile_path = profile_path != NULL ? strlen(unix_to_dos_static(profile_path))+1 : 0;
+ len_description = description != NULL ? strlen(unix_to_dos_static(description))+1 : 0;
+ len_workstations = workstations != NULL ? strlen(unix_to_dos_static(workstations))+1 : 0;
len_unknown_str = 0;
- len_munged_dial = munged_dial != NULL ? strlen(munged_dial )+1 : 0;
+ len_munged_dial = munged_dial != NULL ? strlen(unix_to_dos_static(munged_dial))+1 : 0;
/* Create NTTIME structs */
@@ -5899,16 +5900,16 @@ void init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw)
ZERO_STRUCT(usr->padding1);
- init_unistr2(&usr->uni_user_name, user_name, len_user_name);
- init_unistr2(&usr->uni_full_name, full_name, len_full_name);
- init_unistr2(&usr->uni_home_dir, home_dir, len_home_dir);
- init_unistr2(&usr->uni_dir_drive, dir_drive, len_dir_drive);
- init_unistr2(&usr->uni_logon_script, logon_script, len_logon_script);
- init_unistr2(&usr->uni_profile_path, profile_path, len_profile_path);
- init_unistr2(&usr->uni_acct_desc, description, len_description);
- init_unistr2(&usr->uni_workstations, workstations, len_workstations);
+ init_unistr2(&usr->uni_user_name, unix_to_dos_static(user_name), len_user_name);
+ init_unistr2(&usr->uni_full_name, unix_to_dos_static(full_name), len_full_name);
+ init_unistr2(&usr->uni_home_dir, unix_to_dos_static(home_dir), len_home_dir);
+ init_unistr2(&usr->uni_dir_drive, unix_to_dos_static(dir_drive), len_dir_drive);
+ init_unistr2(&usr->uni_logon_script, unix_to_dos_static(logon_script), len_logon_script);
+ init_unistr2(&usr->uni_profile_path, unix_to_dos_static(profile_path), len_profile_path);
+ init_unistr2(&usr->uni_acct_desc, unix_to_dos_static(description), len_description);
+ init_unistr2(&usr->uni_workstations, unix_to_dos_static(workstations), len_workstations);
init_unistr2(&usr->uni_unknown_str, NULL, len_unknown_str);
- init_unistr2(&usr->uni_munged_dial, munged_dial, len_munged_dial);
+ init_unistr2(&usr->uni_munged_dial, unix_to_dos_static(munged_dial), len_munged_dial);
usr->unknown_6 = pdb_get_unknown6(pw);
usr->padding4 = 0;
@@ -6042,9 +6043,9 @@ void init_sam_user_info20A(SAM_USER_INFO_20 *usr, SAM_ACCOUNT *pw)
int len_munged_dial;
const char* munged_dial = pdb_get_munged_dial(pw);
- len_munged_dial = munged_dial != NULL ? strlen(munged_dial )+1 : 0;
+ len_munged_dial = munged_dial != NULL ? strlen(unix_to_dos_static(munged_dial))+1 : 0;
init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial);
- init_unistr2(&usr->uni_munged_dial, munged_dial, len_munged_dial);
+ init_unistr2(&usr->uni_munged_dial, unix_to_dos_static(munged_dial), len_munged_dial);
}
@@ -6703,17 +6704,16 @@ BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO * r_u,
if(!prs_align(ps))
return False;
- if(!prs_uint16("unk_0", ps, depth, &r_u->unk_0))
- return False;
- if(!prs_align(ps))
- return False;
- if(!prs_uint16("unk_1", ps, depth, &r_u->unk_1))
- return False;
- if(!prs_align(ps))
+ /*
+ * we need 16 bytes herre according to tests. Don't know
+ * what they are, but the length is important for the singing
+ */
+
+ if(!prs_uint32("unk_0", ps, depth, &r_u->unk_0))
return False;
- if(!prs_uint16("unk_2", ps, depth, &r_u->unk_2))
+ if(!prs_uint32("unk_1", ps, depth, &r_u->unk_1))
return False;
- if(!prs_align(ps))
+ if(!prs_uint32("unk_2", ps, depth, &r_u->unk_2))
return False;
if(!prs_ntstatus("status", ps, depth, &r_u->status))
diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c
index 3813326293b..9bd1b2e65a8 100644
--- a/source/rpc_parse/parse_sec.c
+++ b/source/rpc_parse/parse_sec.c
@@ -620,9 +620,16 @@ BOOL sec_io_desc(char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
prs_debug(ps, depth, desc, "sec_io_desc");
depth++;
-
+
+#if 0 /* JERRY */
+ /*
+ * if alignment is needed, should be done by the the
+ * caller. Not here. This caused me problems when marshalling
+ * printer info into a buffer. --jerry
+ */
if(!prs_align(ps))
return False;
+#endif
/* start of security descriptor stored for back-calc offset purposes */
old_offset = prs_offset(ps);
diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c
index a47b9f5b60c..dcf28c2d675 100644
--- a/source/rpc_parse/parse_spoolss.c
+++ b/source/rpc_parse/parse_spoolss.c
@@ -544,8 +544,40 @@ static BOOL spool_io_user_level(char *desc, SPOOL_USER_CTR *q_u, prs_struct *ps,
* on reading allocate memory for the private member
********************************************************************/
+#define DM_NUM_OPTIONAL_FIELDS 8
+
BOOL spoolss_io_devmode(char *desc, prs_struct *ps, int depth, DEVICEMODE *devmode)
{
+ uint32 available_space; /* size of the device mode left to parse */
+ /* only important on unmarshalling */
+ int i = 0;
+
+ struct optional_fields {
+ fstring name;
+ uint32* field;
+ } opt_fields[DM_NUM_OPTIONAL_FIELDS] = {
+ { "icmmethod", NULL },
+ { "icmintent", NULL },
+ { "mediatype", NULL },
+ { "dithertype", NULL },
+ { "reserved1", NULL },
+ { "reserved2", NULL },
+ { "panningwidth", NULL },
+ { "panningheight", NULL }
+ };
+
+ /* assign at run time to keep non-gcc vompilers happy */
+
+ opt_fields[0].field = &devmode->icmmethod;
+ opt_fields[1].field = &devmode->icmintent;
+ opt_fields[2].field = &devmode->mediatype;
+ opt_fields[3].field = &devmode->dithertype;
+ opt_fields[4].field = &devmode->reserved1;
+ opt_fields[5].field = &devmode->reserved2;
+ opt_fields[6].field = &devmode->panningwidth;
+ opt_fields[7].field = &devmode->panningheight;
+
+
prs_debug(ps, depth, desc, "spoolss_io_devmode");
depth++;
@@ -557,8 +589,27 @@ BOOL spoolss_io_devmode(char *desc, prs_struct *ps, int depth, DEVICEMODE *devmo
if (!prs_uint16uni(True,"devicename", ps, depth, devmode->devicename.buffer, 32))
return False;
+
if (!prs_uint16("specversion", ps, depth, &devmode->specversion))
- return False;
+ return False;
+
+ /* Sanity Check - look for unknown specversions, but don't fail if we see one.
+ Let the size determine that */
+
+ switch (devmode->specversion) {
+ case 0x0320:
+ case 0x0400:
+ case 0x0401:
+ break;
+
+ default:
+ DEBUG(0,("spoolss_io_devmode: Unknown specversion in devicemode [0x%x]\n",
+ devmode->specversion));
+ DEBUG(0,("spoolss_io_devmode: please report to samba-technical@samba.org!\n"));
+ break;
+ }
+
+
if (!prs_uint16("driverversion", ps, depth, &devmode->driverversion))
return False;
if (!prs_uint16("size", ps, depth, &devmode->size))
@@ -614,44 +665,49 @@ BOOL spoolss_io_devmode(char *desc, prs_struct *ps, int depth, DEVICEMODE *devmo
return False;
if (!prs_uint32("displayfrequency", ps, depth, &devmode->displayfrequency))
return False;
-
+ /*
+ * every device mode I've ever seen on the wire at least has up
+ * to the displayfrequency field. --jerry (05-09-2002)
+ */
+
+ /* add uint32's + uint16's + two UNICODE strings */
+
+ available_space = devmode->size - (sizeof(uint32)*6 + sizeof(uint16)*18 + sizeof(uint16)*64);
+
+ /* Sanity check - we only have uint32's left tp parse */
+
+ if ( available_space && ((available_space % sizeof(uint32)) != 0) ) {
+ DEBUG(0,("spoolss_io_devmode: available_space [%d] no in multiple of 4 bytes (size = %d)!\n",
+ available_space, devmode->size));
+ DEBUG(0,("spoolss_io_devmode: please report to samba-technical@samba.org!\n"));
+ return False;
+ }
+
/*
* Conditional parsing. Assume that the DeviceMode has been
* zero'd by the caller.
*/
- switch(devmode->specversion) {
-
- /* Used by spooler when issuing OpenPrinter() calls. NT 3.5x? */
- case 0x0320:
- break;
-
- /* See the comments on the DEVMODE in the msdn GDI documentation */
- case 0x0400:
- case 0x0401:
- if (!prs_uint32("icmmethod", ps, depth, &devmode->icmmethod))
- return False;
- if (!prs_uint32("icmintent", ps, depth, &devmode->icmintent))
- return False;
- if (!prs_uint32("mediatype", ps, depth, &devmode->mediatype))
- return False;
- if (!prs_uint32("dithertype", ps, depth, &devmode->dithertype))
- return False;
- if (!prs_uint32("reserved1", ps, depth, &devmode->reserved1))
- return False;
- if (!prs_uint32("reserved2", ps, depth, &devmode->reserved2))
- return False;
- if (!prs_uint32("panningwidth", ps, depth, &devmode->panningwidth))
- return False;
- if (!prs_uint32("panningheight", ps, depth, &devmode->panningheight))
- return False;
- break;
- /* log an error if we see something else */
- default:
- DEBUG(0,("spoolss_io_devmode: Unknown specversion [0x%x]!\n", devmode->specversion));
- DEBUG(0,("spoolss_io_devmode: Please report to samba-technical@samba.org\n"));
- break;
+ while ((available_space > 0) && (i < DM_NUM_OPTIONAL_FIELDS))
+ {
+ DEBUG(10, ("spoolss_io_devmode: [%d] bytes left to parse in devmode\n", available_space));
+ if (!prs_uint32(opt_fields[i].name, ps, depth, opt_fields[i].field))
+ return False;
+ available_space -= sizeof(uint32);
+ i++;
+ }
+
+ /* Sanity Check - we should no available space at this point unless
+ MS changes the device mode structure */
+
+ if (available_space) {
+ DEBUG(0,("spoolss_io_devmode: I've parsed all I know and there is still stuff left|\n"));
+ DEBUG(0,("spoolss_io_devmode: available_space = [%d], devmode_size = [%d]!\n",
+ available_space, devmode->size));
+ DEBUG(0,("spoolss_io_devmode: please report to samba-technical@samba.org!\n"));
+ return False;
}
+
if (devmode->driverextra!=0) {
if (UNMARSHALLING(ps)) {
@@ -2225,7 +2281,9 @@ BOOL smb_io_printer_info_1(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_1 *info,
BOOL smb_io_printer_info_2(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_2 *info, int depth)
{
prs_struct *ps=&buffer->prs;
-
+ uint32 dm_offset, sd_offset, current_offset;
+ uint32 dummy_value = 0;
+
prs_debug(ps, depth, desc, "smb_io_printer_info_2");
depth++;
@@ -2246,10 +2304,11 @@ BOOL smb_io_printer_info_2(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_2 *info,
if (!smb_io_relstr("location", buffer, depth, &info->location))
return False;
- /* NT parses the DEVMODE at the end of the struct */
- if (!smb_io_reldevmode("devmode", buffer, depth, &info->devmode))
+ /* save current offset and wind forwared by a uint32 */
+ dm_offset = prs_offset(ps);
+ if (!prs_uint32("devmode", ps, depth, &dummy_value))
return False;
-
+
if (!smb_io_relstr("sepfile", buffer, depth, &info->sepfile))
return False;
if (!smb_io_relstr("printprocessor", buffer, depth, &info->printprocessor))
@@ -2259,8 +2318,30 @@ BOOL smb_io_printer_info_2(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_2 *info,
if (!smb_io_relstr("parameters", buffer, depth, &info->parameters))
return False;
+ /* save current offset for the sec_desc */
+ sd_offset = prs_offset(ps);
+ if (!prs_uint32("sec_desc", ps, depth, &dummy_value))
+ return False;
+
+
+ /* save current location so we can pick back up here */
+ current_offset = prs_offset(ps);
+
+ /* parse the devmode */
+ if (!prs_set_offset(ps, dm_offset))
+ return False;
+ if (!smb_io_reldevmode("devmode", buffer, depth, &info->devmode))
+ return False;
+
+ /* parse the sec_desc */
+ if (!prs_set_offset(ps, sd_offset))
+ return False;
if (!smb_io_relsecdesc("secdesc", buffer, depth, &info->secdesc))
return False;
+
+ /* pick up where we left off */
+ if (!prs_set_offset(ps, current_offset))
+ return False;
if (!prs_uint32("attributes", ps, depth, &info->attributes))
return False;
@@ -3034,10 +3115,10 @@ return the size required by a struct in the stream
uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info)
{
- uint32 size=0;
+ uint32 size=0;
size += 4;
- /* JRA !!!! TESTME - WHAT ABOUT prs_align.... !!! */
+
size += sec_desc_size( info->secdesc );
size+=size_of_device_mode( info->devmode );
@@ -3063,6 +3144,16 @@ uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info)
size+=size_of_uint32( &info->status );
size+=size_of_uint32( &info->cjobs );
size+=size_of_uint32( &info->averageppm );
+
+ /*
+ * add any adjustments for alignment. This is
+ * not optimal since we could be calling this
+ * function from a loop (e.g. enumprinters), but
+ * it is easier to maintain the calculation here and
+ * not place the burden on the caller to remember. --jerry
+ */
+ size += size % 4;
+
return size;
}
@@ -5171,14 +5262,14 @@ BOOL uni_2_asc_printer_driver_3(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *uni,
d->cversion=uni->cversion;
- unistr2_to_ascii(d->name, &uni->name, sizeof(d->name)-1);
- unistr2_to_ascii(d->environment, &uni->environment, sizeof(d->environment)-1);
- unistr2_to_ascii(d->driverpath, &uni->driverpath, sizeof(d->driverpath)-1);
- unistr2_to_ascii(d->datafile, &uni->datafile, sizeof(d->datafile)-1);
- unistr2_to_ascii(d->configfile, &uni->configfile, sizeof(d->configfile)-1);
- unistr2_to_ascii(d->helpfile, &uni->helpfile, sizeof(d->helpfile)-1);
- unistr2_to_ascii(d->monitorname, &uni->monitorname, sizeof(d->monitorname)-1);
- unistr2_to_ascii(d->defaultdatatype, &uni->defaultdatatype, sizeof(d->defaultdatatype)-1);
+ unistr2_to_dos(d->name, &uni->name, sizeof(d->name)-1);
+ unistr2_to_dos(d->environment, &uni->environment, sizeof(d->environment)-1);
+ unistr2_to_dos(d->driverpath, &uni->driverpath, sizeof(d->driverpath)-1);
+ unistr2_to_dos(d->datafile, &uni->datafile, sizeof(d->datafile)-1);
+ unistr2_to_dos(d->configfile, &uni->configfile, sizeof(d->configfile)-1);
+ unistr2_to_dos(d->helpfile, &uni->helpfile, sizeof(d->helpfile)-1);
+ unistr2_to_dos(d->monitorname, &uni->monitorname, sizeof(d->monitorname)-1);
+ unistr2_to_dos(d->defaultdatatype, &uni->defaultdatatype, sizeof(d->defaultdatatype)-1);
DEBUGADD(8,( "version: %d\n", d->cversion));
DEBUGADD(8,( "name: %s\n", d->name));
@@ -5218,14 +5309,14 @@ BOOL uni_2_asc_printer_driver_6(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *uni,
d->version=uni->version;
- unistr2_to_ascii(d->name, &uni->name, sizeof(d->name)-1);
- unistr2_to_ascii(d->environment, &uni->environment, sizeof(d->environment)-1);
- unistr2_to_ascii(d->driverpath, &uni->driverpath, sizeof(d->driverpath)-1);
- unistr2_to_ascii(d->datafile, &uni->datafile, sizeof(d->datafile)-1);
- unistr2_to_ascii(d->configfile, &uni->configfile, sizeof(d->configfile)-1);
- unistr2_to_ascii(d->helpfile, &uni->helpfile, sizeof(d->helpfile)-1);
- unistr2_to_ascii(d->monitorname, &uni->monitorname, sizeof(d->monitorname)-1);
- unistr2_to_ascii(d->defaultdatatype, &uni->defaultdatatype, sizeof(d->defaultdatatype)-1);
+ unistr2_to_dos(d->name, &uni->name, sizeof(d->name)-1);
+ unistr2_to_dos(d->environment, &uni->environment, sizeof(d->environment)-1);
+ unistr2_to_dos(d->driverpath, &uni->driverpath, sizeof(d->driverpath)-1);
+ unistr2_to_dos(d->datafile, &uni->datafile, sizeof(d->datafile)-1);
+ unistr2_to_dos(d->configfile, &uni->configfile, sizeof(d->configfile)-1);
+ unistr2_to_dos(d->helpfile, &uni->helpfile, sizeof(d->helpfile)-1);
+ unistr2_to_dos(d->monitorname, &uni->monitorname, sizeof(d->monitorname)-1);
+ unistr2_to_dos(d->defaultdatatype, &uni->defaultdatatype, sizeof(d->defaultdatatype)-1);
DEBUGADD(8,( "version: %d\n", d->version));
DEBUGADD(8,( "name: %s\n", d->name));
@@ -5283,17 +5374,17 @@ BOOL uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
d->status=uni->status;
d->cjobs=uni->cjobs;
- unistr2_to_ascii(d->servername, &uni->servername, sizeof(d->servername)-1);
- unistr2_to_ascii(d->printername, &uni->printername, sizeof(d->printername)-1);
- unistr2_to_ascii(d->sharename, &uni->sharename, sizeof(d->sharename)-1);
- unistr2_to_ascii(d->portname, &uni->portname, sizeof(d->portname)-1);
- unistr2_to_ascii(d->drivername, &uni->drivername, sizeof(d->drivername)-1);
- unistr2_to_ascii(d->comment, &uni->comment, sizeof(d->comment)-1);
- unistr2_to_ascii(d->location, &uni->location, sizeof(d->location)-1);
- unistr2_to_ascii(d->sepfile, &uni->sepfile, sizeof(d->sepfile)-1);
- unistr2_to_ascii(d->printprocessor, &uni->printprocessor, sizeof(d->printprocessor)-1);
- unistr2_to_ascii(d->datatype, &uni->datatype, sizeof(d->datatype)-1);
- unistr2_to_ascii(d->parameters, &uni->parameters, sizeof(d->parameters)-1);
+ unistr2_to_dos(d->servername, &uni->servername, sizeof(d->servername)-1);
+ unistr2_to_dos(d->printername, &uni->printername, sizeof(d->printername)-1);
+ unistr2_to_dos(d->sharename, &uni->sharename, sizeof(d->sharename)-1);
+ unistr2_to_dos(d->portname, &uni->portname, sizeof(d->portname)-1);
+ unistr2_to_dos(d->drivername, &uni->drivername, sizeof(d->drivername)-1);
+ unistr2_to_dos(d->comment, &uni->comment, sizeof(d->comment)-1);
+ unistr2_to_dos(d->location, &uni->location, sizeof(d->location)-1);
+ unistr2_to_dos(d->sepfile, &uni->sepfile, sizeof(d->sepfile)-1);
+ unistr2_to_dos(d->printprocessor, &uni->printprocessor, sizeof(d->printprocessor)-1);
+ unistr2_to_dos(d->datatype, &uni->datatype, sizeof(d->datatype)-1);
+ unistr2_to_dos(d->parameters, &uni->parameters, sizeof(d->parameters)-1);
return True;
}
@@ -5859,7 +5950,7 @@ BOOL convert_specific_param(NT_PRINTER_PARAM **param, const UNISTR2 *value,
memset((char *)*param, '\0', sizeof(NT_PRINTER_PARAM));
DEBUGADD(6,("Allocated a new PARAM struct\n"));
}
- unistr2_to_ascii((*param)->value, value, sizeof((*param)->value)-1);
+ unistr2_to_dos((*param)->value, value, sizeof((*param)->value)-1);
(*param)->type = type;
/* le champ data n'est pas NULL termine */
diff --git a/source/rpc_server/srv_dfs_nt.c b/source/rpc_server/srv_dfs_nt.c
index 6bf1967a3fb..f3f495afcf7 100644
--- a/source/rpc_server/srv_dfs_nt.c
+++ b/source/rpc_server/srv_dfs_nt.c
@@ -62,9 +62,9 @@ WERROR _dfs_add(pipes_struct *p, DFS_Q_DFS_ADD* q_u, DFS_R_DFS_ADD *r_u)
return WERR_ACCESS_DENIED;
}
- unistr2_to_ascii(dfspath, &q_u->DfsEntryPath, sizeof(dfspath)-1);
- unistr2_to_ascii(servername, &q_u->ServerName, sizeof(servername)-1);
- unistr2_to_ascii(sharename, &q_u->ShareName, sizeof(sharename)-1);
+ unistr2_to_dos(dfspath, &q_u->DfsEntryPath, sizeof(dfspath)-1);
+ unistr2_to_dos(servername, &q_u->ServerName, sizeof(servername)-1);
+ unistr2_to_dos(sharename, &q_u->ShareName, sizeof(sharename)-1);
DEBUG(5,("init_reply_dfs_add: Request to add %s -> %s\\%s.\n",
dfspath, servername, sharename));
@@ -126,12 +126,12 @@ WERROR _dfs_remove(pipes_struct *p, DFS_Q_DFS_REMOVE *q_u,
return WERR_ACCESS_DENIED;
}
- unistr2_to_ascii(dfspath, &q_u->DfsEntryPath, sizeof(dfspath)-1);
+ unistr2_to_dos(dfspath, &q_u->DfsEntryPath, sizeof(dfspath)-1);
if(q_u->ptr_ServerName)
- unistr2_to_ascii(servername, &q_u->ServerName, sizeof(servername)-1);
+ unistr2_to_dos(servername, &q_u->ServerName, sizeof(servername)-1);
if(q_u->ptr_ShareName)
- unistr2_to_ascii(sharename, &q_u->ShareName, sizeof(sharename)-1);
+ unistr2_to_dos(sharename, &q_u->ShareName, sizeof(sharename)-1);
if(q_u->ptr_ServerName && q_u->ptr_ShareName)
{
@@ -359,7 +359,7 @@ WERROR _dfs_get_info(pipes_struct *p, DFS_Q_DFS_GET_INFO *q_u,
pstring path;
struct junction_map jn;
- unistr2_to_ascii(path, uni_path, sizeof(path)-1);
+ unistr2_to_dos(path, uni_path, sizeof(path)-1);
if(!create_junction(path, &jn))
return WERR_DFS_NO_SUCH_SERVER;
diff --git a/source/rpc_server/srv_lsa_hnd.c b/source/rpc_server/srv_lsa_hnd.c
index 59bbc5263fa..09d03cd97f5 100644
--- a/source/rpc_server/srv_lsa_hnd.c
+++ b/source/rpc_server/srv_lsa_hnd.c
@@ -135,6 +135,14 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
DLIST_ADD(p->pipe_handles->Policy, pol);
p->pipe_handles->count++;
+ /*
+ * Ensure we don't idle this connection if a handle is open.
+ * Increment the number of files open on the first handle create.
+ */
+
+ if (p->pipe_handles->count == 1)
+ p->conn->num_files_open++;
+
*hnd = pol->pol_hnd;
DEBUG(4,("Opened policy hnd[%d] ", (int)p->pipe_handles->count));
@@ -201,6 +209,15 @@ BOOL close_policy_hnd(pipes_struct *p, POLICY_HND *hnd)
p->pipe_handles->count--;
+ /*
+ * Ensure we can idle this connection if this is the last handle.
+ * Decrement the number of files open on the last handle delete.
+ */
+
+ if (p->pipe_handles->count == 0)
+ p->conn->num_files_open--;
+
+
DLIST_REMOVE(p->pipe_handles->Policy, pol);
ZERO_STRUCTP(pol);
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index 6c33d47bb06..c216b6ddf89 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -152,6 +152,7 @@ static void init_lsa_rid2s(DOM_R_REF *ref, DOM_RID2 *rid2,
/* Split name into domain and user component */
pstrcpy(full_name, dos_unistr2_to_str(&name[i]));
+ dos_to_unix(full_name); /* full name should be in unix charset. */
split_domain_name(full_name, dom_name, user);
/* Lookup name */
@@ -595,7 +596,7 @@ NTSTATUS _lsa_priv_get_dispname(pipes_struct *p, LSA_Q_PRIV_GET_DISPNAME *q_u, L
if (!find_policy_by_hnd(p, &q_u->pol, NULL))
return NT_STATUS_INVALID_HANDLE;
- unistr2_to_ascii(name_asc, &q_u->name, sizeof(name_asc));
+ unistr2_to_dos(name_asc, &q_u->name, sizeof(name_asc));
DEBUG(0,("_lsa_priv_get_dispname: %s", name_asc));
diff --git a/source/rpc_server/srv_netlog_nt.c b/source/rpc_server/srv_netlog_nt.c
index 5882f9a5cc7..3f84c7a98b1 100644
--- a/source/rpc_server/srv_netlog_nt.c
+++ b/source/rpc_server/srv_netlog_nt.c
@@ -223,7 +223,7 @@ NTSTATUS _net_req_chal(pipes_struct *p, NET_Q_REQ_CHAL *q_u, NET_R_REQ_CHAL *r_u
/* from client / server challenges and md4 password, generate sess key */
cred_session_key(&p->dc.clnt_chal, &p->dc.srv_chal,
- (char *)p->dc.md4pw, p->dc.sess_key);
+ (uchar *)p->dc.md4pw, p->dc.sess_key);
/* Save the machine account name. */
fstrcpy(p->dc.mach_acct, mach_acct);
diff --git a/source/rpc_server/srv_pipe_hnd.c b/source/rpc_server/srv_pipe_hnd.c
index 61b608c0e82..0fe9b383a22 100644
--- a/source/rpc_server/srv_pipe_hnd.c
+++ b/source/rpc_server/srv_pipe_hnd.c
@@ -270,8 +270,10 @@ pipes_struct *open_rpc_pipe_p(char *pipe_name,
if (is_spoolss_pipe)
current_spoolss_pipes_open++;
- /* Ensure the connection isn't idled whilst this pipe is open. */
- conn->num_files_open++;
+ /*
+ * The connection can be idled whilst this pipe is open
+ * if there are no handles open. JRA.
+ */
return chain_p;
}
@@ -964,8 +966,6 @@ BOOL close_rpc_pipe_hnd(pipes_struct *p, connection_struct *conn)
SAFE_FREE(p);
- conn->num_files_open--;
-
return True;
}
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 68f010beea7..08eddcaf983 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -657,10 +657,10 @@ static void make_group_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UNIST
/*
* JRA. I think this should include the null. TNG does not.
*/
- int len = strlen(grp[i].name)+1;
+ int len = strlen(unix_to_dos_static(grp[i].name))+1;
init_sam_entry(&sam[i], len, grp[i].rid);
- init_unistr2(&uni_name[i], grp[i].name, len);
+ init_unistr2(&uni_name[i], unix_to_dos_static(grp[i].name), len);
}
*sam_pp = sam;
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c
index 6288ef2916c..25a3f49ad45 100644
--- a/source/rpc_server/srv_spoolss_nt.c
+++ b/source/rpc_server/srv_spoolss_nt.c
@@ -37,6 +37,15 @@
#define PRINTER_HANDLE_IS_PRINTER 0
#define PRINTER_HANDLE_IS_PRINTSERVER 1
+/* Table to map the driver version */
+/* to OS */
+char * drv_ver_to_os[] = {
+ "WIN9X", /* driver version/cversion 0 */
+ "", /* unused ? */
+ "WINNT", /* driver version/cversion 2 */
+ "WIN2K", /* driver version/cversion 3 */
+};
+
struct table_node {
char *long_archi;
char *short_archi;
@@ -980,7 +989,7 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u,
/* some sanity check because you can open a printer or a print server */
/* aka: \\server\printer or \\server */
- unistr2_to_ascii(name, printername, sizeof(name)-1);
+ unistr2_to_dos(name, printername, sizeof(name)-1);
DEBUGADD(3,("checking name: %s\n",name));
@@ -1092,7 +1101,9 @@ Can't find printer handle we created for printer %s\n", name ));
printer_default->access_required = PRINTER_ACCESS_USE;
}
- if (!print_access_check(&user, snum, printer_default->access_required)) {
+ /* check smb.conf parameters and the the sec_desc */
+
+ if (!user_ok(uidtoname(user.uid), snum) || !print_access_check(&user, snum, printer_default->access_required)) {
DEBUG(3, ("access DENIED for printer open\n"));
close_printer_handle(p, handle);
return WERR_ACCESS_DENIED;
@@ -1426,8 +1437,8 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
NT_PRINTER_DRIVER_INFO_LEVEL info;
int version;
- unistr2_to_ascii(driver, &q_u->driver, sizeof(driver)-1 );
- unistr2_to_ascii(arch, &q_u->arch, sizeof(arch)-1 );
+ unistr2_to_dos(driver, &q_u->driver, sizeof(driver)-1 );
+ unistr2_to_dos(arch, &q_u->arch, sizeof(arch)-1 );
/* check that we have a valid driver name first */
if ((version=get_version_id(arch)) == -1) {
@@ -1499,7 +1510,11 @@ static BOOL getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint32
*type = 0x4;
if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
return False;
+#ifndef EMULATE_WIN2K_HACK /* JERRY */
SIVAL(*data, 0, 2);
+#else
+ SIVAL(*data, 0, 3);
+#endif
*needed = 0x4;
return True;
}
@@ -1636,7 +1651,7 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO
return WERR_BADFID;
}
- unistr2_to_ascii(value, valuename, sizeof(value)-1);
+ unistr2_to_dos(value, valuename, sizeof(value)-1);
if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER)
found=getprinterdata_printer_server(p->mem_ctx, value, type, data, needed, *out_size);
@@ -1743,7 +1758,7 @@ WERROR _spoolss_rffpcnex(pipes_struct *p, SPOOL_Q_RFFPCNEX *q_u, SPOOL_R_RFFPCNE
Printer->notify.option=dup_spool_notify_option(option);
- unistr2_to_ascii(Printer->notify.localmachine, localmachine, sizeof(Printer->notify.localmachine)-1);
+ unistr2_to_dos(Printer->notify.localmachine, localmachine, sizeof(Printer->notify.localmachine)-1);
/* connect to the client machine and send a ReplyOpenPrinter */
if(srv_spoolss_replyopenprinter(Printer->notify.localmachine,
@@ -3007,7 +3022,7 @@ static BOOL construct_printer_info_0(PRINTER_INFO_0 *printer, int snum)
printer->global_counter = global_counter;
printer->total_pages = 0;
-#if 0 /* JERRY */
+#ifndef EMULATE_WIN2K_HACK /* JERRY */
printer->major_version = 0x0004; /* NT 4 */
printer->build_version = 0x0565; /* build 1381 */
#else
@@ -3482,10 +3497,26 @@ static WERROR enum_all_printers_info_1_remote(fstring name, NEW_BUFFER *buffer,
enum_all_printers_info_1_network.
*********************************************************************/
-static WERROR enum_all_printers_info_1_network(NEW_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned)
+static WERROR enum_all_printers_info_1_network(fstring name, NEW_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned)
{
+ char *s = name;
+
DEBUG(4,("enum_all_printers_info_1_network\n"));
+ /* If we respond to a enum_printers level 1 on our name with flags
+ set to PRINTER_ENUM_REMOTE with a list of printers then these
+ printers incorrectly appear in the APW browse list.
+ Specifically the printers for the server appear at the workgroup
+ level where all the other servers in the domain are
+ listed. Windows responds to this call with a
+ WERR_CAN_NOT_COMPLETE so we should do the same. */
+
+ if (name[0] == '\\' && name[1] == '\\')
+ s = name + 2;
+
+ if (is_myname_or_ipaddr(s))
+ return WERR_CAN_NOT_COMPLETE;
+
return enum_all_printers_info_1(PRINTER_ENUM_UNKNOWN_8, buffer, offered, needed, returned);
}
@@ -3523,9 +3554,9 @@ static WERROR enum_all_printers_info_2(NEW_BUFFER *buffer, uint32 offered, uint3
}
/* check the required size. */
- for (i=0; i<*returned; i++)
+ for (i=0; i<*returned; i++)
(*needed) += spoolss_size_printer_info_2(&printers[i]);
-
+
if (!alloc_buffer_size(buffer, *needed)) {
for (i=0; i<*returned; i++) {
free_devmode(printers[i].devmode);
@@ -3572,7 +3603,7 @@ static WERROR enumprinters_level1( uint32 flags, fstring name,
return enum_all_printers_info_1_remote(name, buffer, offered, needed, returned);
if (flags & PRINTER_ENUM_NETWORK)
- return enum_all_printers_info_1_network(buffer, offered, needed, returned);
+ return enum_all_printers_info_1_network(name, buffer, offered, needed, returned);
return WERR_OK; /* NT4sp5 does that */
}
@@ -3658,7 +3689,7 @@ WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_
* Level 5: same as Level 2
*/
- unistr2_to_ascii(name, servername, sizeof(name)-1);
+ unistr2_to_dos(name, servername, sizeof(name)-1);
strupper(name);
switch (level) {
@@ -3755,7 +3786,7 @@ static WERROR getprinter_level_2(int snum, NEW_BUFFER *buffer, uint32 offered, u
/* check the required size. */
*needed += spoolss_size_printer_info_2(printer);
-
+
if (!alloc_buffer_size(buffer, *needed)) {
free_printer_info_2(printer);
return WERR_INSUFFICIENT_BUFFER;
@@ -4457,7 +4488,7 @@ WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_
*serverminorversion=0;
pstrcpy(servername, get_called_name());
- unistr2_to_ascii(architecture, uni_arch, sizeof(architecture)-1);
+ unistr2_to_dos(architecture, uni_arch, sizeof(architecture)-1);
if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
@@ -4554,7 +4585,7 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
*/
if (info_1->p_datatype != 0) {
- unistr2_to_ascii(datatype, &info_1->datatype, sizeof(datatype));
+ unistr2_to_dos(datatype, &info_1->datatype, sizeof(datatype));
if (strcmp(datatype, "RAW") != 0) {
(*jobid)=0;
return WERR_INVALID_DATATYPE;
@@ -4566,7 +4597,7 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
return WERR_BADFID;
}
- unistr2_to_ascii(jobname, &info_1->docname, sizeof(jobname));
+ unistr2_to_dos(jobname, &info_1->docname, sizeof(jobname));
Printer->jobid = print_job_start(&user, snum, jobname);
@@ -4816,7 +4847,8 @@ static BOOL add_printer_hook(NT_PRINTER_INFO_LEVEL *printer)
get_called_name());
/* change \ to \\ for the shell */
all_string_sub(driverlocation,"\\","\\\\",sizeof(pstring));
-
+ standard_sub_basic(remote_machine);
+
slprintf(command, sizeof(command)-1, "%s \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"",
cmd, printer->info_2->printername, printer->info_2->sharename,
printer->info_2->portname, printer->info_2->drivername,
@@ -5260,8 +5292,6 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
if (!strequal(printer->info_2->location, old_printer->info_2->location))
msg.flags |= PRINTER_MESSAGE_LOCATION;
- ZERO_STRUCT(msg);
-
msg.low = PRINTER_CHANGE_ADD_PRINTER;
fstrcpy(msg.printer_name, printer->info_2->printername);
@@ -5935,7 +5965,7 @@ WERROR _spoolss_enumprinterdrivers( pipes_struct *p, SPOOL_Q_ENUMPRINTERDRIVERS
*needed=0;
*returned=0;
- unistr2_to_ascii(architecture, environment, sizeof(architecture)-1);
+ unistr2_to_dos(architecture, environment, sizeof(architecture)-1);
switch (level) {
case 1:
@@ -6091,7 +6121,7 @@ WERROR _spoolss_getform(pipes_struct *p, SPOOL_Q_GETFORM *q_u, SPOOL_R_GETFORM *
spoolss_move_buffer(q_u->buffer, &r_u->buffer);
buffer = r_u->buffer;
- unistr2_to_ascii(form_name, uni_formname, sizeof(form_name)-1);
+ unistr2_to_dos(form_name, uni_formname, sizeof(form_name)-1);
DEBUG(4,("_spoolss_getform\n"));
DEBUGADD(5,("Offered buffer size [%d]\n", offered));
@@ -6542,7 +6572,8 @@ WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u,
NT_PRINTER_DRIVER_INFO_LEVEL driver;
struct current_user user;
fstring driver_name;
-
+ uint32 version;
+
ZERO_STRUCT(driver);
get_current_user(&user, p);
@@ -6569,15 +6600,20 @@ WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u,
goto done;
}
- switch(level)
- {
+ /* BEGIN_ADMIN_LOG */
+ switch(level) {
case 3:
+ sys_adminlog(LOG_INFO,"Added printer driver. Print driver name: %s. Print driver OS: %s. Administrator name: %s.",
+ driver.info_3->name,drv_ver_to_os[driver.info_3->cversion],uidtoname(user.uid));
fstrcpy(driver_name, driver.info_3->name);
break;
case 6:
+ sys_adminlog(LOG_INFO,"Added printer driver. Print driver name: %s. Print driver OS: %s. Administrator name: %s.",
+ driver.info_6->name,drv_ver_to_os[driver.info_6->version],uidtoname(user.uid));
fstrcpy(driver_name, driver.info_6->name);
break;
}
+ /* END_ADMIN_LOG */
/*
* I think this is where he DrvUpgradePrinter() hook would be
@@ -6591,6 +6627,70 @@ WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u,
driver_name));
}
+ /*
+ * Based on the version (e.g. driver destination dir: 0=9x,2=Nt/2k,3=2k/Xp),
+ * decide if the driver init data should be deleted. The rules are:
+ * 1) never delete init data if it is a 9x driver, they don't use it anyway
+ * 2) delete init data only if there is no 2k/Xp driver
+ * 3) always delete init data
+ * The generalized rule is always use init data from the highest order driver.
+ * It is necessary to follow the driver install by an initialization step to
+ * finish off this process.
+ */
+ if (level == 3)
+ version = driver.info_3->cversion;
+ else if (level == 6)
+ version = driver.info_6->version;
+ else
+ version = -1;
+ switch (version) {
+ /*
+ * 9x printer driver - never delete init data
+ */
+ case 0:
+ DEBUG(10,("_spoolss_addprinterdriver: init data not deleted for 9x driver [%s]\n",
+ driver_name));
+ break;
+
+ /*
+ * Nt or 2k (compatiblity mode) printer driver - only delete init data if
+ * there is no 2k/Xp driver init data for this driver name.
+ */
+ case 2:
+ {
+ NT_PRINTER_DRIVER_INFO_LEVEL driver1;
+
+ if (!W_ERROR_IS_OK(get_a_printer_driver(&driver1, 3, driver_name, "Windows NT x86", 3))) {
+ /*
+ * No 2k/Xp driver found, delete init data (if any) for the new Nt driver.
+ */
+ if (!del_driver_init(driver_name))
+ DEBUG(6,("_spoolss_addprinterdriver: del_driver_init(%s) Nt failed!\n", driver_name));
+ } else {
+ /*
+ * a 2k/Xp driver was found, don't delete init data because Nt driver will use it.
+ */
+ free_a_printer_driver(driver1,3);
+ DEBUG(10,("_spoolss_addprinterdriver: init data not deleted for Nt driver [%s]\n",
+ driver_name));
+ }
+ }
+ break;
+
+ /*
+ * 2k or Xp printer driver - always delete init data
+ */
+ case 3:
+ if (!del_driver_init(driver_name))
+ DEBUG(6,("_spoolss_addprinterdriver: del_driver_init(%s) 2k/Xp failed!\n", driver_name));
+ break;
+
+ default:
+ DEBUG(0,("_spoolss_addprinterdriver: invalid level=%d\n", level));
+ break;
+ }
+
+
done:
free_a_printer_driver(driver, level);
return err;
@@ -6614,7 +6714,7 @@ static WERROR getprinterdriverdir_level_1(UNISTR2 *name, UNISTR2 *uni_environmen
pstring short_archi;
DRIVER_DIRECTORY_1 *info=NULL;
- unistr2_to_ascii(long_archi, uni_environment, sizeof(long_archi)-1);
+ unistr2_to_dos(long_archi, uni_environment, sizeof(long_archi)-1);
if (get_short_archi(short_archi, long_archi)==False)
return WERR_INVALID_ENVIRONMENT;
@@ -6969,7 +7069,7 @@ WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_
return status;
ZERO_STRUCTP(&param);
- unistr2_to_ascii(param.value, value, sizeof(param.value)-1);
+ unistr2_to_dos(param.value, value, sizeof(param.value)-1);
if(!unlink_specific_param_if_exist(printer->info_2, &param))
status = WERR_INVALID_PARAM;
@@ -7579,8 +7679,8 @@ WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u,
DEBUG(4,("_spoolss_getprinterdataex\n"));
- unistr2_to_ascii(key, &q_u->keyname, sizeof(key) - 1);
- unistr2_to_ascii(value, &q_u->valuename, sizeof(value) - 1);
+ unistr2_to_dos(key, &q_u->keyname, sizeof(key) - 1);
+ unistr2_to_dos(value, &q_u->valuename, sizeof(value) - 1);
/* in case of problem, return some default values */
*needed=0;
@@ -7658,7 +7758,7 @@ WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u,
/* From MSDN documentation of SetPrinterDataEx: pass request to
SetPrinterData if key is "PrinterDriverData" */
- unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1);
+ unistr2_to_dos(key, &q_u->key, sizeof(key) - 1);
if (strcmp(key, "PrinterDriverData") != 0)
return WERR_INVALID_PARAM;
@@ -7696,7 +7796,7 @@ WERROR _spoolss_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPO
DEBUG(4,("_spoolss_enumprinterkey\n"));
- unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1);
+ unistr2_to_dos(key, &q_u->key, sizeof(key) - 1);
/*
* we only support enumating all keys (key == "")
@@ -7781,7 +7881,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
* _spoolss_getprinterdataex() for details --jerry
*/
- unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1);
+ unistr2_to_dos(key, &q_u->key, sizeof(key) - 1);
if (strcmp(key, "PrinterDriverData") != 0)
{
DEBUG(10,("_spoolss_enumprinterdataex: Unknown keyname [%s]\n", key));
@@ -7884,9 +7984,9 @@ static WERROR getprintprocessordirectory_level_1(UNISTR2 *name,
pstring short_archi;
PRINTPROCESSOR_DIRECTORY_1 *info=NULL;
- unistr2_to_ascii(long_archi, environment, sizeof(long_archi)-1);
+ unistr2_to_dos(long_archi, environment, sizeof(long_archi)-1);
- if (get_short_archi(short_archi, long_archi)==FALSE)
+ if (get_short_archi(short_archi, long_archi)==False)
return WERR_INVALID_ENVIRONMENT;
if((info=(PRINTPROCESSOR_DIRECTORY_1 *)malloc(sizeof(PRINTPROCESSOR_DIRECTORY_1))) == NULL)
@@ -7919,6 +8019,7 @@ WERROR _spoolss_getprintprocessordirectory(pipes_struct *p, SPOOL_Q_GETPRINTPROC
NEW_BUFFER *buffer = NULL;
uint32 offered = q_u->offered;
uint32 *needed = &r_u->needed;
+ WERROR result;
/* that's an [in out] buffer */
spoolss_move_buffer(q_u->buffer, &r_u->buffer);
@@ -7930,12 +8031,12 @@ WERROR _spoolss_getprintprocessordirectory(pipes_struct *p, SPOOL_Q_GETPRINTPROC
switch(level) {
case 1:
- return getprintprocessordirectory_level_1
+ result = getprintprocessordirectory_level_1
(&q_u->name, &q_u->environment, buffer, offered, needed);
default:
- return WERR_UNKNOWN_LEVEL;
+ result = WERR_UNKNOWN_LEVEL;
}
- return WERR_ACCESS_DENIED;
+ return result;
}
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 7680a212978..1d884de2b5f 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -1240,7 +1240,7 @@ WERROR _srv_net_share_get_info(pipes_struct *p, SRV_Q_NET_SHARE_GET_INFO *q_u, S
DEBUG(5,("_srv_net_share_get_info: %d\n", __LINE__));
/* Create the list of shares for the response. */
- unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->uni_share_name, sizeof(share_name));
init_srv_r_net_share_get_info(p, r_u, share_name, q_u->info_level);
DEBUG(5,("_srv_net_share_get_info: %d\n", __LINE__));
@@ -1308,7 +1308,7 @@ WERROR _srv_net_share_set_info(pipes_struct *p, SRV_Q_NET_SHARE_SET_INFO *q_u, S
DEBUG(5,("_srv_net_share_set_info: %d\n", __LINE__));
- unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->uni_share_name, sizeof(share_name));
r_u->switch_value = 0;
@@ -1335,14 +1335,14 @@ WERROR _srv_net_share_set_info(pipes_struct *p, SRV_Q_NET_SHARE_SET_INFO *q_u, S
/* Not enough info in a level 1 to do anything. */
return WERR_ACCESS_DENIED;
case 2:
- unistr2_to_ascii(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(share_name));
- unistr2_to_ascii(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(share_name));
+ unistr2_to_dos(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(share_name));
+ unistr2_to_dos(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(share_name));
type = q_u->info.share.info2.info_2.type;
psd = NULL;
break;
case 502:
- unistr2_to_ascii(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(share_name));
- unistr2_to_ascii(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(share_name));
+ unistr2_to_dos(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(share_name));
+ unistr2_to_dos(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(share_name));
type = q_u->info.share.info502.info_502.type;
psd = q_u->info.share.info502.info_502_str.sd;
map_generic_share_sd_bits(psd);
@@ -1456,15 +1456,15 @@ WERROR _srv_net_share_add(pipes_struct *p, SRV_Q_NET_SHARE_ADD *q_u, SRV_R_NET_S
/* Not enough info in a level 1 to do anything. */
return WERR_ACCESS_DENIED;
case 2:
- unistr2_to_ascii(share_name, &q_u->info.share.info2.info_2_str.uni_netname, sizeof(share_name));
- unistr2_to_ascii(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(share_name));
- unistr2_to_ascii(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->info.share.info2.info_2_str.uni_netname, sizeof(share_name));
+ unistr2_to_dos(comment, &q_u->info.share.info2.info_2_str.uni_remark, sizeof(share_name));
+ unistr2_to_dos(pathname, &q_u->info.share.info2.info_2_str.uni_path, sizeof(share_name));
type = q_u->info.share.info2.info_2.type;
break;
case 502:
- unistr2_to_ascii(share_name, &q_u->info.share.info502.info_502_str.uni_netname, sizeof(share_name));
- unistr2_to_ascii(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(share_name));
- unistr2_to_ascii(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->info.share.info502.info_502_str.uni_netname, sizeof(share_name));
+ unistr2_to_dos(comment, &q_u->info.share.info502.info_502_str.uni_remark, sizeof(share_name));
+ unistr2_to_dos(pathname, &q_u->info.share.info502.info_502_str.uni_path, sizeof(share_name));
type = q_u->info.share.info502.info_502.type;
psd = q_u->info.share.info502.info_502_str.sd;
map_generic_share_sd_bits(psd);
@@ -1543,7 +1543,7 @@ WERROR _srv_net_share_del(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_S
DEBUG(5,("_srv_net_share_del: %d\n", __LINE__));
- unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->uni_share_name, sizeof(share_name));
if (strequal(share_name,"IPC$") || strequal(share_name,"ADMIN$") || strequal(share_name,"global"))
return WERR_ACCESS_DENIED;
@@ -1656,7 +1656,7 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
r_u->status = WERR_OK;
- unistr2_to_ascii(qualname, &q_u->uni_qual_name, sizeof(qualname));
+ unistr2_to_dos(qualname, &q_u->uni_qual_name, sizeof(qualname));
/* Null password is ok - we are already an authenticated user... */
*null_pw = '\0';
@@ -1681,7 +1681,7 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
}
became_user = True;
- unistr2_to_ascii(filename, &q_u->uni_file_name, sizeof(filename));
+ unistr2_to_dos(filename, &q_u->uni_file_name, sizeof(filename));
unix_convert(filename, conn, NULL, &bad_path, &st);
fsp = open_file_shared(conn, filename, &st, SET_OPEN_MODE(DOS_OPEN_RDONLY),
(FILE_FAIL_IF_NOT_EXIST|FILE_EXISTS_OPEN), 0, 0, &access_mode, &action);
@@ -1761,7 +1761,7 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
r_u->status = WERR_OK;
- unistr2_to_ascii(qualname, &q_u->uni_qual_name, sizeof(qualname));
+ unistr2_to_dos(qualname, &q_u->uni_qual_name, sizeof(qualname));
/* Null password is ok - we are already an authenticated user... */
*null_pw = '\0';
@@ -1786,7 +1786,7 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
}
became_user = True;
- unistr2_to_ascii(filename, &q_u->uni_file_name, sizeof(filename));
+ unistr2_to_dos(filename, &q_u->uni_file_name, sizeof(filename));
unix_convert(filename, conn, NULL, &bad_path, &st);
fsp = open_file_shared(conn, filename, &st, SET_OPEN_MODE(DOS_OPEN_RDWR),
@@ -1929,7 +1929,7 @@ WERROR _srv_net_name_validate(pipes_struct *p, SRV_Q_NET_NAME_VALIDATE *q_u, SRV
/*check if share name is ok*/
/*also check if we already have a share with this name*/
- unistr2_to_ascii(share_name, &q_u->uni_name, sizeof(share_name));
+ unistr2_to_dos(share_name, &q_u->uni_name, sizeof(share_name));
snum = find_service(share_name);
/* Share already exists. */
diff --git a/source/rpcclient/cmd_dfs.c b/source/rpcclient/cmd_dfs.c
index 8a3c3e9db33..1d90c6a96d6 100644
--- a/source/rpcclient/cmd_dfs.c
+++ b/source/rpcclient/cmd_dfs.c
@@ -94,7 +94,7 @@ static void display_dfs_info_1(DFS_INFO_1 *info1)
{
fstring temp;
- unistr2_to_ascii(temp, &info1->entrypath, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &info1->entrypath, sizeof(temp) - 1);
printf("entrypath: %s\n", temp);
}
@@ -104,10 +104,10 @@ static void display_dfs_info_2(DFS_INFO_2 *info2)
{
fstring temp;
- unistr2_to_ascii(temp, &info2->entrypath, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &info2->entrypath, sizeof(temp) - 1);
printf("entrypath: %s\n", temp);
- unistr2_to_ascii(temp, &info2->comment, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &info2->comment, sizeof(temp) - 1);
printf("\tcomment: %s\n", temp);
printf("\tstate: %d\n", info2->state);
@@ -121,10 +121,10 @@ static void display_dfs_info_3(DFS_INFO_3 *info3)
fstring temp;
int i;
- unistr2_to_ascii(temp, &info3->entrypath, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &info3->entrypath, sizeof(temp) - 1);
printf("entrypath: %s\n", temp);
- unistr2_to_ascii(temp, &info3->comment, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &info3->comment, sizeof(temp) - 1);
printf("\tcomment: %s\n", temp);
printf("\tstate: %d\n", info3->state);
@@ -133,10 +133,10 @@ static void display_dfs_info_3(DFS_INFO_3 *info3)
for (i = 0; i < info3->num_storages; i++) {
DFS_STORAGE_INFO *dsi = &info3->storages[i];
- unistr2_to_ascii(temp, &dsi->servername, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &dsi->servername, sizeof(temp) - 1);
printf("\t\tstorage[%d] servername: %s\n", i, temp);
- unistr2_to_ascii(temp, &dsi->sharename, sizeof(temp) - 1);
+ unistr2_to_unix(temp, &dsi->sharename, sizeof(temp) - 1);
printf("\t\tstorage[%d] sharename: %s\n", i, temp);
}
}
diff --git a/source/rpcclient/cmd_netlogon.c b/source/rpcclient/cmd_netlogon.c
index 4d67cba1b52..c9ab4393ba2 100644
--- a/source/rpcclient/cmd_netlogon.c
+++ b/source/rpcclient/cmd_netlogon.c
@@ -82,25 +82,25 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas,
for (i = 0; i < num_deltas; i++) {
switch (hdr_deltas[i].type) {
case SAM_DELTA_DOMAIN_INFO:
- unistr2_to_ascii(name,
+ unistr2_to_unix(name,
&deltas[i].domain_info.uni_dom_name,
sizeof(name) - 1);
printf("Domain: %s\n", name);
break;
case SAM_DELTA_GROUP_INFO:
- unistr2_to_ascii(name,
+ unistr2_to_unix(name,
&deltas[i].group_info.uni_grp_name,
sizeof(name) - 1);
printf("Group: %s\n", name);
break;
case SAM_DELTA_ACCOUNT_INFO:
- unistr2_to_ascii(name,
+ unistr2_to_unix(name,
&deltas[i].account_info.uni_acct_name,
sizeof(name) - 1);
printf("Account: %s\n", name);
break;
case SAM_DELTA_ALIAS_INFO:
- unistr2_to_ascii(name,
+ unistr2_to_unix(name,
&deltas[i].alias_info.uni_als_name,
sizeof(name) - 1);
printf("Alias: %s\n", name);
diff --git a/source/rpcclient/cmd_reg.c b/source/rpcclient/cmd_reg.c
index 787cd4f553a..5ffaeb38610 100644
--- a/source/rpcclient/cmd_reg.c
+++ b/source/rpcclient/cmd_reg.c
@@ -898,6 +898,8 @@ nt registry shutdown
static NTSTATUS cmd_reg_shutdown(struct cli_state *cli, TALLOC_CTX *mem_ctx,
int argc, char **argv)
{
+ extern char *optarg;
+ extern int optind;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
fstring msg;
uint32 timeout = 20;
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index ed152b9f5c8..2d0760fe135 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -34,34 +34,34 @@ static void display_sam_user_info_21(SAM_USER_INFO_21 *usr)
{
fstring temp;
- unistr2_to_ascii(temp, &usr->uni_user_name, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_user_name, sizeof(temp)-1);
printf("\tUser Name :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_full_name, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_full_name, sizeof(temp)-1);
printf("\tFull Name :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_home_dir, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_home_dir, sizeof(temp)-1);
printf("\tHome Drive :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_dir_drive, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_dir_drive, sizeof(temp)-1);
printf("\tDir Drive :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_profile_path, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_profile_path, sizeof(temp)-1);
printf("\tProfile Path:\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_logon_script, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_logon_script, sizeof(temp)-1);
printf("\tLogon Script:\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_acct_desc, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_acct_desc, sizeof(temp)-1);
printf("\tDescription :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_workstations, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_workstations, sizeof(temp)-1);
printf("\tWorkstations:\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_unknown_str, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_unknown_str, sizeof(temp)-1);
printf("\tUnknown Str :\t%s\n", temp);
- unistr2_to_ascii(temp, &usr->uni_munged_dial, sizeof(temp)-1);
+ unistr2_to_unix(temp, &usr->uni_munged_dial, sizeof(temp)-1);
printf("\tRemote Dial :\t%s\n", temp);
printf("\tLogon Time :\t%s\n",
@@ -146,10 +146,10 @@ static void display_sam_unk_info_2(SAM_UNK_INFO_2 *info2)
{
fstring name;
- unistr2_to_ascii(name, &info2->uni_domain, sizeof(name) - 1);
+ unistr2_to_unix(name, &info2->uni_domain, sizeof(name) - 1);
printf("Domain:\t%s\n", name);
- unistr2_to_ascii(name, &info2->uni_server, sizeof(name) - 1);
+ unistr2_to_unix(name, &info2->uni_server, sizeof(name) - 1);
printf("Server:\t%s\n", name);
printf("Total Users:\t%d\n", info2->num_domain_usrs);
@@ -175,13 +175,13 @@ static void display_sam_info_1(SAM_ENTRY1 *e1, SAM_STR1 *s1)
printf("RID: 0x%x ", e1->rid_user);
printf("acb: 0x%x ", e1->acb_info);
- unistr2_to_ascii(tmp, &s1->uni_acct_name, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s1->uni_acct_name, sizeof(tmp)-1);
printf("Account: %s\t", tmp);
- unistr2_to_ascii(tmp, &s1->uni_full_name, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s1->uni_full_name, sizeof(tmp)-1);
printf("Name: %s\t", tmp);
- unistr2_to_ascii(tmp, &s1->uni_acct_desc, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s1->uni_acct_desc, sizeof(tmp)-1);
printf("Desc: %s\n", tmp);
}
@@ -193,10 +193,10 @@ static void display_sam_info_2(SAM_ENTRY2 *e2, SAM_STR2 *s2)
printf("RID: 0x%x ", e2->rid_user);
printf("acb: 0x%x ", e2->acb_info);
- unistr2_to_ascii(tmp, &s2->uni_srv_name, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s2->uni_srv_name, sizeof(tmp)-1);
printf("Account: %s\t", tmp);
- unistr2_to_ascii(tmp, &s2->uni_srv_desc, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s2->uni_srv_desc, sizeof(tmp)-1);
printf("Name: %s\n", tmp);
}
@@ -209,10 +209,10 @@ static void display_sam_info_3(SAM_ENTRY3 *e3, SAM_STR3 *s3)
printf("RID: 0x%x ", e3->rid_grp);
printf("attr: 0x%x ", e3->attr);
- unistr2_to_ascii(tmp, &s3->uni_grp_name, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s3->uni_grp_name, sizeof(tmp)-1);
printf("Account: %s\t", tmp);
- unistr2_to_ascii(tmp, &s3->uni_grp_desc, sizeof(tmp)-1);
+ unistr2_to_unix(tmp, &s3->uni_grp_desc, sizeof(tmp)-1);
printf("Name: %s\n", tmp);
}
@@ -308,9 +308,9 @@ static void display_group_info1(GROUP_INFO1 *info1)
{
fstring temp;
- unistr2_to_ascii(temp, &info1->uni_acct_name, sizeof(temp)-1);
+ unistr2_to_unix(temp, &info1->uni_acct_name, sizeof(temp)-1);
printf("\tGroup Name:\t%s\n", temp);
- unistr2_to_ascii(temp, &info1->uni_acct_desc, sizeof(temp)-1);
+ unistr2_to_unix(temp, &info1->uni_acct_desc, sizeof(temp)-1);
printf("\tDescription:\t%s\n", temp);
printf("\tunk1:%d\n", info1->unknown_1);
printf("\tNum Members:%d\n", info1->num_members);
@@ -323,7 +323,7 @@ static void display_group_info4(GROUP_INFO4 *info4)
{
fstring desc;
- unistr2_to_ascii(desc, &info4->uni_acct_desc, sizeof(desc)-1);
+ unistr2_to_unix(desc, &info4->uni_acct_desc, sizeof(desc)-1);
printf("\tGroup Description:%s\n", desc);
}
diff --git a/source/rpcclient/cmd_srvsvc.c b/source/rpcclient/cmd_srvsvc.c
index 6fbd152dfb5..d6c1fd544f3 100644
--- a/source/rpcclient/cmd_srvsvc.c
+++ b/source/rpcclient/cmd_srvsvc.c
@@ -142,8 +142,8 @@ static void display_srv_info_101(SRV_INFO_101 *sv101)
fstring name;
fstring comment;
- unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1);
- unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1);
+ unistr2_to_unix(name, &sv101->uni_name, sizeof(name) - 1);
+ unistr2_to_unix(comment, &sv101->uni_comment, sizeof(comment) - 1);
display_server(name, sv101->srv_type, comment);
@@ -160,9 +160,9 @@ static void display_srv_info_102(SRV_INFO_102 *sv102)
fstring comment;
fstring usr_path;
- unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1);
- unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1);
- unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1);
+ unistr2_to_unix(name, &sv102->uni_name, sizeof(name) - 1);
+ unistr2_to_unix(comment, &sv102->uni_comment, sizeof(comment) - 1);
+ unistr2_to_unix(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1);
display_server(name, sv102->srv_type, comment);
diff --git a/source/rpcclient/samsync.c b/source/rpcclient/samsync.c
index 15efc1d42bc..c1be521c553 100644
--- a/source/rpcclient/samsync.c
+++ b/source/rpcclient/samsync.c
@@ -78,7 +78,7 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
a = &deltas[i].account_info;
- unistr2_to_ascii(acct_name, &a->uni_acct_name,
+ unistr2_to_unix(acct_name, &a->uni_acct_name,
sizeof(acct_name) - 1);
/* Decode hashes from password hash */
diff --git a/source/script/.cvsignore b/source/script/.cvsignore
index e69de29bb2d..7a8114ecd73 100644
--- a/source/script/.cvsignore
+++ b/source/script/.cvsignore
@@ -0,0 +1 @@
+findsmb
diff --git a/source/script/findsmb.in b/source/script/findsmb.in
index d2aa94591b7..e9bb247da0d 100755
--- a/source/script/findsmb.in
+++ b/source/script/findsmb.in
@@ -47,7 +47,9 @@ open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*'|") ||
# print header info
-print "\nIP ADDR NETBIOS NAME WORKGROUP/OS/VERSION $BCAST\n";
+print "\n *=DMB\n";
+print " +=LMB\n";
+print "IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION $BCAST\n";
print "---------------------------------------------------------------------\n";
foreach $ip (@ipaddrs) # loop through each IP address found
@@ -61,85 +63,91 @@ foreach $ip (@ipaddrs) # loop through each IP address found
@nmblookup = <NMBLOOKUP>;
close NMBLOOKUP;
-# get the first <00> name
+# get the first non group <00> name
- @name = grep(/<00>/,@nmblookup);
+ @name = grep(/<00> - /,@nmblookup);
$_ = @name[0];
- if ($_) { # we have a netbios name
- if (/GROUP/) { # is it a group name
- ($name, $aliases, $type, $length, @addresses) =
- gethostbyaddr(pack('C4',split('\.',$ip)),2);
- if (! $name) { # could not get name
- $name = "unknown nis name";
- }
- } else {
+ if (not $_) {
+# try without the -r option
+ open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") ||
+ die("Can't get nmb name list.\n");
+ @nmblookup = <NMBLOOKUP>;
+ close NMBLOOKUP;
+ @name = grep(/<00> - /,@nmblookup);
+ $_ = @name[0];
+ }
# The Netbios name can contain lot of characters also '<' '>'
-# and spaces. The follwing cure inside name space but not
+# and spaces. The follwing cures embedded space but not
# names starting or ending with spaces
- /(.{1,15})\s+<00>\s+/;
- $name = $1;
+ /(.{1,15})\s+<00>\s+/;
+ $name = $1;
+
+ if (not $name) { # no netbios name found
+# try getting the host name
+ ($name, $aliases, $type, $length, @addresses) =
+ gethostbyaddr(pack('C4',split('\.',$ip)),2);
+ if (! $name) { # could not get name
+ $name = "unknown name";
}
+# truncate name to 15 characters
+ if (length($name) > 15) {
+ $name = substr($name,0,15);
+ }
+# do an smbclient command on the ip address
+
+ open(SMB,"$SAMBABIN/smbclient -N -L '$ip' -I $ip -U% |") ||
+ die("Can't do smbclient command.\n");
+ @smb = <SMB>;
+ close SMB;
+ } else { # netbios name found
# do an smbclient command on the netbios name.
- open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||
+ open(SMB,"$SAMBABIN/smbclient -N -L '$name' -I $ip -U% |") ||
die("Can't do smbclient command.\n");
@smb = <SMB>;
close SMB;
-
- if ($DEBUG) { # if -d flag print results of nmblookup and smbclient
- print "===============================================================\n";
- print @nmblookup;
- print @smb;
- }
+ }
+ if ($DEBUG) { # if -d flag print results of nmblookup and smbclient
+ print "===============================================================\n";
+ print @nmblookup;
+ print @smb;
+ }
# look for the OS= string
- @info = grep(/OS=/,@smb);
- $_ = @info[0];
- if ($_) { # we found response
- s/Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
+ @info = grep(/OS=/,@smb);
+ $_ = @info[0];
+ if ($_) { # we found response
+ s/.*Domain=|OS=|Server=|\n//g; # strip out descriptions to make line shorter
- } else { # no OS= string in response (WIN95 client)
+ } else { # no OS= string in response (WIN95 client)
# for WIN95 clients get workgroup name from nmblookup response
- @name = grep(/<00> - <GROUP>/,@nmblookup);
- $_ = @name[0];
- if ($_) {
+ @name = grep(/<00> - <GROUP>/,@nmblookup);
+ $_ = @name[0];
+ if ($_) {
# Same as before for space and characters
- /(.{1,15})\s+<00>\s+/;
- $_ = "[$1]";
- } else {
- $_ = "Unknown Workgroup";
- }
+ /(.{1,15})\s+<00>\s+/;
+ $_ = "[$1]";
+ } else {
+ $_ = "Unknown Workgroup";
}
+ }
# see if machine registered a local master browser name
- if (grep(/<1d>/,@nmblookup)) {
- $master = '+'; # indicate local master browser
- if (grep(/<1b>/,@nmblookup)) { # how about domain master browser?
- $master = '*'; # indicate domain master browser
- }
- } else {
- $master = ' '; # not a browse master
+ if (grep(/<1d>/,@nmblookup)) {
+ $master = '+'; # indicate local master browser
+ if (grep(/<1b>/,@nmblookup)) { # how about domain master browser?
+ $master = '*'; # indicate domain master browser
}
+ } else {
+ $master = ' '; # not a browse master
+ }
# line up info in 3 columns
- print "$ip".' 'x(16-length($ip))."$name".' 'x(14-length($name))."$master"."$_\n";
+ print "$ip".' 'x(16-length($ip))."$name".' 'x(16-length($name))."$master"."$_\n";
- } else { # no netbios name found
-# try getting the host name
- ($name, $aliases, $type, $length, @addresses) =
- gethostbyaddr(pack('C4',split('\.',$ip)),2);
- if (! $name) { # could not get name
- $name = "unknown nis name";
- }
- if ($DEBUG) { # if -d flag print results of nmblookup
- print "===============================================================\n";
- print @nmblookup;
- }
- print "$ip".' 'x(16-length($ip))."$name\n";
- }
}
diff --git a/source/smbd/chgpasswd.c b/source/smbd/chgpasswd.c
index bc91d776936..33ecfc5c2ff 100644
--- a/source/smbd/chgpasswd.c
+++ b/source/smbd/chgpasswd.c
@@ -193,16 +193,16 @@ static int dochild(int master, char *slavedev, char *name,
}
stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
stermios.c_lflag |= ICANON;
+#ifdef ONLCR
stermios.c_oflag &= ~(ONLCR);
- if (tcsetattr(0, TCSANOW, &stermios) < 0)
- {
+#endif
+ if (tcsetattr(0, TCSANOW, &stermios) < 0) {
DEBUG(3, ("could not set attributes of pty\n"));
return (False);
}
/* make us completely into the right uid */
- if (!as_root)
- {
+ if (!as_root) {
become_user_permanently(uid, gid);
}
diff --git a/source/smbd/dfree.c b/source/smbd/dfree.c
index abc3637056d..e55e40c030d 100644
--- a/source/smbd/dfree.c
+++ b/source/smbd/dfree.c
@@ -22,8 +22,9 @@
#include "includes.h"
/****************************************************************************
-normalise for DOS usage
+ Normalise for DOS usage.
****************************************************************************/
+
static void disk_norm(BOOL small_query, SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize)
{
/* check if the disk is beyond the max disk size */
@@ -60,7 +61,7 @@ static void disk_norm(BOOL small_query, SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,
/****************************************************************************
- return number of 1K blocks available on a path and total number
+ Return number of 1K blocks available on a path and total number.
****************************************************************************/
static SMB_BIG_UINT disk_free(char *path, BOOL small_query,
@@ -154,10 +155,10 @@ static SMB_BIG_UINT disk_free(char *path, BOOL small_query,
return(dfree_retval);
}
-
/****************************************************************************
-wrap it to get filenames right
+ Wrap it to get filenames right.
****************************************************************************/
+
SMB_BIG_UINT sys_disk_free(const char *path, BOOL small_query,
SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize)
{
diff --git a/source/smbd/dir.c b/source/smbd/dir.c
index 12e0758596f..cce62870715 100644
--- a/source/smbd/dir.c
+++ b/source/smbd/dir.c
@@ -559,6 +559,12 @@ BOOL dir_check_ftype(connection_struct *conn,int mode,SMB_STRUCT_STAT *st,int di
return True;
}
+static BOOL mangle_mask_match(connection_struct *conn, char *filename, char *mask)
+{
+ mangle_map(filename,True,False,SNUM(conn));
+ return mask_match(filename,mask,False);
+}
+
/****************************************************************************
Get an 8.3 directory entry.
****************************************************************************/
@@ -604,14 +610,13 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype,char *fname,
*/
if ((strcmp(mask,"*.*") == 0) ||
mask_match(filename,mask,False) ||
- (name_map_mangle(filename,True,False,SNUM(conn)) &&
- mask_match(filename,mask,False)))
+ mangle_mask_match(conn,filename,mask))
{
if (isrootdir && (strequal(filename,"..") || strequal(filename,".")))
continue;
- if (!is_8_3(filename, False)) {
- name_map_mangle(filename,True,False,SNUM(conn));
+ if (!mangle_is_8_3(filename, False)) {
+ mangle_map(filename,True,False,SNUM(conn));
}
pstrcpy(fname,filename);
@@ -723,76 +728,83 @@ static BOOL user_can_read_file(connection_struct *conn, char *name)
void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
{
- Dir *dirp;
- char *n;
- DIR *p = conn->vfs_ops.opendir(conn,dos_to_unix_static(name));
- int used=0;
-
- if (!p) return(NULL);
- dirp = (Dir *)malloc(sizeof(Dir));
- if (!dirp) {
- DEBUG(0,("Out of memory in OpenDir\n"));
- conn->vfs_ops.closedir(conn,p);
- return(NULL);
- }
- dirp->pos = dirp->numentries = dirp->mallocsize = 0;
- dirp->data = dirp->current = NULL;
-
- while (True)
- {
- int l;
-
- if (used == 0) {
- n = ".";
- } else if (used == 2) {
- n = "..";
- } else {
- n = vfs_readdirname(conn, p);
- if (n == NULL)
- break;
- if ((strcmp(".",n) == 0) ||(strcmp("..",n) == 0))
- continue;
- }
-
- l = strlen(n)+1;
-
- /* Return value of vfs_readdirname has already gone through
- unix_to_dos() */
-
- /* If it's a vetoed file, pretend it doesn't even exist */
- if (use_veto && conn && IS_VETO_PATH(conn, n)) continue;
+ Dir *dirp;
+ char *n;
+ DIR *p = conn->vfs_ops.opendir(conn,dos_to_unix_static(name));
+ int used=0;
+
+ if (!p)
+ return(NULL);
+ dirp = (Dir *)malloc(sizeof(Dir));
+ if (!dirp) {
+ DEBUG(0,("Out of memory in OpenDir\n"));
+ conn->vfs_ops.closedir(conn,p);
+ return(NULL);
+ }
- /* Honour _hide unreadable_ option */
- if (conn && lp_hideunreadable(SNUM(conn))) {
- char *entry;
- int ret=0;
+ dirp->pos = dirp->numentries = dirp->mallocsize = 0;
+ dirp->data = dirp->current = NULL;
+
+ while (True) {
+ int l;
+ BOOL normal_entry = True;
+
+ if (used == 0) {
+ n = ".";
+ normal_entry = False;
+ } else if (used == 2) {
+ n = "..";
+ normal_entry = False;
+ } else {
+ n = vfs_readdirname(conn, p);
+ if (n == NULL)
+ break;
+ if ((strcmp(".",n) == 0) ||(strcmp("..",n) == 0))
+ continue;
+ normal_entry = True;
+ }
+
+ l = strlen(n)+1;
+
+ /* Return value of vfs_readdirname has already gone through
+ unix_to_dos() */
+
+ /* If it's a vetoed file, pretend it doesn't even exist */
+ if (normal_entry && use_veto && conn && IS_VETO_PATH(conn, n))
+ continue;
+
+ /* Honour _hide unreadable_ option */
+ if (normal_entry && conn && lp_hideunreadable(SNUM(conn))) {
+ char *entry;
+ int ret=0;
- if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
- ret = user_can_read_file(conn, entry);
- SAFE_FREE(entry);
- }
- if (!ret) continue;
- }
-
- if (used + l > dirp->mallocsize) {
- int s = MAX(used+l,used+2000);
- char *r;
- r = (char *)Realloc(dirp->data,s);
- if (!r) {
- DEBUG(0,("Out of memory in OpenDir\n"));
- break;
- }
- dirp->data = r;
- dirp->mallocsize = s;
- dirp->current = dirp->data;
- }
- pstrcpy(dirp->data+used,n);
- used += l;
- dirp->numentries++;
- }
+ if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
+ ret = user_can_read_file(conn, entry);
+ SAFE_FREE(entry);
+ }
+ if (!ret)
+ continue;
+ }
+
+ if (used + l > dirp->mallocsize) {
+ int s = MAX(used+l,used+2000);
+ char *r;
+ r = (char *)Realloc(dirp->data,s);
+ if (!r) {
+ DEBUG(0,("Out of memory in OpenDir\n"));
+ break;
+ }
+ dirp->data = r;
+ dirp->mallocsize = s;
+ dirp->current = dirp->data;
+ }
+ pstrcpy(dirp->data+used,n);
+ used += l;
+ dirp->numentries++;
+ }
- conn->vfs_ops.closedir(conn,p);
- return((void *)dirp);
+ conn->vfs_ops.closedir(conn,p);
+ return((void *)dirp);
}
diff --git a/source/smbd/filename.c b/source/smbd/filename.c
index 90c3db1f9c7..51246dbc056 100644
--- a/source/smbd/filename.c
+++ b/source/smbd/filename.c
@@ -39,59 +39,29 @@ static BOOL scan_directory(char *path, char *name,connection_struct *conn,BOOL d
Check if two filenames are equal.
This needs to be careful about whether we are case sensitive.
****************************************************************************/
+
static BOOL fname_equal(char *name1, char *name2)
{
- int l1 = strlen(name1);
- int l2 = strlen(name2);
-
- /* handle filenames ending in a single dot */
- if (l1-l2 == 1 && name1[l1-1] == '.' && lp_strip_dot())
- {
- BOOL ret;
- name1[l1-1] = 0;
- ret = fname_equal(name1,name2);
- name1[l1-1] = '.';
- return(ret);
- }
-
- if (l2-l1 == 1 && name2[l2-1] == '.' && lp_strip_dot())
- {
- BOOL ret;
- name2[l2-1] = 0;
- ret = fname_equal(name1,name2);
- name2[l2-1] = '.';
- return(ret);
- }
-
- /* now normal filename handling */
- if (case_sensitive)
- return(strcmp(name1,name2) == 0);
-
- return(strequal(name1,name2));
-}
+ /* Normal filename handling */
+ if (case_sensitive)
+ return(strcmp(name1,name2) == 0);
+ return(strequal(name1,name2));
+}
/****************************************************************************
Mangle the 2nd name and check if it is then equal to the first name.
****************************************************************************/
-static BOOL mangled_equal(char *name1, char *name2, int snum)
-{
- pstring tmpname;
-
- if (is_8_3(name2, True))
- return(False);
- pstrcpy(tmpname,name2);
-#if 1
- mangle_name_83(tmpname);
-#else
- name_map_mangle(tmpname,True,False,snum);
-#endif
+static BOOL mangled_equal(char *name1, const char *name2, int snum)
+{
+ pstring tmpname;
- return(strequal(name1,tmpname));
+ pstrcpy(tmpname,name2);
+ mangle_map(tmpname,True,False,snum);
+ return strequal(name1,tmpname);
}
-
/****************************************************************************
This routine is called to convert names from the dos namespace to unix
namespace. It needs to handle any case conversions, mangling, format
@@ -122,413 +92,395 @@ for nlinks = 0, which can never be true for any file).
BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component,
BOOL *bad_path, SMB_STRUCT_STAT *pst)
{
- SMB_STRUCT_STAT st;
- char *start, *end;
- pstring dirpath;
- pstring orig_path;
- BOOL component_was_mangled = False;
- BOOL name_has_wildcard = False;
+ SMB_STRUCT_STAT st;
+ char *start, *end;
+ pstring dirpath;
+ pstring orig_path;
+ BOOL component_was_mangled = False;
+ BOOL name_has_wildcard = False;
#if 0
- /* Andrew's conservative code... JRA. */
- extern char magic_char;
+ /* Andrew's conservative code... JRA. */
+ extern char magic_char;
#endif
- ZERO_STRUCTP(pst);
-
- *dirpath = 0;
- *bad_path = False;
- if(saved_last_component)
- *saved_last_component = 0;
-
- if (conn->printer) {
- /* we don't ever use the filenames on a printer share as a
- filename - so don't convert them */
- return True;
- }
-
- DEBUG(5, ("unix_convert called on file \"%s\"\n", name));
-
- /*
- * Convert to basic unix format - removing \ chars and cleaning it up.
- */
-
- unix_format(name);
- unix_clean_name(name);
-
- /*
- * Names must be relative to the root of the service - trim any leading /.
- * also trim trailing /'s.
- */
-
- trim_string(name,"/","/");
-
- /*
- * If we trimmed down to a single '\0' character
- * then we should use the "." directory to avoid
- * searching the cache, but not if we are in a
- * printing share.
- */
-
- if (!*name) {
- name[0] = '.';
- name[1] = '\0';
- }
-
- /*
- * Ensure saved_last_component is valid even if file exists.
- */
-
- if(saved_last_component) {
- end = strrchr(name, '/');
- if(end)
- pstrcpy(saved_last_component, end + 1);
- else
- pstrcpy(saved_last_component, name);
- }
-
- if (!case_sensitive &&
- (!case_preserve || (is_8_3(name, False) && !short_case_preserve)))
- strnorm(name);
+ ZERO_STRUCTP(pst);
- /*
- * If we trimmed down to a single '\0' character
- * then we will be using the "." directory.
- * As we know this is valid we can return true here.
- */
+ *dirpath = 0;
+ *bad_path = False;
+ if(saved_last_component)
+ *saved_last_component = 0;
- if(!*name)
- return(True);
+ if (conn->printer) {
+ /* we don't ever use the filenames on a printer share as a
+ filename - so don't convert them */
+ return True;
+ }
- start = name;
- while (strncmp(start,"./",2) == 0)
- start += 2;
-
- pstrcpy(orig_path, name);
-
- if(stat_cache_lookup(conn, name, dirpath, &start, &st)) {
- *pst = st;
- return True;
- }
-
- /*
- * stat the name - if it exists then we are all done!
- */
-
- if (vfs_stat(conn,name,&st) == 0) {
- stat_cache_add(orig_path, name);
- DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
- *pst = st;
- return(True);
- }
-
- DEBUG(5,("unix_convert begin: name = %s, dirpath = %s, start = %s\n",
- name, dirpath, start));
-
- /*
- * A special case - if we don't have any mangling chars and are case
- * sensitive then searching won't help.
- */
-
- if (case_sensitive && !is_mangled(name) &&
- !lp_strip_dot() && !use_mangled_map)
- return(False);
-
- name_has_wildcard = ms_has_wild(start);
-
- /*
- * is_mangled() was changed to look at an entire pathname, not
- * just a component. JRA.
- */
-
- if(is_mangled(start))
- component_was_mangled = True;
-
-#if 0
- /* Keep Andrew's conservative code around, just in case. JRA. */
- /* this is an extremely conservative test for mangled names. */
- if (strchr(start,magic_char))
- component_was_mangled = True;
-#endif
-
- /*
- * Now we need to recursively match the name against the real
- * directory structure.
- */
-
- /*
- * Match each part of the path name separately, trying the names
- * as is first, then trying to scan the directory for matching names.
- */
-
- for (; start ; start = (end?end+1:(char *)NULL)) {
- /*
- * Pinpoint the end of this section of the filename.
- */
- end = strchr(start, '/');
-
- /*
- * Chop the name at this point.
- */
- if (end)
- *end = 0;
-
- if(saved_last_component != 0)
- pstrcpy(saved_last_component, end ? end + 1 : start);
-
- /*
- * Check if the name exists up to this point.
- */
-
- if (vfs_stat(conn,name, &st) == 0) {
- /*
- * It exists. it must either be a directory or this must be
- * the last part of the path for it to be OK.
- */
- if (end && !(st.st_mode & S_IFDIR)) {
- /*
- * An intermediate part of the name isn't a directory.
- */
- DEBUG(5,("Not a dir %s\n",start));
- *end = '/';
- return(False);
- }
-
- } else {
- pstring rest;
-
- /* Stat failed - ensure we don't use it. */
- ZERO_STRUCT(st);
- *rest = 0;
-
- /*
- * Remember the rest of the pathname so it can be restored
- * later.
- */
-
- if (end)
- pstrcpy(rest,end+1);
-
- /*
- * Try to find this part of the path in the directory.
- */
-
- if (ms_has_wild(start) || !scan_directory(dirpath, start, conn, end?True:False)) {
- if (end) {
- /*
- * An intermediate part of the name can't be found.
- */
- DEBUG(5,("Intermediate not found %s\n",start));
- *end = '/';
-
- /*
- * We need to return the fact that the intermediate
- * name resolution failed. This is used to return an
- * error of ERRbadpath rather than ERRbadfile. Some
- * Windows applications depend on the difference between
- * these two errors.
- */
- *bad_path = True;
- return(False);
- }
+ DEBUG(5, ("unix_convert called on file \"%s\"\n", name));
+
+ /*
+ * Convert to basic unix format - removing \ chars and cleaning it up.
+ */
+
+ unix_format(name);
+ unix_clean_name(name);
+
+ /*
+ * Names must be relative to the root of the service - trim any leading /.
+ * also trim trailing /'s.
+ */
+
+ trim_string(name,"/","/");
+
+ /*
+ * If we trimmed down to a single '\0' character
+ * then we should use the "." directory to avoid
+ * searching the cache, but not if we are in a
+ * printing share.
+ */
+
+ if (!*name) {
+ name[0] = '.';
+ name[1] = '\0';
+ }
+
+ /*
+ * Ensure saved_last_component is valid even if file exists.
+ */
+
+ if(saved_last_component) {
+ end = strrchr(name, '/');
+ if(end)
+ pstrcpy(saved_last_component, end + 1);
+ else
+ pstrcpy(saved_last_component, name);
+ }
+
+ if (!case_sensitive && (!case_preserve || (mangle_is_8_3(name, False) && !short_case_preserve)))
+ strnorm(name);
+
+ /*
+ * If we trimmed down to a single '\0' character
+ * then we will be using the "." directory.
+ * As we know this is valid we can return true here.
+ */
+
+ if(!*name)
+ return(True);
+
+ start = name;
+ while (strncmp(start,"./",2) == 0)
+ start += 2;
+
+ pstrcpy(orig_path, name);
+
+ if(stat_cache_lookup(conn, name, dirpath, &start, &st)) {
+ *pst = st;
+ return True;
+ }
+
+ /*
+ * stat the name - if it exists then we are all done!
+ */
+
+ if (vfs_stat(conn,name,&st) == 0) {
+ stat_cache_add(orig_path, name);
+ DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
+ *pst = st;
+ return(True);
+ }
+
+ DEBUG(5,("unix_convert begin: name = %s, dirpath = %s, start = %s\n", name, dirpath, start));
+
+ /*
+ * A special case - if we don't have any mangling chars and are case
+ * sensitive then searching won't help.
+ */
+
+ if (case_sensitive && !mangle_is_mangled(name) && !use_mangled_map)
+ return(False);
+
+ name_has_wildcard = ms_has_wild(start);
+
+ /*
+ * is_mangled() was changed to look at an entire pathname, not
+ * just a component. JRA.
+ */
+
+ if(mangle_is_mangled(start))
+ component_was_mangled = True;
+
+ /*
+ * Now we need to recursively match the name against the real
+ * directory structure.
+ */
+
+ /*
+ * Match each part of the path name separately, trying the names
+ * as is first, then trying to scan the directory for matching names.
+ */
+
+ for (; start ; start = (end?end+1:(char *)NULL)) {
+ /*
+ * Pinpoint the end of this section of the filename.
+ */
+ end = strchr(start, '/');
+
+ /*
+ * Chop the name at this point.
+ */
+ if (end)
+ *end = 0;
+
+ if(saved_last_component != 0)
+ pstrcpy(saved_last_component, end ? end + 1 : start);
+
+ /*
+ * Check if the name exists up to this point.
+ */
+
+ if (vfs_stat(conn,name, &st) == 0) {
+ /*
+ * It exists. it must either be a directory or this must be
+ * the last part of the path for it to be OK.
+ */
+ if (end && !(st.st_mode & S_IFDIR)) {
+ /*
+ * An intermediate part of the name isn't a directory.
+ */
+ DEBUG(5,("Not a dir %s\n",start));
+ *end = '/';
+ return(False);
+ }
+
+ } else {
+ pstring rest;
+
+ /* Stat failed - ensure we don't use it. */
+ ZERO_STRUCT(st);
+ *rest = 0;
+
+ /*
+ * Remember the rest of the pathname so it can be restored
+ * later.
+ */
+
+ if (end)
+ pstrcpy(rest,end+1);
+
+ /*
+ * Try to find this part of the path in the directory.
+ */
+
+ if (ms_has_wild(start) || !scan_directory(dirpath, start, conn, end?True:False)) {
+ if (end) {
+ /*
+ * An intermediate part of the name can't be found.
+ */
+ DEBUG(5,("Intermediate not found %s\n",start));
+ *end = '/';
+
+ /*
+ * We need to return the fact that the intermediate
+ * name resolution failed. This is used to return an
+ * error of ERRbadpath rather than ERRbadfile. Some
+ * Windows applications depend on the difference between
+ * these two errors.
+ */
+ *bad_path = True;
+ return(False);
+ }
- /*
- * Just the last part of the name doesn't exist.
- * We may need to strupper() or strlower() it in case
- * this conversion is being used for file creation
- * purposes. If the filename is of mixed case then
- * don't normalise it.
- */
-
- if (!case_preserve && (!strhasupper(start) || !strhaslower(start)))
- strnorm(start);
-
- /*
- * check on the mangled stack to see if we can recover the
- * base of the filename.
- */
-
- if (is_mangled(start)) {
- check_mangled_cache( start );
- }
-
- DEBUG(5,("New file %s\n",start));
- return(True);
- }
-
- /*
- * Restore the rest of the string. If the string was mangled the size
- * may have changed.
- */
- if (end) {
- end = start + strlen(start);
- pstrcat(start,"/");
- pstrcat(start,rest);
- *end = '\0';
- }
- } /* end else */
-
- /*
- * Add to the dirpath that we have resolved so far.
- */
- if (*dirpath)
- pstrcat(dirpath,"/");
-
- pstrcat(dirpath,start);
-
- /*
- * Don't cache a name with mangled or wildcard components
- * as this can change the size.
- */
-
- if(!component_was_mangled && !name_has_wildcard)
- stat_cache_add(orig_path, dirpath);
-
- /*
- * Restore the / that we wiped out earlier.
- */
- if (end)
- *end = '/';
- }
+ /*
+ * Just the last part of the name doesn't exist.
+ * We may need to strupper() or strlower() it in case
+ * this conversion is being used for file creation
+ * purposes. If the filename is of mixed case then
+ * don't normalise it.
+ */
+
+ if (!case_preserve && (!strhasupper(start) || !strhaslower(start)))
+ strnorm(start);
+
+ /*
+ * check on the mangled stack to see if we can recover the
+ * base of the filename.
+ */
+
+ if (mangle_is_mangled(start)) {
+ mangle_check_cache( start );
+ }
+
+ DEBUG(5,("New file %s\n",start));
+ return(True);
+ }
+
+ /*
+ * Restore the rest of the string. If the string was mangled the size
+ * may have changed.
+ */
+ if (end) {
+ end = start + strlen(start);
+ pstrcat(start,"/");
+ pstrcat(start,rest);
+ *end = '\0';
+ }
+ } /* end else */
+
+ /*
+ * Add to the dirpath that we have resolved so far.
+ */
+ if (*dirpath)
+ pstrcat(dirpath,"/");
+
+ pstrcat(dirpath,start);
+
+ /*
+ * Don't cache a name with mangled or wildcard components
+ * as this can change the size.
+ */
+
+ if(!component_was_mangled && !name_has_wildcard)
+ stat_cache_add(orig_path, dirpath);
+
+ /*
+ * Restore the / that we wiped out earlier.
+ */
+ if (end)
+ *end = '/';
+ }
- /*
- * Don't cache a name with mangled or wildcard components
- * as this can change the size.
- */
+ /*
+ * Don't cache a name with mangled or wildcard components
+ * as this can change the size.
+ */
- if(!component_was_mangled && !name_has_wildcard)
- stat_cache_add(orig_path, name);
+ if(!component_was_mangled && !name_has_wildcard)
+ stat_cache_add(orig_path, name);
- /*
- * If we ended up resolving the entire path then return a valid
- * stat struct if we got one.
- */
+ /*
+ * If we ended up resolving the entire path then return a valid
+ * stat struct if we got one.
+ */
- if (VALID_STAT(st) && (strlen(orig_path) == strlen(name)))
- *pst = st;
+ if (VALID_STAT(st) && (strlen(orig_path) == strlen(name)))
+ *pst = st;
- /*
- * The name has been resolved.
- */
+ /*
+ * The name has been resolved.
+ */
- DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
- return(True);
+ DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
+ return(True);
}
-
/****************************************************************************
-check a filename - possibly caling reducename
-
-This is called by every routine before it allows an operation on a filename.
-It does any final confirmation necessary to ensure that the filename is
-a valid one for the user to access.
+ Check a filename - possibly caling reducename.
+ This is called by every routine before it allows an operation on a filename.
+ It does any final confirmation necessary to ensure that the filename is
+ a valid one for the user to access.
****************************************************************************/
+
BOOL check_name(char *name,connection_struct *conn)
{
- BOOL ret;
+ BOOL ret;
- errno = 0;
+ errno = 0;
- if (IS_VETO_PATH(conn, name)) {
- DEBUG(5,("file path name %s vetoed\n",name));
- return(0);
- }
+ if(IS_VETO_PATH(conn, name)) {
+ if(strcmp(name, ".") && strcmp(name, "..")) {
+ DEBUG(5,("file path name %s vetoed\n",name));
+ return(0);
+ }
+ }
- ret = reduce_name(conn,name,conn->connectpath,lp_widelinks(SNUM(conn)));
+ ret = reduce_name(conn,name,conn->connectpath,lp_widelinks(SNUM(conn)));
- /* Check if we are allowing users to follow symlinks */
- /* Patch from David Clerc <David.Clerc@cui.unige.ch>
- University of Geneva */
+ /* Check if we are allowing users to follow symlinks */
+ /* Patch from David Clerc <David.Clerc@cui.unige.ch>
+ University of Geneva */
#ifdef S_ISLNK
- if (!lp_symlinks(SNUM(conn))) {
- SMB_STRUCT_STAT statbuf;
- if ( (conn->vfs_ops.lstat(conn,dos_to_unix_static(name),&statbuf) != -1) &&
- (S_ISLNK(statbuf.st_mode)) ) {
- DEBUG(3,("check_name: denied: file path name %s is a symlink\n",name));
- ret=0;
- }
- }
+ if (!lp_symlinks(SNUM(conn))) {
+ SMB_STRUCT_STAT statbuf;
+ if ( (conn->vfs_ops.lstat(conn,dos_to_unix_static(name),&statbuf) != -1) &&
+ (S_ISLNK(statbuf.st_mode)) ) {
+ DEBUG(3,("check_name: denied: file path name %s is a symlink\n",name));
+ ret=0;
+ }
+ }
#endif
- if (!ret)
- DEBUG(5,("check_name on %s failed\n",name));
+ if (!ret)
+ DEBUG(5,("check_name on %s failed\n",name));
- return(ret);
+ return(ret);
}
-
/****************************************************************************
-scan a directory to find a filename, matching without case sensitivity
-
-If the name looks like a mangled name then try via the mangling functions
+ Scan a directory to find a filename, matching without case sensitivity.
+ If the name looks like a mangled name then try via the mangling functions
****************************************************************************/
+
static BOOL scan_directory(char *path, char *name,connection_struct *conn,BOOL docache)
{
- void *cur_dir;
- char *dname;
- BOOL mangled;
- pstring name2;
-
- mangled = is_mangled(name);
-
- /* handle null paths */
- if (*path == 0)
- path = ".";
-
- if (docache && (dname = DirCacheCheck(path,name,SNUM(conn)))) {
- pstrcpy(name, dname);
- return(True);
- }
-
- /*
- * The incoming name can be mangled, and if we de-mangle it
- * here it will not compare correctly against the filename (name2)
- * read from the directory and then mangled by the name_map_mangle()
- * call. We need to mangle both names or neither.
- * (JRA).
- */
- if (mangled)
- mangled = !check_mangled_cache( name );
-
- /* open the directory */
- if (!(cur_dir = OpenDir(conn, path, True))) {
- DEBUG(3,("scan dir didn't open dir [%s]\n",path));
- return(False);
- }
-
- /* now scan for matching names */
- while ((dname = ReadDirName(cur_dir))) {
- if (*dname == '.' && (strequal(dname,".") || strequal(dname,"..")))
- continue;
-
- /*
- * dname here is the unmangled name.
- */
- pstrcpy(name2,dname);
- if (!name_map_mangle(name2,False,True,SNUM(conn)))
- continue;
-
- /*
- * At this point name2 is the mangled name, dname is the unmangled name.
- * name is either mangled or not, depending on the state of the "mangled"
- * variable. JRA.
- */
-
- /*
- * Check mangled name against mangled name, or unmangled name
- * against unmangled name.
- */
-
- if ((mangled && mangled_equal(name,name2,SNUM(conn))) || fname_equal(name, dname)) {
- /* we've found the file, change it's name and return */
- if (docache)
- DirCacheAdd(path,name,dname,SNUM(conn));
- pstrcpy(name, dname);
- CloseDir(cur_dir);
- return(True);
- }
- }
-
- CloseDir(cur_dir);
- return(False);
+ void *cur_dir;
+ char *dname;
+ BOOL mangled;
+
+ mangled = mangle_is_mangled(name);
+
+ /* handle null paths */
+ if (*path == 0)
+ path = ".";
+
+ if (docache && (dname = DirCacheCheck(path,name,SNUM(conn)))) {
+ pstrcpy(name, dname);
+ return(True);
+ }
+
+ /*
+ * The incoming name can be mangled, and if we de-mangle it
+ * here it will not compare correctly against the filename (name2)
+ * read from the directory and then mangled by the name_map_mangle()
+ * call. We need to mangle both names or neither.
+ * (JRA).
+ */
+ if (mangled)
+ mangled = !mangle_check_cache( name );
+
+ /* open the directory */
+ if (!(cur_dir = OpenDir(conn, path, True))) {
+ DEBUG(3,("scan dir didn't open dir [%s]\n",path));
+ return(False);
+ }
+
+ /* now scan for matching names */
+ while ((dname = ReadDirName(cur_dir))) {
+ if (*dname == '.' && (strequal(dname,".") || strequal(dname,"..")))
+ continue;
+
+ /*
+ * At this point dname is the unmangled name.
+ * name is either mangled or not, depending on the state of the "mangled"
+ * variable. JRA.
+ */
+
+ /*
+ * Check mangled name against mangled name, or unmangled name
+ * against unmangled name.
+ */
+
+ if ((mangled && mangled_equal(name,dname,SNUM(conn))) || fname_equal(name, dname)) {
+ /* we've found the file, change it's name and return */
+ if (docache)
+ DirCacheAdd(path,name,dname,SNUM(conn));
+ pstrcpy(name, dname);
+ CloseDir(cur_dir);
+ return(True);
+ }
+ }
+
+ CloseDir(cur_dir);
+ return(False);
}
diff --git a/source/smbd/mangle.c b/source/smbd/mangle.c
index ee1f24931a5..4b8132a7ebe 100644
--- a/source/smbd/mangle.c
+++ b/source/smbd/mangle.c
@@ -1,8 +1,7 @@
/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Name mangling
- Copyright (C) Andrew Tridgell 1992-1998
+ Unix SMB/CIFS implementation.
+ Name mangling interface
+ Copyright (C) Andrew Tridgell 2002
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
@@ -19,1014 +18,106 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* -------------------------------------------------------------------------- **
- * Notable problems...
- *
- * March/April 1998 CRH
- * - Many of the functions in this module overwrite string buffers passed to
- * them. This causes a variety of problems and is, generally speaking,
- * dangerous and scarry. See the kludge notes in name_map_mangle()
- * below.
- * - It seems that something is calling name_map_mangle() twice. The
- * first call is probably some sort of test. Names which contain
- * illegal characters are being doubly mangled. I'm not sure, but
- * I'm guessing the problem is in server.c.
- *
- * -------------------------------------------------------------------------- **
- */
-
-/* -------------------------------------------------------------------------- **
- * History...
- *
- * March/April 1998 CRH
- * Updated a bit. Rewrote is_mangled() to be a bit more selective.
- * Rewrote the mangled name cache. Added comments here and there.
- * &c.
- * -------------------------------------------------------------------------- **
- */
-
#include "includes.h"
+static struct mangle_fns *mangle_fns;
-/* -------------------------------------------------------------------------- **
- * External Variables...
- */
-
-extern int case_default; /* Are conforming 8.3 names all upper or lower? */
-extern BOOL case_mangle; /* If true, all chars in 8.3 should be same case. */
-
-/* -------------------------------------------------------------------------- **
- * Other stuff...
- *
- * magic_char - This is the magic char used for mangling. It's
- * global. There is a call to lp_magicchar() in server.c
- * that is used to override the initial value.
- *
- * MANGLE_BASE - This is the number of characters we use for name mangling.
- *
- * basechars - The set characters used for name mangling. This
- * is static (scope is this file only).
- *
- * mangle() - Macro used to select a character from basechars (i.e.,
- * mangle(n) will return the nth digit, modulo MANGLE_BASE).
- *
- * chartest - array 0..255. The index range is the set of all possible
- * values of a byte. For each byte value, the content is a
- * two nibble pair. See BASECHAR_MASK and ILLEGAL_MASK,
- * below.
- *
- * ct_initialized - False until the chartest array has been initialized via
- * a call to init_chartest().
- *
- * BASECHAR_MASK - Masks the upper nibble of a one-byte value.
- *
- * ILLEGAL_MASK - Masks the lower nibble of a one-byte value.
- *
- * isbasecahr() - Given a character, check the chartest array to see
- * if that character is in the basechars set. This is
- * faster than using strchr().
- *
- * isillegal() - Given a character, check the chartest array to see
- * if that character is in the illegal characters set.
- * This is faster than using strchr().
- *
- * mangled_cache - Cache header used for storing mangled -> original
- * reverse maps.
- *
- * mc_initialized - False until the mangled_cache structure has been
- * initialized via a call to reset_mangled_cache().
- *
- * MANGLED_CACHE_MAX_ENTRIES - Default maximum number of entries for the
- * cache. A value of 0 indicates "infinite".
- *
- * MANGLED_CACHE_MAX_MEMORY - Default maximum amount of memory for the
- * cache. When the cache was kept as an array of 256
- * byte strings, the default cache size was 50 entries.
- * This required a fixed 12.5Kbytes of memory. The
- * mangled stack parameter is no longer used (though
- * this might change). We're now using a fixed 16Kbyte
- * maximum cache size. This will probably be much more
- * than 50 entries.
- */
-
-char magic_char = '~';
-
-static char basechars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
-#define MANGLE_BASE (sizeof(basechars)/sizeof(char)-1)
-
-static unsigned char chartest[256] = { 0 };
-static BOOL ct_initialized = False;
-
-#define mangle(V) ((char)(basechars[(V) % MANGLE_BASE]))
-#define BASECHAR_MASK 0xf0
-#define ILLEGAL_MASK 0x0f
-#define isbasechar(C) ( (chartest[ ((C) & 0xff) ]) & BASECHAR_MASK )
-#define isillegal(C) ( (chartest[ ((C) & 0xff) ]) & ILLEGAL_MASK )
-
-static ubi_cacheRoot mangled_cache[1] = { { { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0 } };
-static BOOL mc_initialized = False;
-#define MANGLED_CACHE_MAX_ENTRIES 1024
-#define MANGLED_CACHE_MAX_MEMORY 0
-
-
-/* -------------------------------------------------------------------------- **
- * Functions...
- */
-
-/* ************************************************************************** **
- * Initialize the static character test array.
- *
- * Input: none
- *
- * Output: none
- *
- * Notes: This function changes (loads) the contents of the <chartest>
- * array. The scope of <chartest> is this file.
- *
- * ************************************************************************** **
- */
-static void init_chartest( void )
- {
- char *illegalchars = "*\\/?<>|\":";
- unsigned char *s;
-
- memset( (char *)chartest, '\0', 256 );
-
- for( s = (unsigned char *)illegalchars; *s; s++ )
- chartest[*s] = ILLEGAL_MASK;
-
- for( s = (unsigned char *)basechars; *s; s++ )
- chartest[*s] |= BASECHAR_MASK;
-
- ct_initialized = True;
- } /* init_chartest */
-
-/* ************************************************************************** **
- * Return True if a name is a special msdos reserved name.
- *
- * Input: fname - String containing the name to be tested.
- *
- * Output: True, if the name matches one of the list of reserved names.
- *
- * Notes: This is a static function called by is_8_3(), below.
- *
- * ************************************************************************** **
- */
-static BOOL is_reserved_msdos( char *fname )
- {
- char upperFname[13];
- char *p;
-
- StrnCpy (upperFname, fname, 12);
-
- /* lpt1.txt and con.txt etc are also illegal */
- p = strchr(upperFname,'.');
- if( p )
- *p = '\0';
-
- strupper( upperFname );
- p = upperFname + 1;
- switch( upperFname[0] )
- {
- case 'A':
- if( 0 == strcmp( p, "UX" ) )
- return( True );
- break;
- case 'C':
- if( (0 == strcmp( p, "LOCK$" ))
- || (0 == strcmp( p, "ON" ))
- || (0 == strcmp( p, "OM1" ))
- || (0 == strcmp( p, "OM2" ))
- || (0 == strcmp( p, "OM3" ))
- || (0 == strcmp( p, "OM4" ))
- )
- return( True );
- break;
- case 'L':
- if( (0 == strcmp( p, "PT1" ))
- || (0 == strcmp( p, "PT2" ))
- || (0 == strcmp( p, "PT3" ))
- )
- return( True );
- break;
- case 'N':
- if( 0 == strcmp( p, "UL" ) )
- return( True );
- break;
- case 'P':
- if( 0 == strcmp( p, "RN" ) )
- return( True );
- break;
- }
-
- return( False );
- } /* is_reserved_msdos */
-
-/* ************************************************************************** **
- * Determine whether or not a given name contains illegal characters, even
- * long names.
- *
- * Input: name - The name to be tested.
- *
- * Output: True if an illegal character was found in <name>, else False.
- *
- * Notes: This is used to test a name on the host system, long or short,
- * for characters that would be illegal on most client systems,
- * particularly DOS and Windows systems. Unix and AmigaOS, for
- * example, allow a filenames which contain such oddities as
- * quotes ("). If a name is found which does contain an illegal
- * character, it is mangled even if it conforms to the 8.3
- * format.
- *
- * ************************************************************************** **
- */
-static BOOL is_illegal_name( char *name )
- {
- unsigned char *s;
- int skip;
-
- if( !name )
- return( True );
-
- if( !ct_initialized )
- init_chartest();
-
- s = (unsigned char *)name;
- while( *s )
- {
- skip = get_character_len( *s );
- if( skip != 0 )
- {
- s += skip;
- }
- else
- {
- if( isillegal( *s ) )
- return( True );
- else
- s++;
- }
- }
+/* this allows us to add more mangling backends */
+static struct {
+ char *name;
+ struct mangle_fns *(*init_fn)(void);
+} mangle_backends[] = {
+ { "hash", mangle_hash_init },
+ { "hash2", mangle_hash2_init },
+ { NULL, NULL }
+};
- return( False );
- } /* is_illegal_name */
-
-/* ************************************************************************** **
- * Return True if the name *could be* a mangled name.
- *
- * Input: s - A path name - in UNIX pathname format.
- *
- * Output: True if the name matches the pattern described below in the
- * notes, else False.
- *
- * Notes: The input name is *not* tested for 8.3 compliance. This must be
- * done separately. This function returns true if the name contains
- * a magic character followed by excactly two characters from the
- * basechars list (above), which in turn are followed either by the
- * nul (end of string) byte or a dot (extension) or by a '/' (end of
- * a directory name).
- *
- * ************************************************************************** **
- */
-BOOL is_mangled( char *s )
+/*
+ initialise the mangling subsystem
+*/
+static void mangle_init(void)
{
- char *magic;
- BOOL ret = False;
-
- if( !ct_initialized )
- init_chartest();
-
- magic = strchr( s, magic_char );
- while( magic && magic[1] && magic[2] ) {
- /* 3 chars, 1st is magic. */
- if( ('.' == magic[3] || '/' == magic[3] || !(magic[3])) /* Ends with '.' or nul or '/' ? */
- && isbasechar( toupper(magic[1]) ) /* is 2nd char basechar? */
- && isbasechar( toupper(magic[2]) ) ) /* is 3rd char basechar? */
- ret = ( True ); /* If all above, then true, */
- magic = strchr( magic+1, magic_char ); /* else seek next magic. */
- }
-
- DEBUG(10,("is_mangled: %s : %s\n", s, ret ? "True" : "False"));
-
- return ret;
-} /* is_mangled */
-
-/* ************************************************************************** **
- * Return True if the name is a valid DOS name in 8.3 DOS format.
- *
- * Input: fname - File name to be checked.
- * check_case - If True, and if case_mangle is True, then the
- * name will be checked to see if all characters
- * are the correct case. See case_mangle and
- * case_default above.
- *
- * Output: True if the name is a valid DOS name, else False.
- *
- * ************************************************************************** **
- */
-BOOL is_8_3( char *fname, BOOL check_case )
- {
- int len;
- int l;
- int skip;
- char *p;
- char *dot_pos;
- char *slash_pos = strrchr( fname, '/' );
-
- /* If there is a directory path, skip it. */
- if( slash_pos )
- fname = slash_pos + 1;
- len = strlen( fname );
-
- DEBUG( 5, ( "Checking %s for 8.3\n", fname ) );
-
- /* Can't be 0 chars or longer than 12 chars */
- if( (len == 0) || (len > 12) )
- return( False );
-
- /* Mustn't be an MS-DOS Special file such as lpt1 or even lpt1.txt */
- if( is_reserved_msdos( fname ) )
- return( False );
-
- /* Check that all characters are the correct case, if asked to do so. */
- if( check_case && case_mangle )
- {
- switch( case_default )
- {
- case CASE_LOWER:
- if( strhasupper( fname ) )
- return(False);
- break;
- case CASE_UPPER:
- if( strhaslower( fname ) )
- return(False);
- break;
- }
- }
-
- /* Can't contain invalid dos chars */
- /* Windows use the ANSI charset.
- But filenames are translated in the PC charset.
- This Translation may be more or less relaxed depending
- the Windows application. */
-
- /* %%% A nice improvment to name mangling would be to translate
- filename to ANSI charset on the smb server host */
-
- p = fname;
- dot_pos = NULL;
- while( *p )
- {
- if( (skip = get_character_len( *p )) != 0 )
- p += skip;
- else
- {
- if( *p == '.' && !dot_pos )
- dot_pos = (char *)p;
- else
- if( !isdoschar( *p ) )
- return( False );
- p++;
- }
- }
-
- /* no dot and less than 9 means OK */
- if( !dot_pos )
- return( len <= 8 );
-
- l = PTR_DIFF( dot_pos, fname );
-
- /* base must be at least 1 char except special cases . and .. */
- if( l == 0 )
- return( 0 == strcmp( fname, "." ) || 0 == strcmp( fname, ".." ) );
-
- /* base can't be greater than 8 */
- if( l > 8 )
- return( False );
-
- /* see smb.conf(5) for a description of the 'strip dot' parameter. */
- if( lp_strip_dot()
- && len - l == 1
- && !strchr( dot_pos + 1, '.' ) )
- {
- *dot_pos = 0;
- return( True );
- }
-
- /* extension must be between 1 and 3 */
- if( (len - l < 2 ) || (len - l > 4) )
- return( False );
-
- /* extensions may not have a dot */
- if( strchr( dot_pos+1, '.' ) )
- return( False );
-
- /* must be in 8.3 format */
- return( True );
- } /* is_8_3 */
-
-
-/* ************************************************************************** **
- * Compare two cache keys and return a value indicating their ordinal
- * relationship.
- *
- * Input: ItemPtr - Pointer to a comparison key. In this case, this will
- * be a mangled name string.
- * NodePtr - Pointer to a node in the cache. The node structure
- * will be followed in memory by a mangled name string.
- *
- * Output: A signed integer, as follows:
- * (x < 0) <==> Key1 less than Key2
- * (x == 0) <==> Key1 equals Key2
- * (x > 0) <==> Key1 greater than Key2
- *
- * Notes: This is a ubiqx-style comparison routine. See ubi_BinTree for
- * more info.
- *
- * ************************************************************************** **
- */
-static signed int cache_compare( ubi_btItemPtr ItemPtr, ubi_btNodePtr NodePtr )
- {
- char *Key1 = (char *)ItemPtr;
- char *Key2 = (char *)(((ubi_cacheEntryPtr)NodePtr) + 1);
-
- DEBUG(100,("cache_compare: %s %s\n", Key1, Key2));
-
- return( StrCaseCmp( Key1, Key2 ) );
- } /* cache_compare */
-
-/* ************************************************************************** **
- * Free a cache entry.
- *
- * Input: WarrenZevon - Pointer to the entry that is to be returned to
- * Nirvana.
- * Output: none.
- *
- * Notes: This function gets around the possibility that the standard
- * free() function may be implemented as a macro, or other evil
- * subversions (oh, so much fun).
- *
- * ************************************************************************** **
- */
-static void cache_free_entry( ubi_trNodePtr WarrenZevon )
- {
- ZERO_STRUCTP(WarrenZevon);
- SAFE_FREE( WarrenZevon );
- } /* cache_free_entry */
+ int i;
+ char *method;
-/* ************************************************************************** **
- * Initializes or clears the mangled cache.
- *
- * Input: none.
- * Output: none.
- *
- * Notes: There is a section below that is commented out. It shows how
- * one might use lp_ calls to set the maximum memory and entry size
- * of the cache. You might also want to remove the constants used
- * in ubi_cacheInit() and replace them with lp_ calls. If so, then
- * the calls to ubi_cacheSetMax*() would be moved into the else
- * clause. Another option would be to pass in the max_entries and
- * max_memory values as parameters. crh 09-Apr-1998.
- *
- * ************************************************************************** **
- */
-void reset_mangled_cache( void )
- {
- if( !mc_initialized )
- {
- (void)ubi_cacheInit( mangled_cache,
- cache_compare,
- cache_free_entry,
- MANGLED_CACHE_MAX_ENTRIES,
- MANGLED_CACHE_MAX_MEMORY );
- mc_initialized = True;
- }
- else
- {
- (void)ubi_cacheClear( mangled_cache );
- }
-
- /*
- (void)ubi_cacheSetMaxEntries( mangled_cache, lp_mangled_cache_entries() );
- (void)ubi_cacheSetMaxMemory( mangled_cache, lp_mangled_cache_memory() );
- */
- } /* reset_mangled_cache */
-
-
-/* ************************************************************************** **
- * Add a mangled name into the cache.
- *
- * Notes: If the mangled cache has not been initialized, then the
- * function will simply fail. It could initialize the cache,
- * but that's not the way it was done before I changed the
- * cache mechanism, so I'm sticking with the old method.
- *
- * If the extension of the raw name maps directly to the
- * extension of the mangled name, then we'll store both names
- * *without* extensions. That way, we can provide consistent
- * reverse mangling for all names that match. The test here is
- * a bit more careful than the one done in earlier versions of
- * mangle.c:
- *
- * - the extension must exist on the raw name,
- * - it must be all lower case
- * - it must match the mangled extension (to prove that no
- * mangling occurred).
- *
- * crh 07-Apr-1998
- *
- * ************************************************************************** **
- */
-static void cache_mangled_name( char *mangled_name, char *raw_name )
- {
- ubi_cacheEntryPtr new_entry;
- char *s1;
- char *s2;
- size_t mangled_len;
- size_t raw_len;
- size_t i;
-
- /* If the cache isn't initialized, give up. */
- if( !mc_initialized )
- return;
+ if (mangle_fns)
+ return;
- /* Init the string lengths. */
- mangled_len = strlen( mangled_name );
- raw_len = strlen( raw_name );
+ method = lp_mangling_method();
- /* See if the extensions are unmangled. If so, store the entry
- * without the extension, thus creating a "group" reverse map.
- */
- s1 = strrchr( mangled_name, '.' );
- if( s1 && (s2 = strrchr( raw_name, '.' )) )
- {
- i = 1;
- while( s1[i] && (tolower( s1[i] ) == s2[i]) )
- i++;
- if( !s1[i] && !s2[i] )
- {
- mangled_len -= i;
- raw_len -= i;
- }
- }
-
- /* Allocate a new cache entry. If the allocation fails, just return. */
- i = sizeof( ubi_cacheEntry ) + mangled_len + raw_len + 2;
- new_entry = malloc( i );
- if( !new_entry )
- return;
+ /* find the first mangling method that manages to initialise and
+ matches the "mangling method" parameter */
+ for (i=0; mangle_backends[i].name && !mangle_fns; i++) {
+ if (!method || !*method || strcmp(method, mangle_backends[i].name) == 0) {
+ mangle_fns = mangle_backends[i].init_fn();
+ }
+ }
- /* Fill the new cache entry, and add it to the cache. */
- s1 = (char *)(new_entry + 1);
- s2 = (char *)&(s1[mangled_len + 1]);
- (void)StrnCpy( s1, mangled_name, mangled_len );
- (void)StrnCpy( s2, raw_name, raw_len );
- ubi_cachePut( mangled_cache, i, new_entry, s1 );
- } /* cache_mangled_name */
+ if (!mangle_fns) {
+ DEBUG(0,("Failed to initialise mangling system '%s'\n", method));
+ exit_server("mangling init failed");
+ }
+}
-/* ************************************************************************** **
- * Check for a name on the mangled name stack
- *
- * Input: s - Input *and* output string buffer.
- *
- * Output: True if the name was found in the cache, else False.
- *
- * Notes: If a reverse map is found, the function will overwrite the string
- * space indicated by the input pointer <s>. This is frightening.
- * It should be rewritten to return NULL if the long name was not
- * found, and a pointer to the long name if it was found.
- *
- * ************************************************************************** **
- */
-BOOL check_mangled_cache( char *s )
+/*
+ reset the cache. This is called when smb.conf has been reloaded
+*/
+void mangle_reset_cache(void)
{
- ubi_cacheEntryPtr FoundPtr;
- char *ext_start = NULL;
- char *found_name;
- char *saved_ext = NULL;
-
- /* If the cache isn't initialized, give up. */
- if( !mc_initialized )
- return( False );
-
- FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
-
- /* If we didn't find the name *with* the extension, try without. */
- if( !FoundPtr )
- {
- ext_start = strrchr( s, '.' );
- if( ext_start )
- {
- if((saved_ext = strdup(ext_start)) == NULL)
- return False;
-
- *ext_start = '\0';
- FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
- /*
- * At this point s is the name without the
- * extension. We re-add the extension if saved_ext
- * is not null, before freeing saved_ext.
- */
- }
- }
+ mangle_init();
- /* Okay, if we haven't found it we're done. */
- if( !FoundPtr )
- {
- if(saved_ext)
- {
- /* Replace the saved_ext as it was truncated. */
- (void)pstrcat( s, saved_ext );
- SAFE_FREE(saved_ext);
- }
- return( False );
- }
-
- /* If we *did* find it, we need to copy it into the string buffer. */
- found_name = (char *)(FoundPtr + 1);
- found_name += (strlen( found_name ) + 1);
-
- DEBUG( 3, ("Found %s on mangled stack ", s) );
-
- (void)pstrcpy( s, found_name );
- if( saved_ext )
- {
- /* Replace the saved_ext as it was truncated. */
- (void)pstrcat( s, saved_ext );
- SAFE_FREE(saved_ext);
- }
-
- DEBUG( 3, ("as %s\n", s) );
-
- return( True );
-} /* check_mangled_cache */
-
-
-/* ************************************************************************** **
- * Used only in do_fwd_mangled_map(), below.
- * ************************************************************************** **
- */
-static char *map_filename( char *s, /* This is null terminated */
- char *pattern, /* This isn't. */
- int len ) /* This is the length of pattern. */
- {
- static pstring matching_bit; /* The bit of the string which matches */
- /* a * in pattern if indeed there is a * */
- char *sp; /* Pointer into s. */
- char *pp; /* Pointer into p. */
- char *match_start; /* Where the matching bit starts. */
- pstring pat;
-
- StrnCpy( pat, pattern, len ); /* Get pattern into a proper string! */
- pstrcpy( matching_bit, "" ); /* Match but no star gets this. */
- pp = pat; /* Initialize the pointers. */
- sp = s;
-
- if( strequal(s, ".") || strequal(s, ".."))
- {
- return NULL; /* Do not map '.' and '..' */
- }
-
- if( (len == 1) && (*pattern == '*') )
- {
- return NULL; /* Impossible, too ambiguous for */
- } /* words! */
-
- while( (*sp) /* Not the end of the string. */
- && (*pp) /* Not the end of the pattern. */
- && (*sp == *pp) /* The two match. */
- && (*pp != '*') ) /* No wildcard. */
- {
- sp++; /* Keep looking. */
- pp++;
- }
-
- if( !*sp && !*pp ) /* End of pattern. */
- return( matching_bit ); /* Simple match. Return empty string. */
-
- if( *pp == '*' )
- {
- pp++; /* Always interrested in the chacter */
- /* after the '*' */
- if( !*pp ) /* It is at the end of the pattern. */
- {
- StrnCpy( matching_bit, s, sp-s );
- return( matching_bit );
- }
- else
- {
- /* The next character in pattern must match a character further */
- /* along s than sp so look for that character. */
- match_start = sp;
- while( (*sp) /* Not the end of s. */
- && (*sp != *pp) ) /* Not the same */
- sp++; /* Keep looking. */
- if( !*sp ) /* Got to the end without a match. */
- {
- return( NULL );
- } /* Still hope for a match. */
- else
- {
- /* Now sp should point to a matching character. */
- StrnCpy(matching_bit, match_start, sp-match_start);
- /* Back to needing a stright match again. */
- while( (*sp) /* Not the end of the string. */
- && (*pp) /* Not the end of the pattern. */
- && (*sp == *pp) ) /* The two match. */
- {
- sp++; /* Keep looking. */
- pp++;
- }
- if( !*sp && !*pp ) /* Both at end so it matched */
- return( matching_bit );
- else
- return( NULL );
- }
- }
- }
- return( NULL ); /* No match. */
- } /* map_filename */
+ mangle_fns->reset();
+}
+/*
+ see if a filename has come out of our mangling code
+*/
+BOOL mangle_is_mangled(const char *s)
+{
+ return mangle_fns->is_mangled(s);
+}
-/* ************************************************************************** **
- * MangledMap is a series of name pairs in () separated by spaces.
- * If s matches the first of the pair then the name given is the
- * second of the pair. A * means any number of any character and if
- * present in the second of the pair as well as the first the
- * matching part of the first string takes the place of the * in the
- * second.
- *
- * I wanted this so that we could have RCS files which can be used
- * by UNIX and DOS programs. My mapping string is (RCS rcs) which
- * converts the UNIX RCS file subdirectory to lowercase thus
- * preventing mangling.
- *
- * (I think Andrew wrote the above, but I'm not sure. -- CRH)
- *
- * See 'mangled map' in smb.conf(5).
- *
- * ************************************************************************** **
- */
-static void do_fwd_mangled_map(char *s, char *MangledMap)
- {
- char *start=MangledMap; /* Use this to search for mappings. */
- char *end; /* Used to find the end of strings. */
- char *match_string;
- pstring new_string; /* Make up the result here. */
- char *np; /* Points into new_string. */
+/*
+ see if a filename matches the rules of a 8.3 filename
+*/
+BOOL mangle_is_8_3(const char *fname, BOOL check_case)
+{
+ return mangle_fns->is_8_3(fname, check_case, False);
+}
- DEBUG( 5, ("Mangled Mapping '%s' map '%s'\n", s, MangledMap) );
- while( *start )
- {
- while( (*start) && (*start != '(') )
- start++;
- if( !*start )
- continue; /* Always check for the end. */
- start++; /* Skip the ( */
- end = start; /* Search for the ' ' or a ')' */
- DEBUG( 5, ("Start of first in pair '%s'\n", start) );
- while( (*end) && !((*end == ' ') || (*end == ')')) )
- end++;
- if( !*end )
- {
- start = end;
- continue; /* Always check for the end. */
- }
- DEBUG( 5, ("End of first in pair '%s'\n", end) );
- if( (match_string = map_filename( s, start, end-start )) )
- {
- DEBUG( 5, ("Found a match\n") );
- /* Found a match. */
- start = end + 1; /* Point to start of what it is to become. */
- DEBUG( 5, ("Start of second in pair '%s'\n", start) );
- end = start;
- np = new_string;
- while( (*end) /* Not the end of string. */
- && (*end != ')') /* Not the end of the pattern. */
- && (*end != '*') ) /* Not a wildcard. */
- *np++ = *end++;
- if( !*end )
- {
- start = end;
- continue; /* Always check for the end. */
- }
- if( *end == '*' )
- {
- pstrcpy( np, match_string );
- np += strlen( match_string );
- end++; /* Skip the '*' */
- while( (*end) /* Not the end of string. */
- && (*end != ')') /* Not the end of the pattern. */
- && (*end != '*') ) /* Not a wildcard. */
- *np++ = *end++;
- }
- if( !*end )
- {
- start = end;
- continue; /* Always check for the end. */
- }
- *np++ = '\0'; /* NULL terminate it. */
- DEBUG(5,("End of second in pair '%s'\n", end));
- pstrcpy( s, new_string ); /* Substitute with the new name. */
- DEBUG( 5, ("s is now '%s'\n", s) );
- }
- start = end; /* Skip a bit which cannot be wanted anymore. */
- start++;
- }
- } /* do_fwd_mangled_map */
+BOOL mangle_is_8_3_wildcards(const char *fname, BOOL check_case)
+{
+ return mangle_fns->is_8_3(fname, check_case, True);
+}
+
+/*
+ try to reverse map a 8.3 name to the original filename. This doesn't have to
+ always succeed, as the directory handling code in smbd will scan the directory
+ looking for a matching name if it doesn't. It should succeed most of the time
+ or there will be a huge performance penalty
+*/
+BOOL mangle_check_cache(char *s)
+{
+ return mangle_fns->check_cache(s);
+}
-/*****************************************************************************
- * do the actual mangling to 8.3 format
- * the buffer must be able to hold 13 characters (including the null)
- *****************************************************************************
+/*
+ map a long filename to a 8.3 name.
*/
-void mangle_name_83( char *s)
- {
- int csum;
- char *p;
- char extension[4];
- char base[9];
- int baselen = 0;
- int extlen = 0;
- int skip;
-
- extension[0] = 0;
- base[0] = 0;
-
- p = strrchr(s,'.');
- if( p && (strlen(p+1) < (size_t)4) )
- {
- BOOL all_normal = ( strisnormal(p+1) ); /* XXXXXXXXX */
-
- if( all_normal && p[1] != 0 )
- {
- *p = 0;
- csum = str_checksum( s );
- *p = '.';
- }
- else
- csum = str_checksum(s);
- }
- else
- csum = str_checksum(s);
-
- strupper( s );
-
- DEBUG( 5, ("Mangling name %s to ",s) );
-
- if( p )
- {
- if( p == s )
- safe_strcpy( extension, "___", 3 );
- else
- {
- *p++ = 0;
- while( *p && extlen < 3 )
- {
- skip = get_character_len( *p );
- switch( skip )
- {
- case 2:
- if( extlen < 2 )
- {
- extension[extlen++] = p[0];
- extension[extlen++] = p[1];
- }
- else
- {
- extension[extlen++] = mangle( (unsigned char)*p );
- }
- p += 2;
- break;
- case 1:
- extension[extlen++] = p[0];
- p++;
- break;
- default:
- if( isdoschar (*p) && *p != '.' )
- extension[extlen++] = p[0];
- p++;
- break;
- }
- }
- extension[extlen] = 0;
- }
- }
-
- p = s;
-
- while( *p && baselen < 5 )
- {
- skip = get_character_len(*p);
- switch( skip )
- {
- case 2:
- if( baselen < 4 )
- {
- base[baselen++] = p[0];
- base[baselen++] = p[1];
- }
- else
- {
- base[baselen++] = mangle( (unsigned char)*p );
- }
- p += 2;
- break;
- case 1:
- base[baselen++] = p[0];
- p++;
- break;
- default:
- if( isdoschar( *p ) && *p != '.' )
- base[baselen++] = p[0];
- p++;
- break;
- }
- }
- base[baselen] = 0;
-
- csum = csum % (MANGLE_BASE*MANGLE_BASE);
- (void)slprintf(s, 12, "%s%c%c%c",
- base, magic_char, mangle( csum/MANGLE_BASE ), mangle( csum ) );
-
- if( *extension )
- {
- (void)pstrcat( s, "." );
- (void)pstrcat( s, extension );
- }
-
- DEBUG( 5, ( "%s\n", s ) );
-
- } /* mangle_name_83 */
-
-/*****************************************************************************
- * Convert a filename to DOS format. Return True if successful.
- *
- * Input: OutName - Source *and* destination buffer.
- *
- * NOTE that OutName must point to a memory space that
- * is at least 13 bytes in size!
- *
- * need83 - If False, name mangling will be skipped unless the
- * name contains illegal characters. Mapping will still
- * be done, if appropriate. This is probably used to
- * signal that a client does not require name mangling,
- * thus skipping the name mangling even on shares which
- * have name-mangling turned on.
- * cache83 - If False, the mangled name cache will not be updated.
- * This is usually used to prevent that we overwrite
- * a conflicting cache entry prematurely, i.e. before
- * we know whether the client is really interested in the
- * current name. (See PR#13758). UKD.
- * snum - Share number. This identifies the share in which the
- * name exists.
- *
- * Output: Returns False only if the name wanted mangling but the share does
- * not have name mangling turned on.
- *
- * ****************************************************************************
- */
-BOOL name_map_mangle(char *OutName, BOOL need83, BOOL cache83, int snum)
+void mangle_map(char *OutName, BOOL need83, BOOL cache83, int snum)
{
- char *map;
- DEBUG(5,("name_map_mangle( %s, need83 = %s, cache83 = %s, %d )\n", OutName,
- need83 ? "True" : "False", cache83 ? "True" : "False", snum));
-
-#ifdef MANGLE_LONG_FILENAMES
- if( !need83 && is_illegal_name(OutName) )
- need83 = True;
-#endif
-
- /* apply any name mappings */
- map = lp_mangled_map(snum);
-
- if (map && *map) {
- do_fwd_mangled_map( OutName, map );
- }
-
- /* check if it's already in 8.3 format */
- if (need83 && !is_8_3(OutName, True)) {
- char *tmp = NULL;
-
- if (!lp_manglednames(snum)) {
- return(False);
- }
-
- /* mangle it into 8.3 */
- if (cache83)
- tmp = strdup(OutName);
-
- mangle_name_83(OutName);
-
- if(tmp != NULL) {
- cache_mangled_name(OutName, tmp);
- SAFE_FREE(tmp);
+ /* name mangling can be disabled for speed, in which case
+ we just truncate the string */
+ if (!lp_manglednames(snum)) {
+ if (need83) {
+ string_truncate(OutName, 12);
}
+ return;
}
- DEBUG(5,("name_map_mangle() ==> [%s]\n", OutName));
- return(True);
-} /* name_map_mangle */
-
+ /* invoke the inane "mangled map" code */
+ mangle_map_filename(OutName, snum);
+ mangle_fns->name_map(OutName, need83, cache83);
+}
diff --git a/source/smbd/mangle_hash.c b/source/smbd/mangle_hash.c
index 1d4697474ce..7fef891f633 100644
--- a/source/smbd/mangle_hash.c
+++ b/source/smbd/mangle_hash.c
@@ -1,9 +1,8 @@
/*
- Unix SMB/CIFS implementation.
+ Unix SMB/Netbios implementation.
+ Version 1.9.
Name mangling
- Copyright (C) Andrew Tridgell 1992-2002
- Copyright (C) Simo Sorce 2001
- Copyright (C) Andrew Bartlett 2002
+ Copyright (C) Andrew Tridgell 1992-1998
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
@@ -20,16 +19,15 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-
/* -------------------------------------------------------------------------- **
* Notable problems...
*
* March/April 1998 CRH
* - Many of the functions in this module overwrite string buffers passed to
* them. This causes a variety of problems and is, generally speaking,
- * dangerous and scarry. See the kludge notes in name_map()
+ * dangerous and scarry. See the kludge notes in name_map_mangle()
* below.
- * - It seems that something is calling name_map() twice. The
+ * - It seems that something is calling name_map_mangle() twice. The
* first call is probably some sort of test. Names which contain
* illegal characters are being doubly mangled. I'm not sure, but
* I'm guessing the problem is in server.c.
@@ -86,11 +84,11 @@ extern BOOL case_mangle; /* If true, all chars in 8.3 should be same case. */
*
* isbasecahr() - Given a character, check the chartest array to see
* if that character is in the basechars set. This is
- * faster than using strchr_m().
+ * faster than using strchr().
*
* isillegal() - Given a character, check the chartest array to see
* if that character is in the illegal characters set.
- * This is faster than using strchr_m().
+ * This is faster than using strchr().
*
* mangled_cache - Cache header used for storing mangled -> original
* reverse maps.
@@ -128,252 +126,158 @@ static BOOL ct_initialized = False;
static ubi_cacheRoot mangled_cache[1] = { { { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0 } };
static BOOL mc_initialized = False;
#define MANGLED_CACHE_MAX_ENTRIES 1024
-#define MANGLED_CACHE_MAX_MEMORY 0
+#define MANGLED_CACHE_MAX_MEMORY 0
+
/* -------------------------------------------------------------------------- **
- * External Variables...
+ * Functions...
*/
-extern int case_default; /* Are conforming 8.3 names all upper or lower? */
-extern BOOL case_mangle; /* If true, all chars in 8.3 should be same case. */
-
-/* -------------------------------------------------------------------- */
-
-static NTSTATUS has_valid_chars(const smb_ucs2_t *s, BOOL allow_wildcards)
-{
- if (!s || !*s)
- return NT_STATUS_INVALID_PARAMETER;
-
- /* CHECK: this should not be necessary if the ms wild chars
- are not valid in valid.dat --- simo */
- if (!allow_wildcards && ms_has_wild_w(s))
- return NT_STATUS_UNSUCCESSFUL;
-
- while (*s) {
- if(!isvalid83_w(*s))
- return NT_STATUS_UNSUCCESSFUL;
- s++;
- }
-
- return NT_STATUS_OK;
-}
-
-/* return False if something fail and
- * return 2 alloced unicode strings that contain prefix and extension
+/* ************************************************************************** **
+ * Initialize the static character test array.
+ *
+ * Input: none
+ *
+ * Output: none
+ *
+ * Notes: This function changes (loads) the contents of the <chartest>
+ * array. The scope of <chartest> is this file.
+ *
+ * ************************************************************************** **
*/
+static void init_chartest( void )
+ {
+ char *illegalchars = "*\\/?<>|\":";
+ unsigned char *s;
+
+ memset( (char *)chartest, '\0', 256 );
-static NTSTATUS mangle_get_prefix(const smb_ucs2_t *ucs2_string, smb_ucs2_t **prefix,
- smb_ucs2_t **extension, BOOL allow_wildcards)
-{
- size_t ext_len;
- smb_ucs2_t *p;
+ for( s = (unsigned char *)illegalchars; *s; s++ )
+ chartest[*s] = ILLEGAL_MASK;
- *extension = 0;
- *prefix = strdup_w(ucs2_string);
- if (!*prefix) {
- return NT_STATUS_NO_MEMORY;
- }
- if ((p = strrchr_w(*prefix, UCS2_CHAR('.')))) {
- ext_len = strlen_w(p+1);
- if ((ext_len > 0) && (ext_len < 4) && (p != *prefix) &&
- (NT_STATUS_IS_OK(has_valid_chars(p+1,allow_wildcards)))) /* check extension */ {
- *p = 0;
- *extension = strdup_w(p+1);
- if (!*extension) {
- SAFE_FREE(*prefix);
- return NT_STATUS_NO_MEMORY;
- }
- }
- }
- return NT_STATUS_OK;
-}
+ for( s = (unsigned char *)basechars; *s; s++ )
+ chartest[*s] |= BASECHAR_MASK;
+
+ ct_initialized = True;
+ } /* init_chartest */
/* ************************************************************************** **
- * Return NT_STATUS_UNSUCCESSFUL if a name is a special msdos reserved name.
+ * Return True if a name is a special msdos reserved name.
*
* Input: fname - String containing the name to be tested.
*
- * Output: NT_STATUS_UNSUCCESSFUL, if the name matches one of the list of reserved names.
+ * Output: True, if the name matches one of the list of reserved names.
*
* Notes: This is a static function called by is_8_3(), below.
*
* ************************************************************************** **
*/
-
-static NTSTATUS is_valid_name(const smb_ucs2_t *fname, BOOL allow_wildcards)
-{
- smb_ucs2_t *str, *p;
- NTSTATUS ret = NT_STATUS_OK;
-
- if (!fname || !*fname)
- return NT_STATUS_INVALID_PARAMETER;
-
- /* . and .. are valid names. */
- if (strcmp_wa(fname, ".")==0 || strcmp_wa(fname, "..")==0)
- return NT_STATUS_OK;
-
- /* Name cannot start with '.' */
- if (*fname == UCS2_CHAR('.'))
- return NT_STATUS_UNSUCCESSFUL;
-
- ret = has_valid_chars(fname, allow_wildcards);
- if (NT_STATUS_IS_ERR(ret))
- return ret;
-
- str = strdup_w(fname);
- p = strchr_w(str, UCS2_CHAR('.'));
- if (p && p[1] == UCS2_CHAR(0)) {
- /* Name cannot end in '.' */
- SAFE_FREE(str);
- return NT_STATUS_UNSUCCESSFUL;
- }
- if (p) *p = 0;
- strupper_w(str);
- p = &(str[1]);
-
- switch(str[0])
- {
- case UCS2_CHAR('A'):
- if(strcmp_wa(p, "UX") == 0)
- ret = NT_STATUS_UNSUCCESSFUL;
- break;
- case UCS2_CHAR('C'):
- if((strcmp_wa(p, "LOCK$") == 0)
- || (strcmp_wa(p, "ON") == 0)
- || (strcmp_wa(p, "OM1") == 0)
- || (strcmp_wa(p, "OM2") == 0)
- || (strcmp_wa(p, "OM3") == 0)
- || (strcmp_wa(p, "OM4") == 0)
- )
- ret = NT_STATUS_UNSUCCESSFUL;
- break;
- case UCS2_CHAR('L'):
- if((strcmp_wa(p, "PT1") == 0)
- || (strcmp_wa(p, "PT2") == 0)
- || (strcmp_wa(p, "PT3") == 0)
- )
- ret = NT_STATUS_UNSUCCESSFUL;
- break;
- case UCS2_CHAR('N'):
- if(strcmp_wa(p, "UL") == 0)
- ret = NT_STATUS_UNSUCCESSFUL;
- break;
- case UCS2_CHAR('P'):
- if(strcmp_wa(p, "RN") == 0)
- ret = NT_STATUS_UNSUCCESSFUL;
- break;
- default:
- break;
- }
-
- SAFE_FREE(str);
- return ret;
-}
-
-static NTSTATUS is_8_3_w(const smb_ucs2_t *fname, BOOL allow_wildcards)
-{
- smb_ucs2_t *pref = 0, *ext = 0;
- size_t plen;
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- if (!fname || !*fname)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (strlen_w(fname) > 12)
- return NT_STATUS_UNSUCCESSFUL;
-
- if (strcmp_wa(fname, ".") == 0 || strcmp_wa(fname, "..") == 0)
- return NT_STATUS_OK;
-
- if (NT_STATUS_IS_ERR(is_valid_name(fname, allow_wildcards)))
- goto done;
-
- if (NT_STATUS_IS_ERR(mangle_get_prefix(fname, &pref, &ext, allow_wildcards)))
- goto done;
- plen = strlen_w(pref);
-
- if (strchr_wa(pref, '.'))
- goto done;
- if (plen < 1 || plen > 8)
- goto done;
- if (ext && (strlen_w(ext) > 3))
- goto done;
-
- ret = NT_STATUS_OK;
-
-done:
- SAFE_FREE(pref);
- SAFE_FREE(ext);
- return ret;
-}
-
-static BOOL is_8_3(const char *fname, BOOL check_case, BOOL allow_wildcards)
-{
- const char *f;
- smb_ucs2_t *ucs2name;
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- if (!fname || !*fname)
- return False;
- if ((f = strrchr(fname, '/')) == NULL)
- f = fname;
- else
- f++;
-
- if (strlen(f) > 12)
- return False;
-
- ucs2name = acnv_uxu2(f);
- if (!ucs2name) {
- DEBUG(0,("is_8_3: internal error acnv_uxu2() failed!\n"));
- goto done;
- }
-
- ret = is_8_3_w(ucs2name, allow_wildcards);
-
-done:
- SAFE_FREE(ucs2name);
-
- if (!NT_STATUS_IS_OK(ret)) {
- return False;
- }
-
- return True;
-}
-
-
-
-/* -------------------------------------------------------------------------- **
- * Functions...
- */
+static BOOL is_reserved_msdos( char *fname )
+ {
+ char upperFname[13];
+ char *p;
+
+ StrnCpy (upperFname, fname, 12);
+
+ /* lpt1.txt and con.txt etc are also illegal */
+ p = strchr(upperFname,'.');
+ if( p )
+ *p = '\0';
+
+ strupper( upperFname );
+ p = upperFname + 1;
+ switch( upperFname[0] )
+ {
+ case 'A':
+ if( 0 == strcmp( p, "UX" ) )
+ return( True );
+ break;
+ case 'C':
+ if( (0 == strcmp( p, "LOCK$" ))
+ || (0 == strcmp( p, "ON" ))
+ || (0 == strcmp( p, "OM1" ))
+ || (0 == strcmp( p, "OM2" ))
+ || (0 == strcmp( p, "OM3" ))
+ || (0 == strcmp( p, "OM4" ))
+ )
+ return( True );
+ break;
+ case 'L':
+ if( (0 == strcmp( p, "PT1" ))
+ || (0 == strcmp( p, "PT2" ))
+ || (0 == strcmp( p, "PT3" ))
+ )
+ return( True );
+ break;
+ case 'N':
+ if( 0 == strcmp( p, "UL" ) )
+ return( True );
+ break;
+ case 'P':
+ if( 0 == strcmp( p, "RN" ) )
+ return( True );
+ break;
+ }
+
+ return( False );
+ } /* is_reserved_msdos */
/* ************************************************************************** **
- * Initialize the static character test array.
+ * Determine whether or not a given name contains illegal characters, even
+ * long names.
*
- * Input: none
+ * Input: name - The name to be tested.
*
- * Output: none
+ * Output: True if an illegal character was found in <name>, else False.
*
- * Notes: This function changes (loads) the contents of the <chartest>
- * array. The scope of <chartest> is this file.
+ * Notes: This is used to test a name on the host system, long or short,
+ * for characters that would be illegal on most client systems,
+ * particularly DOS and Windows systems. Unix and AmigaOS, for
+ * example, allow a filenames which contain such oddities as
+ * quotes ("). If a name is found which does contain an illegal
+ * character, it is mangled even if it conforms to the 8.3
+ * format.
*
* ************************************************************************** **
*/
-static void init_chartest( void )
-{
- char *illegalchars = "*\\/?<>|\":";
- unsigned char *s;
-
- memset( (char *)chartest, '\0', 256 );
-
- for( s = (unsigned char *)illegalchars; *s; s++ )
- chartest[*s] = ILLEGAL_MASK;
-
- for( s = (unsigned char *)basechars; *s; s++ )
- chartest[*s] |= BASECHAR_MASK;
-
- ct_initialized = True;
-}
+static BOOL is_illegal_name( char *name )
+ {
+ unsigned char *s;
+ int skip;
+ int namelen;
+
+ if( !name )
+ return( True );
+
+ if( !ct_initialized )
+ init_chartest();
+
+ namelen = strlen(name);
+ if (namelen &&
+ name[namelen-1] == '.' &&
+ !strequal(name, ".") &&
+ !strequal(name, ".."))
+ return True;
+
+ s = (unsigned char *)name;
+ while( *s )
+ {
+ skip = get_character_len( *s );
+ if( skip != 0 )
+ {
+ s += skip;
+ }
+ else
+ {
+ if( isillegal( *s ) )
+ return( True );
+ else
+ s++;
+ }
+ }
+
+ return( False );
+ } /* is_illegal_name */
/* ************************************************************************** **
* Return True if the name *could be* a mangled name.
@@ -392,22 +296,152 @@ static void init_chartest( void )
*
* ************************************************************************** **
*/
-static BOOL is_mangled(const char *s)
+static BOOL is_mangled( const char *s )
{
char *magic;
+ BOOL ret = False;
if( !ct_initialized )
init_chartest();
- magic = strchr_m( s, magic_char );
- while( magic && magic[1] && magic[2] ) { /* 3 chars, 1st is magic. */
+ magic = strchr( s, magic_char );
+ while( magic && magic[1] && magic[2] ) {
+ /* 3 chars, 1st is magic. */
if( ('.' == magic[3] || '/' == magic[3] || !(magic[3])) /* Ends with '.' or nul or '/' ? */
&& isbasechar( toupper(magic[1]) ) /* is 2nd char basechar? */
&& isbasechar( toupper(magic[2]) ) ) /* is 3rd char basechar? */
- return( True ); /* If all above, then true, */
- magic = strchr_m( magic+1, magic_char ); /* else seek next magic. */
+ ret = ( True ); /* If all above, then true, */
+ magic = strchr( magic+1, magic_char ); /* else seek next magic. */
+ }
+
+ DEBUG(10,("is_mangled: %s : %s\n", s, ret ? "True" : "False"));
+
+ return ret;
+} /* is_mangled */
+
+static BOOL is_ms_wildchar(const char c)
+{
+ switch(c) {
+ case '*':
+ case '?':
+ case '<':
+ case '>':
+ case '"':
+ return True;
+ default:
+ return False;
}
- return( False );
+}
+
+/* ************************************************************************** **
+ * Return True if the name is a valid DOS name in 8.3 DOS format.
+ *
+ * Input: fname - File name to be checked.
+ * check_case - If True, and if case_mangle is True, then the
+ * name will be checked to see if all characters
+ * are the correct case. See case_mangle and
+ * case_default above.
+ * allow_wildcards - If True dos wildcard characters *?<>" are allowed as 8.3.
+ *
+ * Output: True if the name is a valid DOS name, else False.
+ *
+ * ************************************************************************** **
+ */
+
+static BOOL is_8_3( const char *cfname, BOOL check_case, BOOL allow_wildcards )
+{
+ int len;
+ int l;
+ int skip;
+ char *p;
+ char *dot_pos;
+ char *slash_pos;
+ char *fname = (char *)cfname;
+
+ slash_pos = strrchr( fname, '/' );
+
+ /* If there is a directory path, skip it. */
+ if( slash_pos )
+ fname = slash_pos + 1;
+ len = strlen( fname );
+
+ DEBUG( 5, ( "Checking %s for 8.3\n", fname ) );
+
+ /* Can't be 0 chars or longer than 12 chars */
+ if( (len == 0) || (len > 12) )
+ return( False );
+
+ /* Mustn't be an MS-DOS Special file such as lpt1 or even lpt1.txt */
+ if( is_reserved_msdos( fname ) )
+ return( False );
+
+ /* Check that all characters are the correct case, if asked to do so. */
+ if( check_case && case_mangle ) {
+ switch( case_default ) {
+ case CASE_LOWER:
+ if( strhasupper( fname ) )
+ return(False);
+ break;
+ case CASE_UPPER:
+ if( strhaslower( fname ) )
+ return(False);
+ break;
+ }
+ }
+
+ /* Can't contain invalid dos chars */
+ /* Windows use the ANSI charset.
+ But filenames are translated in the PC charset.
+ This Translation may be more or less relaxed depending
+ the Windows application. */
+
+ /* %%% A nice improvment to name mangling would be to translate
+ filename to ANSI charset on the smb server host */
+
+ p = fname;
+ dot_pos = NULL;
+ while( *p ) {
+ if( (skip = get_character_len( *p )) != 0 )
+ p += skip;
+ else {
+ if( *p == '.' && !dot_pos )
+ dot_pos = (char *)p;
+ else {
+ if( !isdoschar( *p )) {
+ if (!allow_wildcards)
+ return False;
+ if (!is_ms_wildchar(*p))
+ return False;
+ }
+ }
+ p++;
+ }
+ }
+
+ /* no dot and less than 9 means OK */
+ if( !dot_pos )
+ return( len <= 8 );
+
+ l = PTR_DIFF( dot_pos, fname );
+
+ /* base must be at least 1 char except special cases . and .. */
+ if( l == 0 )
+ return( 0 == strcmp( fname, "." ) || 0 == strcmp( fname, ".." ) );
+
+ /* base can't be greater than 8 */
+ if( l > 8 )
+ return( False );
+
+ /* extension must be between 1 and 3 */
+ if( (len - l < 2 ) || (len - l > 4) )
+ return( False );
+
+ /* extensions may not have a dot */
+ if( strchr( dot_pos+1, '.' ) )
+ return( False );
+
+ /* must be in 8.3 format */
+ return( True );
}
/* ************************************************************************** **
@@ -429,11 +463,14 @@ static BOOL is_mangled(const char *s)
*
* ************************************************************************** **
*/
+
static signed int cache_compare( ubi_btItemPtr ItemPtr, ubi_btNodePtr NodePtr )
{
char *Key1 = (char *)ItemPtr;
char *Key2 = (char *)(((ubi_cacheEntryPtr)NodePtr) + 1);
+ DEBUG(100,("cache_compare: %s %s\n", Key1, Key2));
+
return( StrCaseCmp( Key1, Key2 ) );
}
@@ -450,6 +487,7 @@ static signed int cache_compare( ubi_btItemPtr ItemPtr, ubi_btNodePtr NodePtr )
*
* ************************************************************************** **
*/
+
static void cache_free_entry( ubi_trNodePtr WarrenZevon )
{
ZERO_STRUCTP(WarrenZevon);
@@ -473,22 +511,22 @@ static void cache_free_entry( ubi_trNodePtr WarrenZevon )
* ************************************************************************** **
*/
-static void mangle_reset( void )
+static void reset_mangled_cache( void )
{
if( !mc_initialized ) {
(void)ubi_cacheInit( mangled_cache,
- cache_compare,
- cache_free_entry,
- MANGLED_CACHE_MAX_ENTRIES,
- MANGLED_CACHE_MAX_MEMORY );
+ cache_compare,
+ cache_free_entry,
+ MANGLED_CACHE_MAX_ENTRIES,
+ MANGLED_CACHE_MAX_MEMORY );
mc_initialized = True;
} else {
(void)ubi_cacheClear( mangled_cache );
}
/*
- (void)ubi_cacheSetMaxEntries( mangled_cache, lp_mangled_cache_entries() );
- (void)ubi_cacheSetMaxMemory( mangled_cache, lp_mangled_cache_memory() );
+ (void)ubi_cacheSetMaxEntries( mangled_cache, lp_mangled_cache_entries() );
+ (void)ubi_cacheSetMaxMemory( mangled_cache, lp_mangled_cache_memory() );
*/
}
@@ -518,47 +556,49 @@ static void mangle_reset( void )
*/
static void cache_mangled_name( char *mangled_name, char *raw_name )
{
- ubi_cacheEntryPtr new_entry;
- char *s1;
- char *s2;
- size_t mangled_len;
- size_t raw_len;
- size_t i;
-
- /* If the cache isn't initialized, give up. */
- if( !mc_initialized )
- return;
-
- /* Init the string lengths. */
- mangled_len = strlen( mangled_name );
- raw_len = strlen( raw_name );
-
- /* See if the extensions are unmangled. If so, store the entry
- * without the extension, thus creating a "group" reverse map.
- */
- s1 = strrchr( mangled_name, '.' );
- if( s1 && (s2 = strrchr( raw_name, '.' )) ) {
- i = 1;
- while( s1[i] && (tolower( s1[i] ) == s2[i]) )
- i++;
- if( !s1[i] && !s2[i] ) {
- mangled_len -= i;
- raw_len -= i;
- }
- }
-
- /* Allocate a new cache entry. If the allocation fails, just return. */
- i = sizeof( ubi_cacheEntry ) + mangled_len + raw_len + 2;
- new_entry = malloc( i );
- if( !new_entry )
- return;
-
- /* Fill the new cache entry, and add it to the cache. */
- s1 = (char *)(new_entry + 1);
- s2 = (char *)&(s1[mangled_len + 1]);
- (void)StrnCpy( s1, mangled_name, mangled_len );
- (void)StrnCpy( s2, raw_name, raw_len );
- ubi_cachePut( mangled_cache, i, new_entry, s1 );
+ ubi_cacheEntryPtr new_entry;
+ char *s1;
+ char *s2;
+ size_t mangled_len;
+ size_t raw_len;
+ size_t i;
+
+ /* If the cache isn't initialized, give up. */
+ if( !mc_initialized )
+ return;
+
+ /* Init the string lengths. */
+ mangled_len = strlen( mangled_name );
+ raw_len = strlen( raw_name );
+
+ /* See if the extensions are unmangled. If so, store the entry
+ * without the extension, thus creating a "group" reverse map.
+ */
+ s1 = strrchr( mangled_name, '.' );
+ if( s1 && (s2 = strrchr( raw_name, '.' )) )
+ {
+ i = 1;
+ while( s1[i] && (tolower( s1[i] ) == s2[i]) )
+ i++;
+ if( !s1[i] && !s2[i] )
+ {
+ mangled_len -= i;
+ raw_len -= i;
+ }
+ }
+
+ /* Allocate a new cache entry. If the allocation fails, just return. */
+ i = sizeof( ubi_cacheEntry ) + mangled_len + raw_len + 2;
+ new_entry = malloc( i );
+ if( !new_entry )
+ return;
+
+ /* Fill the new cache entry, and add it to the cache. */
+ s1 = (char *)(new_entry + 1);
+ s2 = (char *)&(s1[mangled_len + 1]);
+ (void)StrnCpy( s1, mangled_name, mangled_len );
+ (void)StrnCpy( s2, raw_name, raw_len );
+ ubi_cachePut( mangled_cache, i, new_entry, s1 );
}
/* ************************************************************************** **
@@ -576,58 +616,67 @@ static void cache_mangled_name( char *mangled_name, char *raw_name )
* ************************************************************************** **
*/
-static BOOL check_cache( char *s )
+static BOOL check_mangled_cache( char *s )
{
- ubi_cacheEntryPtr FoundPtr;
- char *ext_start = NULL;
- char *found_name;
- char *saved_ext = NULL;
-
- /* If the cache isn't initialized, give up. */
- if( !mc_initialized )
- return( False );
-
- FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
-
- /* If we didn't find the name *with* the extension, try without. */
- if( !FoundPtr ) {
- ext_start = strrchr( s, '.' );
- if( ext_start ) {
- if((saved_ext = strdup(ext_start)) == NULL)
- return False;
-
- *ext_start = '\0';
- FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
- /*
- * At this point s is the name without the
- * extension. We re-add the extension if saved_ext
- * is not null, before freeing saved_ext.
- */
- }
- }
-
- /* Okay, if we haven't found it we're done. */
- if( !FoundPtr ) {
- if(saved_ext) {
- /* Replace the saved_ext as it was truncated. */
- (void)pstrcat( s, saved_ext );
- SAFE_FREE(saved_ext);
- }
- return( False );
- }
-
- /* If we *did* find it, we need to copy it into the string buffer. */
- found_name = (char *)(FoundPtr + 1);
- found_name += (strlen( found_name ) + 1);
-
- (void)pstrcpy( s, found_name );
- if( saved_ext ) {
- /* Replace the saved_ext as it was truncated. */
- (void)pstrcat( s, saved_ext );
- SAFE_FREE(saved_ext);
- }
-
- return( True );
+ ubi_cacheEntryPtr FoundPtr;
+ char *ext_start = NULL;
+ char *found_name;
+ char *saved_ext = NULL;
+
+ /* If the cache isn't initialized, give up. */
+ if( !mc_initialized )
+ return( False );
+
+ FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
+
+ /* If we didn't find the name *with* the extension, try without. */
+ if( !FoundPtr )
+ {
+ ext_start = strrchr( s, '.' );
+ if( ext_start )
+ {
+ if((saved_ext = strdup(ext_start)) == NULL)
+ return False;
+
+ *ext_start = '\0';
+ FoundPtr = ubi_cacheGet( mangled_cache, (ubi_trItemPtr)s );
+ /*
+ * At this point s is the name without the
+ * extension. We re-add the extension if saved_ext
+ * is not null, before freeing saved_ext.
+ */
+ }
+ }
+
+ /* Okay, if we haven't found it we're done. */
+ if( !FoundPtr )
+ {
+ if(saved_ext)
+ {
+ /* Replace the saved_ext as it was truncated. */
+ (void)pstrcat( s, saved_ext );
+ SAFE_FREE(saved_ext);
+ }
+ return( False );
+ }
+
+ /* If we *did* find it, we need to copy it into the string buffer. */
+ found_name = (char *)(FoundPtr + 1);
+ found_name += (strlen( found_name ) + 1);
+
+ DEBUG( 3, ("Found %s on mangled stack ", s) );
+
+ (void)pstrcpy( s, found_name );
+ if( saved_ext )
+ {
+ /* Replace the saved_ext as it was truncated. */
+ (void)pstrcat( s, saved_ext );
+ SAFE_FREE(saved_ext);
+ }
+
+ DEBUG( 3, ("as %s\n", s) );
+
+ return( True );
}
/*****************************************************************************
@@ -635,67 +684,124 @@ static BOOL check_cache( char *s )
* the buffer must be able to hold 13 characters (including the null)
*****************************************************************************
*/
-static void to_8_3(char *s)
+static void mangle_name_83( char *s)
{
- int csum;
- char *p;
- char extension[4];
- char base[9];
- int baselen = 0;
- int extlen = 0;
-
- extension[0] = 0;
- base[0] = 0;
-
- p = strrchr(s,'.');
- if( p && (strlen(p+1) < (size_t)4) ) {
- BOOL all_normal = ( strisnormal(p+1) ); /* XXXXXXXXX */
-
- if( all_normal && p[1] != 0 ) {
- *p = 0;
- csum = str_checksum( s );
- *p = '.';
- } else
- csum = str_checksum(s);
- } else
- csum = str_checksum(s);
-
- strupper( s );
-
- if( p ) {
- if( p == s )
- safe_strcpy( extension, "___", 3 );
- else {
- *p++ = 0;
- while( *p && extlen < 3 ) {
- if ( *p != '.') {
- extension[extlen++] = p[0];
- }
- p++;
- }
- extension[extlen] = 0;
- }
- }
-
- p = s;
+ int csum;
+ char *p;
+ char extension[4];
+ char base[9];
+ int baselen = 0;
+ int extlen = 0;
+ int skip;
+
+ extension[0] = 0;
+ base[0] = 0;
+
+ p = strrchr(s,'.');
+ if( p && (strlen(p+1) < (size_t)4) )
+ {
+ BOOL all_normal = ( strisnormal(p+1) ); /* XXXXXXXXX */
+
+ if( all_normal && p[1] != 0 )
+ {
+ *p = 0;
+ csum = str_checksum( s );
+ *p = '.';
+ }
+ else
+ csum = str_checksum(s);
+ }
+ else
+ csum = str_checksum(s);
+
+ strupper( s );
+
+ DEBUG( 5, ("Mangling name %s to ",s) );
+
+ if( p )
+ {
+ if( p == s )
+ safe_strcpy( extension, "___", 3 );
+ else
+ {
+ *p++ = 0;
+ while( *p && extlen < 3 )
+ {
+ skip = get_character_len( *p );
+ switch( skip )
+ {
+ case 2:
+ if( extlen < 2 )
+ {
+ extension[extlen++] = p[0];
+ extension[extlen++] = p[1];
+ }
+ else
+ {
+ extension[extlen++] = mangle( (unsigned char)*p );
+ }
+ p += 2;
+ break;
+ case 1:
+ extension[extlen++] = p[0];
+ p++;
+ break;
+ default:
+ if( isdoschar (*p) && *p != '.' )
+ extension[extlen++] = p[0];
+ p++;
+ break;
+ }
+ }
+ extension[extlen] = 0;
+ }
+ }
+
+ p = s;
+
+ while( *p && baselen < 5 )
+ {
+ skip = get_character_len(*p);
+ switch( skip )
+ {
+ case 2:
+ if( baselen < 4 )
+ {
+ base[baselen++] = p[0];
+ base[baselen++] = p[1];
+ }
+ else
+ {
+ base[baselen++] = mangle( (unsigned char)*p );
+ }
+ p += 2;
+ break;
+ case 1:
+ base[baselen++] = p[0];
+ p++;
+ break;
+ default:
+ if( isdoschar( *p ) && *p != '.' )
+ base[baselen++] = p[0];
+ p++;
+ break;
+ }
+ }
+ base[baselen] = 0;
+
+ csum = csum % (MANGLE_BASE*MANGLE_BASE);
+
+ (void)slprintf(s, 12, "%s%c%c%c",
+ base, magic_char, mangle( csum/MANGLE_BASE ), mangle( csum ) );
+
+ if( *extension )
+ {
+ (void)pstrcat( s, "." );
+ (void)pstrcat( s, extension );
+ }
+
+ DEBUG( 5, ( "%s\n", s ) );
- while( *p && baselen < 5 ) {
- if (*p != '.') {
- base[baselen++] = p[0];
- }
- p++;
- }
- base[baselen] = 0;
-
- csum = csum % (MANGLE_BASE*MANGLE_BASE);
-
- (void)slprintf(s, 12, "%s%c%c%c",
- base, magic_char, mangle( csum/MANGLE_BASE ), mangle( csum ) );
-
- if( *extension ) {
- (void)pstrcat( s, "." );
- (void)pstrcat( s, extension );
- }
}
/*****************************************************************************
@@ -717,36 +823,33 @@ static void to_8_3(char *s)
* a conflicting cache entry prematurely, i.e. before
* we know whether the client is really interested in the
* current name. (See PR#13758). UKD.
+ * snum - Share number. This identifies the share in which the
+ * name exists.
*
* Output: Returns False only if the name wanted mangling but the share does
* not have name mangling turned on.
*
* ****************************************************************************
*/
-
-static void name_map(char *OutName, BOOL need83, BOOL cache83)
+static void name_map_mangle(char *OutName, BOOL need83, BOOL cache83)
{
- smb_ucs2_t *OutName_ucs2;
- DEBUG(5,("name_map( %s, need83 = %s, cache83 = %s)\n", OutName,
- need83 ? "True" : "False", cache83 ? "True" : "False"));
-
- if (push_ucs2_allocate((void **)&OutName_ucs2, OutName) < 0) {
- DEBUG(0, ("push_ucs2_allocate failed!\n"));
- return;
- }
+ DEBUG(5,("name_map_mangle( %s, need83 = %s, cache83 = %s )\n", OutName,
+ need83 ? "True" : "False", cache83 ? "True" : "False" ));
- if( !need83 && NT_STATUS_IS_ERR(is_valid_name(OutName_ucs2, False)))
+#ifdef MANGLE_LONG_FILENAMES
+ if( !need83 && is_illegal_name(OutName) )
need83 = True;
+#endif
/* check if it's already in 8.3 format */
- if (need83 && !NT_STATUS_IS_OK(is_8_3_w(OutName_ucs2, False))) {
+ if (need83 && !is_8_3(OutName, True, False)) {
char *tmp = NULL;
/* mangle it into 8.3 */
if (cache83)
tmp = strdup(OutName);
- to_8_3(OutName);
+ mangle_name_83(OutName);
if(tmp != NULL) {
cache_mangled_name(OutName, tmp);
@@ -754,26 +857,24 @@ static void name_map(char *OutName, BOOL need83, BOOL cache83)
}
}
- DEBUG(5,("name_map() ==> [%s]\n", OutName));
- SAFE_FREE(OutName_ucs2);
+ DEBUG(5,("name_map_mangle() ==> [%s]\n", OutName));
}
/*
- the following provides the abstraction layer to make it easier
- to drop in an alternative mangling implementation
-*/
+ * the following provides the abstraction layer to make it easier
+ * to drop in an alternative mangling implementation
+ * */
static struct mangle_fns mangle_fns = {
is_mangled,
is_8_3,
- mangle_reset,
- check_cache,
- name_map
+ reset_mangled_cache,
+ check_mangled_cache,
+ name_map_mangle
};
/* return the methods for this mangling implementation */
struct mangle_fns *mangle_hash_init(void)
{
- mangle_reset();
-
+ reset_mangled_cache();
return &mangle_fns;
}
diff --git a/source/smbd/mangle_hash2.c b/source/smbd/mangle_hash2.c
index e2c4b43bc37..2074639f26c 100644
--- a/source/smbd/mangle_hash2.c
+++ b/source/smbd/mangle_hash2.c
@@ -53,12 +53,6 @@
#include "includes.h"
-#if 0
-#define M_DEBUG(level, x) DEBUG(level, x)
-#else
-#define M_DEBUG(level, x)
-#endif
-
/* these flags are used to mark characters in as having particular
properties */
#define FLAG_BASECHAR 1
@@ -124,7 +118,7 @@ static u32 mangle_hash(const char *key, unsigned length)
function */
strncpy(str, key, length);
str[length] = 0;
- strupper_m(str);
+ strupper(str);
/* the length of a multi-byte string can change after a strupper_m */
length = strlen(str);
@@ -200,7 +194,7 @@ static BOOL is_mangled_component(const char *name)
{
int len, i;
- M_DEBUG(0,("is_mangled_component %s ?\n", name));
+ DEBUG(10,("is_mangled_component %s ?\n", name));
/* the best distinguishing characteristic is the ~ */
if (name[6] != '~') return False;
@@ -234,7 +228,7 @@ static BOOL is_mangled_component(const char *name)
}
}
- M_DEBUG(0,("is_mangled %s -> yes\n", name));
+ DEBUG(10,("is_mangled %s -> yes\n", name));
return True;
}
@@ -257,7 +251,7 @@ static BOOL is_mangled(const char *name)
const char *p;
const char *s;
- M_DEBUG(0,("is_mangled %s ?\n", name));
+ DEBUG(10,("is_mangled %s ?\n", name));
for (s=name; (p=strchr(s, '/')); s=p+1) {
char *component = strndup(s, PTR_DIFF(p, s));
@@ -367,7 +361,7 @@ static BOOL check_cache(char *name)
/* make sure that this is a mangled name from this cache */
if (!is_mangled(name)) {
- M_DEBUG(0,("check_cache: %s -> not mangled\n", name));
+ DEBUG(10,("check_cache: %s -> not mangled\n", name));
return False;
}
@@ -382,7 +376,7 @@ static BOOL check_cache(char *name)
/* now look in the prefix cache for that hash */
prefix = cache_lookup(hash);
if (!prefix) {
- M_DEBUG(0,("check_cache: %s -> %08X -> not found\n", name, hash));
+ DEBUG(10,("check_cache: %s -> %08X -> not found\n", name, hash));
return False;
}
@@ -395,10 +389,10 @@ static BOOL check_cache(char *name)
}
if (extension[0]) {
- M_DEBUG(0,("check_cache: %s -> %s.%s\n", name, prefix, extension));
+ DEBUG(10,("check_cache: %s -> %s.%s\n", name, prefix, extension));
slprintf(name, sizeof(fstring), "%s.%s", prefix, extension);
} else {
- M_DEBUG(0,("check_cache: %s -> %s\n", name, prefix));
+ DEBUG(10,("check_cache: %s -> %s\n", name, prefix));
fstrcpy(name, prefix);
}
@@ -573,7 +567,7 @@ static void name_map(char *name, BOOL need83, BOOL cache83)
cache_insert(name, prefix_len, hash);
}
- M_DEBUG(0,("name_map: %s -> %08X -> %s (cache=%d)\n",
+ DEBUG(10,("name_map: %s -> %08X -> %s (cache=%d)\n",
name, hash, new_name, cache83));
/* and overwrite the old name */
diff --git a/source/smbd/mangle_map.c b/source/smbd/mangle_map.c
index 71d93407181..372ddc0bd49 100644
--- a/source/smbd/mangle_map.c
+++ b/source/smbd/mangle_map.c
@@ -127,7 +127,7 @@ static char *map_filename( char *s, /* This is null terminated */
*/
static void mangled_map(char *s, const char *MangledMap)
{
- char *start=MangledMap; /* Use this to search for mappings. */
+ char *start=(char*)MangledMap; /* Use this to search for mappings. */
char *end; /* Used to find the end of strings. */
char *match_string;
pstring new_string; /* Make up the result here. */
diff --git a/source/smbd/notify_kernel.c b/source/smbd/notify_kernel.c
index beaa66b1ba3..372416c0ee9 100644
--- a/source/smbd/notify_kernel.c
+++ b/source/smbd/notify_kernel.c
@@ -23,9 +23,9 @@
#if HAVE_KERNEL_CHANGE_NOTIFY
-static VOLATILE sig_atomic_t fd_pending;
-static VOLATILE sig_atomic_t signals_received;
-static VOLATILE sig_atomic_t signals_processed;
+#define FD_PENDING_SIZE 20
+static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
+static SIG_ATOMIC_T signals_received;
#ifndef DN_ACCESS
#define DN_ACCESS 0x00000001 /* File accessed in directory */
@@ -54,70 +54,100 @@ static VOLATILE sig_atomic_t signals_processed;
This is the structure to keep the information needed to
determine if a directory has changed.
*****************************************************************************/
+
struct change_data {
int directory_handle;
};
/****************************************************************************
-the signal handler for change notify
+ The signal handler for change notify.
+ The Linux kernel has a bug in that we should be able to block any
+ further delivery of RT signals until the kernel_check_notify() function
+ unblocks them, but it seems that any signal mask we're setting here is
+ being overwritten on exit from this handler. I should create a standalone
+ test case for the kernel hackers. JRA.
*****************************************************************************/
+
static void signal_handler(int sig, siginfo_t *info, void *unused)
{
- BlockSignals(True, sig);
- fd_pending = (sig_atomic_t)info->si_fd;
- signals_received++;
+ if (signals_received < FD_PENDING_SIZE - 1) {
+ fd_pending_array[signals_received] = (SIG_ATOMIC_T)info->si_fd;
+ signals_received++;
+ } /* Else signal is lost. */
sys_select_signal();
}
-
-
/****************************************************************************
Check if a change notify should be issued.
time non-zero means timeout check (used for hash). Ignore this (async method
where time is zero will be used instead).
*****************************************************************************/
+
static BOOL kernel_check_notify(connection_struct *conn, uint16 vuid, char *path, uint32 flags, void *datap, time_t t)
{
struct change_data *data = (struct change_data *)datap;
+ int i;
+ BOOL ret = False;
if (t)
return False;
- if (data->directory_handle != (int)fd_pending) return False;
-
- DEBUG(3,("kernel change notify on %s fd=%d\n", path, (int)fd_pending));
-
- close((int)fd_pending);
- fd_pending = (sig_atomic_t)-1;
- data->directory_handle = -1;
- signals_processed++;
+ BlockSignals(True, RT_SIGNAL_NOTIFY);
+ for (i = 0; i < signals_received; i++) {
+ if (data->directory_handle == (int)fd_pending_array[i]) {
+ DEBUG(3,("kernel_check_notify: kernel change notify on %s fd[%d]=%d (signals_received=%d)\n",
+ path, i, (int)fd_pending_array[i], (int)signals_received ));
+
+ close((int)fd_pending_array[i]);
+ fd_pending_array[i] = (SIG_ATOMIC_T)-1;
+ if (signals_received - i - 1) {
+ memmove((void *)&fd_pending_array[i], (void *)&fd_pending_array[i+1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-i-1));
+ }
+ data->directory_handle = -1;
+ signals_received--;
+ ret = True;
+ break;
+ }
+ }
BlockSignals(False, RT_SIGNAL_NOTIFY);
- return True;
+ return ret;
}
/****************************************************************************
-remove a change notify data structure
+ Remove a change notify data structure.
*****************************************************************************/
+
static void kernel_remove_notify(void *datap)
{
struct change_data *data = (struct change_data *)datap;
int fd = data->directory_handle;
if (fd != -1) {
- if (fd == (int)fd_pending) {
- fd_pending = (sig_atomic_t)-1;
- signals_processed++;
- BlockSignals(False, RT_SIGNAL_NOTIFY);
+ int i;
+ BlockSignals(True, RT_SIGNAL_NOTIFY);
+ for (i = 0; i < signals_received; i++) {
+ if (fd == (int)fd_pending_array[i]) {
+ close(fd);
+ fd_pending_array[i] = (SIG_ATOMIC_T)-1;
+ if (signals_received - i - 1) {
+ memmove((void *)&fd_pending_array[i], (void *)&fd_pending_array[i+1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-i-1));
+ }
+ data->directory_handle = -1;
+ signals_received--;
+ break;
+ }
}
- close(fd);
+ BlockSignals(False, RT_SIGNAL_NOTIFY);
}
SAFE_FREE(data);
- DEBUG(3,("removed kernel change notify fd=%d\n", fd));
+ DEBUG(3,("kernel_remove_notify: fd=%d\n", fd));
}
-
/****************************************************************************
-register a change notify request
+ Register a change notify request.
*****************************************************************************/
+
static void *kernel_register_notify(connection_struct *conn, char *path, uint32 flags)
{
struct change_data data;
@@ -162,22 +192,24 @@ static void *kernel_register_notify(connection_struct *conn, char *path, uint32
}
/****************************************************************************
-see if the kernel supports change notify
+ See if the kernel supports change notify.
****************************************************************************/
+
static BOOL kernel_notify_available(void)
{
int fd, ret;
fd = open("/tmp", O_RDONLY);
- if (fd == -1) return False; /* uggh! */
+ if (fd == -1)
+ return False; /* uggh! */
ret = sys_fcntl_long(fd, F_NOTIFY, 0);
close(fd);
return ret == 0;
}
-
/****************************************************************************
-setup kernel based change notify
+ Setup kernel based change notify.
****************************************************************************/
+
struct cnotify_fns *kernel_notify_init(void)
{
static struct cnotify_fns cnotify;
@@ -191,7 +223,8 @@ struct cnotify_fns *kernel_notify_init(void)
return NULL;
}
- if (!kernel_notify_available()) return NULL;
+ if (!kernel_notify_available())
+ return NULL;
cnotify.register_notify = kernel_register_notify;
cnotify.check_notify = kernel_check_notify;
@@ -201,7 +234,6 @@ struct cnotify_fns *kernel_notify_init(void)
return &cnotify;
}
-
#else
void notify_kernel_dummy(void) {}
#endif /* HAVE_KERNEL_CHANGE_NOTIFY */
diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c
index c05be55e39e..f7a49794130 100644
--- a/source/smbd/nttrans.c
+++ b/source/smbd/nttrans.c
@@ -1041,9 +1041,9 @@ static BOOL set_sd(files_struct *fsp, char *data, uint32 sd_len, uint32 security
BOOL ret;
if (sd_len == 0) {
- *pdef_class = ERRDOS;
- *pdef_code = ERRbadaccess;
- return False;
+ *pdef_class = 0;
+ *pdef_code = 0;
+ return True;
}
/*
@@ -1369,7 +1369,7 @@ static int call_nt_transact_create(connection_struct *conn,
* Now try and apply the desired SD.
*/
- if (!set_sd( fsp, data, sd_len, ALL_SECURITY_INFORMATION, &error_class, &error_code)) {
+ if (sd_len && !set_sd( fsp, data, sd_len, ALL_SECURITY_INFORMATION, &error_class, &error_code)) {
close_file(fsp,False);
restore_case_semantics(file_attributes);
return ERROR_DOS(error_class, error_code);
@@ -1707,6 +1707,9 @@ static int call_nt_transact_set_security_desc(connection_struct *conn,
DEBUG(3,("call_nt_transact_set_security_desc: file = %s, sent 0x%x\n", fsp->fsp_name,
(unsigned int)security_info_sent ));
+ if (total_data_count == 0)
+ return ERROR_DOS(ERRDOS, ERRbadaccess);
+
if (!set_sd( fsp, data, total_data_count, security_info_sent, &error_class, &error_code))
return ERROR_DOS(error_class, error_code);
diff --git a/source/smbd/open.c b/source/smbd/open.c
index 9f57cb294ca..79330175bbd 100644
--- a/source/smbd/open.c
+++ b/source/smbd/open.c
@@ -631,8 +631,8 @@ dev = %x, inode = %.0f\n", old_shares[i].op_type, fname, (unsigned int)dev, (dou
dev = %x, inode = %.0f. Deleting it to continue...\n", (int)broken_entry.pid, fname, (unsigned int)dev, (double)inode));
if (process_exists(broken_entry.pid)) {
- DEBUG(0,("open_mode_check: Existent process %d left active oplock.\n",
- broken_entry.pid ));
+ DEBUG(0,("open_mode_check: Existent process %u left active oplock.\n",
+ (unsigned int)broken_entry.pid ));
}
if (del_share_entry(dev, inode, &broken_entry, NULL) == -1) {
diff --git a/source/smbd/oplock.c b/source/smbd/oplock.c
index dbd7b63d060..f36875fc4a9 100644
--- a/source/smbd/oplock.c
+++ b/source/smbd/oplock.c
@@ -73,34 +73,69 @@ BOOL oplock_message_waiting(fd_set *fds)
****************************************************************************/
-BOOL receive_local_message(fd_set *fds, char *buffer, int buffer_len, int timeout)
+BOOL receive_local_message( char *buffer, int buffer_len, int timeout)
{
struct sockaddr_in from;
- int fromlen = sizeof(from);
+ socklen_t fromlen = sizeof(from);
int32 msg_len = 0;
+ fd_set fds;
+ int selrtn = -1;
smb_read_error = 0;
+ FD_ZERO(&fds);
- if(timeout != 0) {
+ /*
+ * We need to check for kernel oplocks before going into the select
+ * here, as the EINTR generated by the linux kernel oplock may have
+ * already been eaten. JRA.
+ */
+
+ if (koplocks && koplocks->msg_waiting(&fds)) {
+ return koplocks->receive_message(&fds, buffer, buffer_len);
+ }
+
+ while (timeout > 0 && selrtn == -1) {
struct timeval to;
- int selrtn;
int maxfd = oplock_sock;
+ time_t starttime = time(NULL);
- if (koplocks && koplocks->notification_fd != -1) {
- FD_SET(koplocks->notification_fd, fds);
- maxfd = MAX(maxfd, koplocks->notification_fd);
- }
+ FD_ZERO(&fds);
+ maxfd = setup_oplock_select_set(&fds);
to.tv_sec = timeout / 1000;
to.tv_usec = (timeout % 1000) * 1000;
- selrtn = sys_select(maxfd+1,fds,NULL,NULL,&to);
+ DEBUG(5,("receive_local_message: doing select with timeout of %d ms\n", timeout));
+
+ selrtn = sys_select(maxfd+1,&fds,NULL,NULL,&to);
if (selrtn == -1 && errno == EINTR) {
+
/* could be a kernel oplock interrupt */
- if (koplocks && koplocks->msg_waiting(fds)) {
- return koplocks->receive_message(fds, buffer, buffer_len);
+ if (koplocks && koplocks->msg_waiting(&fds)) {
+ return koplocks->receive_message(&fds, buffer, buffer_len);
+ }
+
+ /*
+ * Linux 2.0.x seems to have a bug in that
+ * it can return -1, EINTR with a timeout of zero.
+ * Make sure we bail out here with a read timeout
+ * if we got EINTR on a timeout of 1 or less.
+ */
+
+ if (timeout <= 1) {
+ smb_read_error = READ_TIMEOUT;
+ return False;
}
+
+ /* Not a kernel interrupt - could be a SIGUSR1 message. We must restart. */
+ /* We need to decrement the timeout here. */
+ timeout -= ((time(NULL) - starttime)*1000);
+ if (timeout < 0)
+ timeout = 1;
+
+ DEBUG(5,("receive_local_message: EINTR : new timeout %d ms\n", timeout));
+ continue;
}
/* Check if error */
@@ -117,11 +152,11 @@ BOOL receive_local_message(fd_set *fds, char *buffer, int buffer_len, int timeou
}
}
- if (koplocks && koplocks->msg_waiting(fds)) {
- return koplocks->receive_message(fds, buffer, buffer_len);
+ if (koplocks && koplocks->msg_waiting(&fds)) {
+ return koplocks->receive_message(&fds, buffer, buffer_len);
}
- if (!FD_ISSET(oplock_sock, fds))
+ if (!FD_ISSET(oplock_sock, &fds))
return False;
/*
@@ -133,7 +168,7 @@ BOOL receive_local_message(fd_set *fds, char *buffer, int buffer_len, int timeou
* Read a loopback udp message.
*/
msg_len = sys_recvfrom(oplock_sock, &buffer[OPBRK_CMD_HEADER_LEN],
- buffer_len - OPBRK_CMD_HEADER_LEN, 0, (struct sockaddr *)&from, &fromlen);
+ buffer_len - OPBRK_CMD_HEADER_LEN, 0, (struct sockaddr *)&from, &fromlen);
if(msg_len < 0) {
DEBUG(0,("receive_local_message. Error in recvfrom. (%s).\n",strerror(errno)));
@@ -966,16 +1001,8 @@ dev = %x, inode = %.0f, file_id = %lu and no fsp found !\n",
char op_break_reply[OPBRK_CMD_HEADER_LEN+OPLOCK_BREAK_MSG_LEN];
uint16 reply_from_port;
char *reply_msg_start;
- fd_set fds;
-
- FD_ZERO(&fds);
- FD_SET(oplock_sock,&fds);
-
- if (koplocks && koplocks->notification_fd != -1) {
- FD_SET(koplocks->notification_fd, &fds);
- }
- if(receive_local_message(&fds, op_break_reply, sizeof(op_break_reply),
+ if(receive_local_message(op_break_reply, sizeof(op_break_reply),
time_left ? time_left * 1000 : 1) == False) {
if(smb_read_error == READ_TIMEOUT) {
if( DEBUGLVL( 0 ) ) {
diff --git a/source/smbd/oplock_irix.c b/source/smbd/oplock_irix.c
index 9ca3ecc2609..3576c768fef 100644
--- a/source/smbd/oplock_irix.c
+++ b/source/smbd/oplock_irix.c
@@ -100,7 +100,7 @@ static BOOL irix_oplock_receive_message(fd_set *fds, char *buffer, int buffer_le
*/
if(read(oplock_pipe_read, &dummy, 1) != 1) {
- DEBUG(0,("receive_local_message: read of kernel notification failed. \
+ DEBUG(0,("irix_oplock_receive_message: read of kernel notification failed. \
Error was %s.\n", strerror(errno) ));
smb_read_error = READ_ERROR;
return False;
@@ -113,7 +113,7 @@ Error was %s.\n", strerror(errno) ));
*/
if(sys_fcntl_ptr(oplock_pipe_read, F_OPLKSTAT, &os) < 0) {
- DEBUG(0,("receive_local_message: fcntl of kernel notification failed. \
+ DEBUG(0,("irix_oplock_receive_message: fcntl of kernel notification failed. \
Error was %s.\n", strerror(errno) ));
if(errno == EAGAIN) {
/*
@@ -132,12 +132,12 @@ Error was %s.\n", strerror(errno) ));
*/
if ((fsp = file_find_di_first((SMB_DEV_T)os.os_dev, (SMB_INO_T)os.os_ino)) == NULL) {
- DEBUG(0,("receive_local_message: unable to find open file with dev = %x, inode = %.0f\n",
+ DEBUG(0,("irix_oplock_receive_message: unable to find open file with dev = %x, inode = %.0f\n",
(unsigned int)os.os_dev, (double)os.os_ino ));
return False;
}
- DEBUG(5,("receive_local_message: kernel oplock break request received for \
+ DEBUG(5,("irix_oplock_receive_message: kernel oplock break request received for \
dev = %x, inode = %.0f\n, file_id = %ul", (unsigned int)fsp->dev, (double)fsp->inode, fsp->file_id ));
/*
@@ -167,19 +167,19 @@ static BOOL irix_set_kernel_oplock(files_struct *fsp, int oplock_type)
{
if (sys_fcntl_long(fsp->fd, F_OPLKREG, oplock_pipe_write) == -1) {
if(errno != EAGAIN) {
- DEBUG(0,("set_file_oplock: Unable to get kernel oplock on file %s, dev = %x, \
+ DEBUG(0,("irix_set_kernel_oplock: Unable to get kernel oplock on file %s, dev = %x, \
inode = %.0f, file_id = %ul. Error was %s\n",
fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode, fsp->file_id,
strerror(errno) ));
} else {
- DEBUG(5,("set_file_oplock: Refused oplock on file %s, fd = %d, dev = %x, \
+ DEBUG(5,("irix_set_kernel_oplock: Refused oplock on file %s, fd = %d, dev = %x, \
inode = %.0f, file_id = %ul. Another process had the file open.\n",
fsp->fsp_name, fsp->fd, (unsigned int)fsp->dev, (double)fsp->inode, fsp->file_id ));
}
return False;
}
- DEBUG(10,("set_file_oplock: got kernel oplock on file %s, dev = %x, inode = %.0f, file_id = %ul\n",
+ DEBUG(10,("irix_set_kernel_oplock: got kernel oplock on file %s, dev = %x, inode = %.0f, file_id = %ul\n",
fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode, fsp->file_id));
return True;
@@ -197,7 +197,7 @@ static void irix_release_kernel_oplock(files_struct *fsp)
* oplock state of this file.
*/
int state = sys_fcntl_long(fsp->fd, F_OPLKACK, -1);
- dbgtext("release_kernel_oplock: file %s, dev = %x, inode = %.0f file_id = %ul, has kernel \
+ dbgtext("irix_release_kernel_oplock: file %s, dev = %x, inode = %.0f file_id = %ul, has kernel \
oplock state of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
(double)fsp->inode, fsp->file_id, state );
}
@@ -207,7 +207,7 @@ oplock state of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
*/
if(sys_fcntl_long(fsp->fd, F_OPLKACK, OP_REVOKE) < 0) {
if( DEBUGLVL( 0 )) {
- dbgtext("release_kernel_oplock: Error when removing kernel oplock on file " );
+ dbgtext("irix_release_kernel_oplock: Error when removing kernel oplock on file " );
dbgtext("%s, dev = %x, inode = %.0f, file_id = %ul. Error was %s\n",
fsp->fsp_name, (unsigned int)fsp->dev,
(double)fsp->inode, fsp->file_id, strerror(errno) );
diff --git a/source/smbd/oplock_linux.c b/source/smbd/oplock_linux.c
index 3f22956aa02..f54c6c83e86 100644
--- a/source/smbd/oplock_linux.c
+++ b/source/smbd/oplock_linux.c
@@ -23,9 +23,9 @@
#if HAVE_KERNEL_OPLOCKS_LINUX
-static VOLATILE sig_atomic_t signals_received;
-static VOLATILE sig_atomic_t signals_processed;
-static VOLATILE sig_atomic_t fd_pending; /* the fd of the current pending signal */
+static SIG_ATOMIC_T signals_received;
+#define FD_PENDING_SIZE 100
+static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
#ifndef F_SETLEASE
#define F_SETLEASE 1024
@@ -53,9 +53,10 @@ static VOLATILE sig_atomic_t fd_pending; /* the fd of the current pending signal
static void signal_handler(int sig, siginfo_t *info, void *unused)
{
- BlockSignals(True, sig);
- fd_pending = (sig_atomic_t)info->si_fd;
- signals_received++;
+ if (signals_received < FD_PENDING_SIZE - 1) {
+ fd_pending_array[signals_received] = (SIG_ATOMIC_T)info->si_fd;
+ signals_received++;
+ } /* Else signal is lost. */
sys_select_signal();
}
@@ -125,20 +126,28 @@ static int linux_setlease(int fd, int leasetype)
static BOOL linux_oplock_receive_message(fd_set *fds, char *buffer, int buffer_len)
{
- BOOL ret = True;
+ int fd;
struct files_struct *fsp;
- if (signals_received == signals_processed)
- return False;
+ BlockSignals(True, RT_SIGNAL_LEASE);
+ fd = fd_pending_array[0];
+ fsp = file_find_fd(fd);
+ fd_pending_array[0] = (SIG_ATOMIC_T)-1;
+ if (signals_received > 1)
+ memmove((void *)&fd_pending_array[0], (void *)&fd_pending_array[1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-1));
+ signals_received--;
+ /* now we can receive more signals */
+ BlockSignals(False, RT_SIGNAL_LEASE);
- if ((fsp = file_find_fd(fd_pending)) == NULL) {
- DEBUG(0,("Invalid file descriptor %d in kernel oplock break!\n", (int)fd_pending));
- ret = False;
- goto out;
+ if (fsp == NULL) {
+ DEBUG(0,("Invalid file descriptor %d in kernel oplock break!\n", (int)fd));
+ return False;
}
- DEBUG(3,("receive_local_message: kernel oplock break request received for \
-dev = %x, inode = %.0f\n", (unsigned int)fsp->dev, (double)fsp->inode ));
+ DEBUG(3,("linux_oplock_receive_message: kernel oplock break request received for \
+dev = %x, inode = %.0f fd = %d, fileid = %lu \n", (unsigned int)fsp->dev, (double)fsp->inode,
+ fd, fsp->file_id));
/*
* Create a kernel oplock break message.
@@ -156,13 +165,7 @@ dev = %x, inode = %.0f\n", (unsigned int)fsp->dev, (double)fsp->inode ));
memcpy(buffer + KERNEL_OPLOCK_BREAK_INODE_OFFSET, (char *)&fsp->inode, sizeof(fsp->inode));
memcpy(buffer + KERNEL_OPLOCK_BREAK_FILEID_OFFSET, (char *)&fsp->file_id, sizeof(fsp->file_id));
- out:
- /* now we can receive more signals */
- fd_pending = (sig_atomic_t)-1;
- signals_processed++;
- BlockSignals(False, RT_SIGNAL_LEASE);
-
- return ret;
+ return True;
}
/****************************************************************************
@@ -172,14 +175,14 @@ dev = %x, inode = %.0f\n", (unsigned int)fsp->dev, (double)fsp->inode ));
static BOOL linux_set_kernel_oplock(files_struct *fsp, int oplock_type)
{
if (linux_setlease(fsp->fd, F_WRLCK) == -1) {
- DEBUG(3,("set_file_oplock: Refused oplock on file %s, fd = %d, dev = %x, \
+ DEBUG(3,("linux_set_kernel_oplock: Refused oplock on file %s, fd = %d, dev = %x, \
inode = %.0f. (%s)\n",
fsp->fsp_name, fsp->fd,
(unsigned int)fsp->dev, (double)fsp->inode, strerror(errno)));
return False;
}
- DEBUG(3,("set_file_oplock: got kernel oplock on file %s, dev = %x, inode = %.0f, file_id = %lu\n",
+ DEBUG(3,("linux_set_kernel_oplock: got kernel oplock on file %s, dev = %x, inode = %.0f, file_id = %lu\n",
fsp->fsp_name, (unsigned int)fsp->dev, (double)fsp->inode, fsp->file_id));
return True;
@@ -197,7 +200,7 @@ static void linux_release_kernel_oplock(files_struct *fsp)
* oplock state of this file.
*/
int state = fcntl(fsp->fd, F_GETLEASE, 0);
- dbgtext("release_kernel_oplock: file %s, dev = %x, inode = %.0f file_id = %lu has kernel \
+ dbgtext("linux_release_kernel_oplock: file %s, dev = %x, inode = %.0f file_id = %lu has kernel \
oplock state of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
(double)fsp->inode, fsp->file_id, state );
}
@@ -207,7 +210,7 @@ oplock state of %x.\n", fsp->fsp_name, (unsigned int)fsp->dev,
*/
if (linux_setlease(fsp->fd, F_UNLCK) == -1) {
if (DEBUGLVL(0)) {
- dbgtext("release_kernel_oplock: Error when removing kernel oplock on file " );
+ dbgtext("linux_release_kernel_oplock: Error when removing kernel oplock on file " );
dbgtext("%s, dev = %x, inode = %.0f, file_id = %lu. Error was %s\n",
fsp->fsp_name, (unsigned int)fsp->dev,
(double)fsp->inode, fsp->file_id, strerror(errno) );
@@ -245,7 +248,7 @@ static BOOL linux_kernel_oplock_parse(char *msg_start, int msg_len, SMB_INO_T *i
static BOOL linux_oplock_msg_waiting(fd_set *fds)
{
- return signals_processed != signals_received;
+ return signals_received != 0;
}
/****************************************************************************
diff --git a/source/smbd/posix_acls.c b/source/smbd/posix_acls.c
index 6a0aa982b42..cbb28359f94 100644
--- a/source/smbd/posix_acls.c
+++ b/source/smbd/posix_acls.c
@@ -409,7 +409,7 @@ static mode_t map_nt_perms( SEC_ACCESS sec_access, int type)
Unpack a SEC_DESC into a UNIX owner and group.
****************************************************************************/
-static BOOL unpack_nt_owners(SMB_STRUCT_STAT *psbuf, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, SEC_DESC *psd)
+static BOOL unpack_nt_owners( int snum, SMB_STRUCT_STAT *psbuf, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, SEC_DESC *psd)
{
DOM_SID owner_sid;
DOM_SID grp_sid;
@@ -440,15 +440,15 @@ static BOOL unpack_nt_owners(SMB_STRUCT_STAT *psbuf, uid_t *puser, gid_t *pgrp,
if (security_info_sent & OWNER_SECURITY_INFORMATION) {
sid_copy(&owner_sid, psd->owner_sid);
if (!sid_to_uid( &owner_sid, puser, &sid_type)) {
-#if ACL_FORCE_UNMAPPABLE
- /* this allows take ownership to work reasonably */
- extern struct current_user current_user;
- *puser = current_user.uid;
-#else
- DEBUG(3,("unpack_nt_owners: unable to validate owner sid for %s.\n",
- sid_string_static(&owner_sid)));
- return False;
-#endif
+ if (lp_force_unknown_acl_user(snum)) {
+ /* this allows take ownership to work reasonably */
+ extern struct current_user current_user;
+ *puser = current_user.uid;
+ } else {
+ DEBUG(3,("unpack_nt_owners: unable to validate owner sid for %s.\n",
+ sid_string_static(&owner_sid)));
+ return False;
+ }
}
}
@@ -460,14 +460,14 @@ static BOOL unpack_nt_owners(SMB_STRUCT_STAT *psbuf, uid_t *puser, gid_t *pgrp,
if (security_info_sent & GROUP_SECURITY_INFORMATION) {
sid_copy(&grp_sid, psd->grp_sid);
if (!sid_to_gid( &grp_sid, pgrp, &sid_type)) {
-#if ACL_FORCE_UNMAPPABLE
- /* this allows take group ownership to work reasonably */
- extern struct current_user current_user;
- *pgrp = current_user.gid;
-#else
- DEBUG(3,("unpack_nt_owners: unable to validate group sid.\n"));
- return False;
-#endif
+ if (lp_force_unknown_acl_user(snum)) {
+ /* this allows take group ownership to work reasonably */
+ extern struct current_user current_user;
+ *pgrp = current_user.gid;
+ } else {
+ DEBUG(3,("unpack_nt_owners: unable to validate group sid.\n"));
+ return False;
+ }
}
}
@@ -480,7 +480,7 @@ static BOOL unpack_nt_owners(SMB_STRUCT_STAT *psbuf, uid_t *puser, gid_t *pgrp,
Ensure the enforced permissions for this share apply.
****************************************************************************/
-static mode_t apply_default_perms(files_struct *fsp, mode_t perms, mode_t type)
+static void apply_default_perms(files_struct *fsp, canon_ace *pace, mode_t type)
{
int snum = SNUM(fsp->conn);
mode_t and_bits = (mode_t)0;
@@ -499,6 +499,10 @@ static mode_t apply_default_perms(files_struct *fsp, mode_t perms, mode_t type)
/* Now bounce them into the S_USR space. */
switch(type) {
case S_IRUSR:
+ /* Ensure owner has read access. */
+ pace->perms |= S_IRUSR;
+ if (fsp->is_directory)
+ pace->perms |= (S_IWUSR|S_IXUSR);
and_bits = unix_perms_to_acl_perms(and_bits, S_IRUSR, S_IWUSR, S_IXUSR);
or_bits = unix_perms_to_acl_perms(or_bits, S_IRUSR, S_IWUSR, S_IXUSR);
break;
@@ -512,7 +516,34 @@ static mode_t apply_default_perms(files_struct *fsp, mode_t perms, mode_t type)
break;
}
- return ((perms & and_bits)|or_bits);
+ pace->perms = ((pace->perms & and_bits)|or_bits);
+}
+
+/****************************************************************************
+ Check if a given uid/SID is in a group gid/SID. This is probably very
+ expensive and will need optimisation. A *lot* of optimisation :-). JRA.
+****************************************************************************/
+
+static BOOL uid_entry_in_group( canon_ace *uid_ace, canon_ace *group_ace )
+{
+ extern DOM_SID global_sid_World;
+ fstring u_name;
+ fstring g_name;
+
+ /* "Everyone" always matches every uid. */
+
+ if (sid_equal(&group_ace->trustee, &global_sid_World))
+ return True;
+
+ fstrcpy(u_name, uidtoname(uid_ace->unix_ug.uid));
+ fstrcpy(g_name, gidtoname(group_ace->unix_ug.gid));
+
+ /*
+ * Due to the winbind interfaces we need to do this via names,
+ * not uids/gids.
+ */
+
+ return user_in_group_list(u_name, g_name );
}
/****************************************************************************
@@ -537,24 +568,16 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
BOOL got_user = False;
BOOL got_grp = False;
BOOL got_other = False;
+ canon_ace *pace_other = NULL;
+ canon_ace *pace_group = NULL;
for (pace = *pp_ace; pace; pace = pace->next) {
if (pace->type == SMB_ACL_USER_OBJ) {
- if (setting_acl) {
- /* Ensure owner has read access. */
- pace->perms |= S_IRUSR;
- if (fsp->is_directory)
- pace->perms |= (S_IWUSR|S_IXUSR);
-
- /*
- * Ensure create mask/force create mode is respected on set.
- */
-
- pace->perms = apply_default_perms(fsp, pace->perms, S_IRUSR);
- }
-
+ if (setting_acl)
+ apply_default_perms(fsp, pace, S_IRUSR);
got_user = True;
+
} else if (pace->type == SMB_ACL_GROUP_OBJ) {
/*
@@ -562,8 +585,10 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
*/
if (setting_acl)
- pace->perms = apply_default_perms(fsp, pace->perms, S_IRGRP);
+ apply_default_perms(fsp, pace, S_IRGRP);
got_grp = True;
+ pace_group = pace;
+
} else if (pace->type == SMB_ACL_OTHER) {
/*
@@ -571,8 +596,9 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
*/
if (setting_acl)
- pace->perms = apply_default_perms(fsp, pace->perms, S_IROTH);
+ apply_default_perms(fsp, pace, S_IROTH);
got_other = True;
+ pace_other = pace;
}
}
@@ -587,9 +613,21 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
pace->owner_type = UID_ACE;
pace->unix_ug.uid = pst->st_uid;
pace->trustee = *pfile_owner_sid;
- pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRUSR, S_IWUSR, S_IXUSR);
pace->attr = ALLOW_ACE;
+ if (setting_acl) {
+ /* If we only got an "everyone" perm, just use that. */
+ if (!got_grp && got_other)
+ pace->perms = pace_other->perms;
+ else if (got_grp && uid_entry_in_group(pace, pace_group))
+ pace->perms = pace_group->perms;
+ else
+ pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRUSR, S_IWUSR, S_IXUSR);
+ apply_default_perms(fsp, pace, S_IRUSR);
+ } else {
+ pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRUSR, S_IWUSR, S_IXUSR);
+ }
+
DLIST_ADD(*pp_ace, pace);
}
@@ -604,8 +642,17 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
pace->owner_type = GID_ACE;
pace->unix_ug.uid = pst->st_gid;
pace->trustee = *pfile_grp_sid;
- pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRGRP, S_IWGRP, S_IXGRP);
pace->attr = ALLOW_ACE;
+ if (setting_acl) {
+ /* If we only got an "everyone" perm, just use that. */
+ if (got_other)
+ pace->perms = pace_other->perms;
+ else
+ pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRGRP, S_IWGRP, S_IXGRP);
+ apply_default_perms(fsp, pace, S_IRGRP);
+ } else {
+ pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IRGRP, S_IWGRP, S_IXGRP);
+ }
DLIST_ADD(*pp_ace, pace);
}
@@ -621,8 +668,9 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace,
pace->owner_type = WORLD_ACE;
pace->unix_ug.world = -1;
pace->trustee = global_sid_World;
- pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IROTH, S_IWOTH, S_IXOTH);
pace->attr = ALLOW_ACE;
+ pace->perms = unix_perms_to_acl_perms(pst->st_mode, S_IROTH, S_IWOTH, S_IXOTH);
+ apply_default_perms(fsp, pace, S_IROTH);
DLIST_ADD(*pp_ace, pace);
}
@@ -932,33 +980,6 @@ Deny entry after Allow entry. Failing to set on file %s.\n", fsp->fsp_name ));
}
/****************************************************************************
- Check if a given uid/SID is in a group gid/SID. This is probably very
- expensive and will need optimisation. A *lot* of optimisation :-). JRA.
-****************************************************************************/
-
-static BOOL uid_entry_in_group( canon_ace *uid_ace, canon_ace *group_ace )
-{
- extern DOM_SID global_sid_World;
- fstring u_name;
- fstring g_name;
-
- /* "Everyone" always matches every uid. */
-
- if (sid_equal(&group_ace->trustee, &global_sid_World))
- return True;
-
- fstrcpy(u_name, uidtoname(uid_ace->unix_ug.uid));
- fstrcpy(g_name, gidtoname(group_ace->unix_ug.gid));
-
- /*
- * Due to the winbind interfaces we need to do this via names,
- * not uids/gids.
- */
-
- return user_in_group_list(u_name, g_name );
-}
-
-/****************************************************************************
ASCII art time again... JRA :-).
We have 3 cases to process when moving from an NT ACL to a POSIX ACL. Firstly,
@@ -2026,28 +2047,28 @@ static int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_
/* try the direct way first */
ret = vfs_chown(conn, fname, uid, gid);
- if (ret == 0) return 0;
+ if (ret == 0)
+ return 0;
if(!CAN_WRITE(conn) || !lp_dos_filemode(SNUM(conn)))
return -1;
- if (vfs_stat(conn,fname,&st)) {
+ if (vfs_stat(conn,fname,&st))
return -1;
- }
fsp = open_file_fchmod(conn,fname,&st);
- if (!fsp) {
+ if (!fsp)
return -1;
- }
/* only allow chown to the current user. This is more secure,
and also copes with the case where the SID in a take ownership ACL is
a local SID on the users workstation
*/
uid = current_user.uid;
-
+
become_root();
- ret = vfswrap_fchown(fsp, fsp->fd, uid, gid);
+ /* Keep the current file gid the same. */
+ ret = vfswrap_fchown(fsp, fsp->fd, uid, (gid_t)-1);
unbecome_root();
close_file_fchmod(fsp);
@@ -2099,7 +2120,7 @@ BOOL set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
* Unpack the user/group/world id's.
*/
- if (!unpack_nt_owners( &sbuf, &user, &grp, security_info_sent, psd))
+ if (!unpack_nt_owners( SNUM(conn), &sbuf, &user, &grp, security_info_sent, psd))
return False;
/*
@@ -2367,6 +2388,7 @@ BOOL directory_has_default_acl(connection_struct *conn, const char *fname)
if (dir_acl != NULL && (conn->vfs_ops.sys_acl_get_entry(conn, dir_acl, SMB_ACL_FIRST_ENTRY, &entry) == 1))
has_acl = True;
- conn->vfs_ops.sys_acl_free_acl(conn, dir_acl);
+ if (dir_acl)
+ conn->vfs_ops.sys_acl_free_acl(conn, dir_acl);
return has_acl;
}
diff --git a/source/smbd/process.c b/source/smbd/process.c
index e882853e6de..4eaa396f6b4 100644
--- a/source/smbd/process.c
+++ b/source/smbd/process.c
@@ -46,8 +46,8 @@ extern int last_message;
extern int global_oplock_break;
extern userdom_struct current_user_info;
extern int smb_read_error;
-extern VOLATILE sig_atomic_t reload_after_sighup;
-extern VOLATILE sig_atomic_t got_sig_term;
+SIG_ATOMIC_T reload_after_sighup;
+SIG_ATOMIC_T got_sig_term;
extern BOOL global_machine_password_needs_changing;
extern fstring global_myworkgroup;
extern pstring global_myname;
@@ -113,10 +113,12 @@ BOOL push_oplock_pending_smb_message(char *buf, int msg_len)
oplock messages, change notify events etc.
****************************************************************************/
-static void async_processing(fd_set *fds, char *buffer, int buffer_len)
+static void async_processing(char *buffer, int buffer_len)
{
+ DEBUG(10,("async_processing: Doing async processing.\n"));
+
/* check for oplock messages (both UDP and kernel) */
- if (receive_local_message(fds, buffer, buffer_len, 0)) {
+ if (receive_local_message(buffer, buffer_len, 1)) {
process_local_message(buffer, buffer_len);
}
@@ -197,6 +199,27 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
*/
FD_ZERO(&fds);
+
+ /*
+ * Ensure we process oplock break messages by preference.
+ * We have to do this before the select, after the select
+ * and if the select returns EINTR. This is due to the fact
+ * that the selects called from async_processing can eat an EINTR
+ * caused by a signal (we can't take the break message there).
+ * This is hideously complex - *MUST* be simplified for 3.0 ! JRA.
+ */
+
+ if (oplock_message_waiting(&fds)) {
+ DEBUG(10,("receive_message_or_smb: oplock_message is waiting.\n"));
+ async_processing(buffer, buffer_len);
+ /*
+ * After async processing we must go and do the select again, as
+ * the state of the flag in fds for the server file descriptor is
+ * indeterminate - we may have done I/O on it in the oplock processing. JRA.
+ */
+ goto again;
+ }
+
FD_SET(smbd_server_fd(),&fds);
maxfd = setup_oplock_select_set(&fds);
@@ -210,7 +233,7 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
is the best we can do until the oplock code knows more about
signals */
if (selrtn == -1 && errno == EINTR) {
- async_processing(&fds, buffer, buffer_len);
+ async_processing(buffer, buffer_len);
/*
* After async processing we must go and do the select again, as
* the state of the flag in fds for the server file descriptor is
@@ -240,7 +263,7 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
if (oplock_message_waiting(&fds)) {
DEBUG(10,("receive_message_or_smb: oplock_message is waiting.\n"));
- async_processing(&fds, buffer, buffer_len);
+ async_processing(buffer, buffer_len);
/*
* After async processing we must go and do the select again, as
* the state of the flag in fds for the server file descriptor is
@@ -280,7 +303,6 @@ BOOL receive_next_smb(char *inbuf, int bufsize, int timeout)
void respond_to_all_remaining_local_messages(void)
{
char buffer[1024];
- fd_set fds;
/*
* Assert we have no exclusive open oplocks.
@@ -293,23 +315,12 @@ void respond_to_all_remaining_local_messages(void)
}
/*
- * Setup the select read fd set.
- */
-
- FD_ZERO(&fds);
- if(!setup_oplock_select_set(&fds))
- return;
-
- /*
* Keep doing receive_local_message with a 1 ms timeout until
* we have no more messages.
*/
- while(receive_local_message(&fds, buffer, sizeof(buffer), 1)) {
+ while(receive_local_message(buffer, sizeof(buffer), 1)) {
/* Deal with oplock break requests from other smbd's. */
process_local_message(buffer, sizeof(buffer));
-
- FD_ZERO(&fds);
- (void)setup_oplock_select_set(&fds);
}
return;
diff --git a/source/smbd/quotas.c b/source/smbd/quotas.c
index 5e744bc97dd..4cfa05b1997 100644
--- a/source/smbd/quotas.c
+++ b/source/smbd/quotas.c
@@ -42,28 +42,15 @@ BOOL disk_quotas_vxfs(const pstring name, char *path, SMB_BIG_UINT *bsize, SMB_B
#ifdef LINUX
#include <sys/types.h>
-#include <asm/types.h>
+#include <mntent.h>
/*
* This shouldn't be neccessary - it should be /usr/include/sys/quota.h
- * Unfortunately, RH7.1 ships with a different quota system using struct mem_dqblk
- * rather than the struct dqblk defined in /usr/include/sys/quota.h.
- * This means we must include linux/quota.h to have a hope of working on
- * RH7.1 systems. And it also means this breaks if the kernel is upgraded
- * to a Linus 2.4.x (where x > the minor number shipped with RH7.1) until
- * Linus synchronises with the AC patches. Sometimes I *hate* Linux :-). JRA.
+ * So we include all the files has *should* be in the system into a large,
+ * grungy samba_linux_quoatas.h Sometimes I *hate* Linux :-). JRA.
*/
-#include <linux/quota.h>
-#ifdef HAVE_LINUX_XQM_H
-#include <linux/xqm.h>
-#endif
-
-#include <mntent.h>
-#include <linux/unistd.h>
-
-
-#define LINUX_QUOTAS_2
+#include "samba_linux_quota.h"
typedef struct _LINUX_SMB_DISK_QUOTA {
SMB_BIG_UINT bsize;
@@ -82,7 +69,6 @@ typedef struct _LINUX_SMB_DISK_QUOTA {
static int get_smb_linux_xfs_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QUOTA *dp)
{
int ret = -1;
-#ifdef HAVE_LINUX_XQM_H
struct fs_disk_quota D;
ZERO_STRUCT(D);
@@ -96,7 +82,6 @@ static int get_smb_linux_xfs_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QU
dp->isoftlimit = (SMB_BIG_UINT)D.d_ino_softlimit;
dp->curinodes = (SMB_BIG_UINT)D.d_icount;
dp->curblocks = (SMB_BIG_UINT)D.d_bcount;
-#endif
return ret;
}
@@ -104,23 +89,36 @@ static int get_smb_linux_xfs_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QU
Abstract out the old and new Linux quota get calls.
****************************************************************************/
-static int get_smb_linux_vfs_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QUOTA *dp)
+static int get_smb_linux_v1_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QUOTA *dp)
{
+ struct v1_kern_dqblk D;
int ret;
-#ifdef LINUX_QUOTAS_1
- struct dqblk D;
+
ZERO_STRUCT(D);
- dp->bsize = (SMB_BIG_UINT)1024;
-#else /* LINUX_QUOTAS_2 */
- struct mem_dqblk D;
+ dp->bsize = (SMB_BIG_UINT)QUOTABLOCK_SIZE;
+
+ if ((ret = quotactl(QCMD(Q_V1_GETQUOTA,USRQUOTA), path, euser_id, (caddr_t)&D)))
+ return -1;
+
+ dp->softlimit = (SMB_BIG_UINT)D.dqb_bsoftlimit;
+ dp->hardlimit = (SMB_BIG_UINT)D.dqb_bhardlimit;
+ dp->ihardlimit = (SMB_BIG_UINT)D.dqb_ihardlimit;
+ dp->isoftlimit = (SMB_BIG_UINT)D.dqb_isoftlimit;
+ dp->curinodes = (SMB_BIG_UINT)D.dqb_curinodes;
+ dp->curblocks = (SMB_BIG_UINT)D.dqb_curblocks;
+
+ return 0;
+}
+
+static int get_smb_linux_v2_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QUOTA *dp)
+{
+ struct v2_kern_dqblk D;
+ int ret;
+
ZERO_STRUCT(D);
-#ifndef QUOTABLOCK_SIZE
-#define QUOTABLOCK_SIZE 1024
-#endif
dp->bsize = (SMB_BIG_UINT)QUOTABLOCK_SIZE;
-#endif
- if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), path, euser_id, (caddr_t)&D)))
+ if ((ret = quotactl(QCMD(Q_V2_GETQUOTA,USRQUOTA), path, euser_id, (caddr_t)&D)))
return -1;
dp->softlimit = (SMB_BIG_UINT)D.dqb_bsoftlimit;
@@ -128,18 +126,38 @@ static int get_smb_linux_vfs_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QU
dp->ihardlimit = (SMB_BIG_UINT)D.dqb_ihardlimit;
dp->isoftlimit = (SMB_BIG_UINT)D.dqb_isoftlimit;
dp->curinodes = (SMB_BIG_UINT)D.dqb_curinodes;
+ dp->curblocks = ((SMB_BIG_UINT)D.dqb_curspace) / dp->bsize;
-#ifdef LINUX_QUOTAS_1
- dp->curblocks = (SMB_BIG_UINT)D.dqb_curblocks;
-#else /* LINUX_QUOTAS_2 */
- dp->curblocks = ((SMB_BIG_UINT)D.dqb_curspace)/ dp->bsize;
-#endif
+ return 0;
+}
+
+/****************************************************************************
+ Brand-new generic quota interface.
+****************************************************************************/
+
+static int get_smb_linux_gen_quota(char *path, uid_t euser_id, LINUX_SMB_DISK_QUOTA *dp)
+{
+ struct if_dqblk D;
+ int ret;
+
+ ZERO_STRUCT(D);
+ dp->bsize = (SMB_BIG_UINT)QUOTABLOCK_SIZE;
+
+ if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), path, euser_id, (caddr_t)&D)))
+ return -1;
+
+ dp->softlimit = (SMB_BIG_UINT)D.dqb_bsoftlimit;
+ dp->hardlimit = (SMB_BIG_UINT)D.dqb_bhardlimit;
+ dp->ihardlimit = (SMB_BIG_UINT)D.dqb_ihardlimit;
+ dp->isoftlimit = (SMB_BIG_UINT)D.dqb_isoftlimit;
+ dp->curinodes = (SMB_BIG_UINT)D.dqb_curinodes;
+ dp->curblocks = ((SMB_BIG_UINT)D.dqb_curspace) / dp->bsize;
return 0;
}
/****************************************************************************
-try to get the disk space from disk quotas (LINUX version)
+ Try to get the disk space from disk quotas (LINUX version).
****************************************************************************/
BOOL disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize)
@@ -182,10 +200,18 @@ BOOL disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB
save_re_uid();
set_effective_uid(0);
- if (strcmp(mnt->mnt_type, "xfs") == 0)
+
+ if (strcmp(mnt->mnt_type, "xfs")) {
+ r=get_smb_linux_gen_quota(mnt->mnt_fsname, euser_id, &D);
+ if (r == -1) {
+ r=get_smb_linux_v2_quota(mnt->mnt_fsname, euser_id, &D);
+ if (r == -1)
+ r=get_smb_linux_v1_quota(mnt->mnt_fsname, euser_id, &D);
+ }
+ } else {
r=get_smb_linux_xfs_quota(mnt->mnt_fsname, euser_id, &D);
- else
- r=get_smb_linux_vfs_quota(mnt->mnt_fsname, euser_id, &D);
+ }
+
restore_re_uid();
/* Use softlimit to determine disk space, except when it has been exceeded */
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index 562b0492ca0..78294952c18 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -553,6 +553,15 @@ static int smb_delete_user(char *unix_user)
pstring del_script;
int ret;
+ /*
+ * Sanity check -- do not delete 'root' account
+ */
+
+ if (StrCaseCmp("root", unix_user) == 0) {
+ DEBUG(0,("smb_delete_user: Will not delete the [%s] user account!\n", unix_user));
+ return -1;
+ }
+
pstrcpy(del_script, lp_deluser_script());
if (! *del_script)
return -1;
@@ -2052,8 +2061,8 @@ NTSTATUS unlink_internals(connection_struct *conn, int dirtype, char *name)
* Tine Smukavec <valentin.smukavec@hermes.si>.
*/
- if (!rc && is_mangled(mask))
- check_mangled_cache( mask );
+ if (!rc && mangle_is_mangled(mask))
+ mangle_check_cache( mask );
has_wild = ms_has_wild(mask);
@@ -3764,8 +3773,8 @@ NTSTATUS rename_internals(connection_struct *conn, char *name, char *newname, BO
* Tine Smukavec <valentin.smukavec@hermes.si>.
*/
- if (!rc && is_mangled(mask))
- check_mangled_cache( mask );
+ if (!rc && mangle_is_mangled(mask))
+ mangle_check_cache( mask );
has_wild = ms_has_wild(mask);
@@ -3776,7 +3785,7 @@ NTSTATUS rename_internals(connection_struct *conn, char *name, char *newname, BO
/*
* No wildcards - just process the one file.
*/
- BOOL is_short_name = is_8_3(name, True);
+ BOOL is_short_name = mangle_is_8_3(name, True);
/* Add a terminating '/' to the directory name. */
pstrcat(directory,"/");
@@ -3792,7 +3801,7 @@ NTSTATUS rename_internals(connection_struct *conn, char *name, char *newname, BO
}
DEBUG(3,("rename_internals: case_sensitive = %d, case_preserve = %d, short case preserve = %d, \
-directory = %s, newname = %s, newname_last_component = %s, is_8_3 = %d\n",
+directory = %s, newname = %s, newname_last_component = %s, mangle_is_8_3 = %d\n",
case_sensitive, case_preserve, short_case_preserve, directory,
newname, newname_last_component, is_short_name));
@@ -4173,8 +4182,8 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
* Tine Smukavec <valentin.smukavec@hermes.si>.
*/
- if (!rc && is_mangled(mask))
- check_mangled_cache( mask );
+ if (!rc && mangle_is_mangled(mask))
+ mangle_check_cache( mask );
has_wild = ms_has_wild(mask);
diff --git a/source/smbd/server.c b/source/smbd/server.c
index b18921e1af3..bfee036dc5a 100644
--- a/source/smbd/server.c
+++ b/source/smbd/server.c
@@ -64,7 +64,7 @@ void smbd_set_server_fd(int fd)
Terminate signal.
****************************************************************************/
-VOLATILE sig_atomic_t got_sig_term = 0;
+SIG_ATOMIC_T got_sig_term = 0;
static void sig_term(void)
{
@@ -76,7 +76,7 @@ static void sig_term(void)
Catch a sighup.
****************************************************************************/
-VOLATILE sig_atomic_t reload_after_sighup = 0;
+SIG_ATOMIC_T reload_after_sighup = 0;
static void sig_hup(int sig)
{
@@ -382,7 +382,7 @@ BOOL reload_services(BOOL test)
}
}
- reset_mangled_cache();
+ mangle_reset_cache();
reset_stat_cache();
/* this forces service parameters to be flushed */
diff --git a/source/smbd/service.c b/source/smbd/service.c
index 22aecdb4929..4d40d8dec1b 100644
--- a/source/smbd/service.c
+++ b/source/smbd/service.c
@@ -41,7 +41,6 @@ extern fstring remote_machine;
BOOL set_current_service(connection_struct *conn,BOOL do_chdir)
{
- extern char magic_char;
static connection_struct *last_conn;
int snum;
@@ -72,7 +71,6 @@ BOOL set_current_service(connection_struct *conn,BOOL do_chdir)
short_case_preserve = lp_shortpreservecase(snum);
case_mangle = lp_casemangle(snum);
case_sensitive = lp_casesensitive(snum);
- magic_char = lp_magicchar(snum);
use_mangled_map = (*lp_mangled_map(snum) ? True:False);
return(True);
}
@@ -227,7 +225,9 @@ connection_struct *make_connection(char *service,char *user,char *password, int
BOOL guest = False;
BOOL force = False;
connection_struct *conn;
+#if !CHECK_PATH_ON_TCONX
struct stat st;
+#endif
uid_t euid;
int ret;
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 9af0b0ddb58..5e74845f4ef 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -399,7 +399,7 @@ static mode_t unix_perms_from_wire( connection_struct *conn, SMB_STRUCT_STAT *ps
ret |= ((perms & UNIX_SET_GID ) ? S_ISGID : 0);
#endif
#ifdef S_ISUID
- ret |= ((perms & UNIX_SET_UID ) ? S_ISVTX : 0);
+ ret |= ((perms & UNIX_SET_UID ) ? S_ISUID : 0);
#endif
if (VALID_STAT(*pst) && S_ISDIR(pst->st_mode)) {
@@ -417,6 +417,21 @@ static mode_t unix_perms_from_wire( connection_struct *conn, SMB_STRUCT_STAT *ps
}
/****************************************************************************
+checks for SMB_TIME_NO_CHANGE and if not found
+calls interpret_long_date
+****************************************************************************/
+time_t interpret_long_unix_date(char *p)
+{
+ DEBUG(1,("interpret_long_unix_date\n"));
+ if(IVAL(p,0) == SMB_TIME_NO_CHANGE_LO &&
+ IVAL(p,4) == SMB_TIME_NO_CHANGE_HI) {
+ return -1;
+ } else {
+ return interpret_long_date(p);
+ }
+}
+
+/****************************************************************************
Get a level dependent lanman2 dir entry.
****************************************************************************/
@@ -490,7 +505,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
if(!(got_match = *got_exact_match = exact_match(fname, mask, case_sensitive)))
got_match = mask_match(fname, mask, case_sensitive);
- if(!got_match && !is_8_3(fname, False)) {
+ if(!got_match && !mangle_is_8_3(fname, False)) {
/*
* It turns out that NT matches wildcards against
@@ -501,7 +516,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
pstring newname;
pstrcpy( newname, fname);
- name_map_mangle( newname, True, False, SNUM(conn));
+ mangle_map( newname, True, False, SNUM(conn));
if(!(got_match = *got_exact_match = exact_match(newname, mask, case_sensitive)))
got_match = mask_match(newname, mask, case_sensitive);
}
@@ -571,7 +586,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
}
}
- name_map_mangle(fname,False,True,SNUM(conn));
+ mangle_map(fname,False,True,SNUM(conn));
p = pdata;
nameptr = p;
@@ -648,7 +663,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
break;
case SMB_FIND_FILE_BOTH_DIRECTORY_INFO:
- was_8_3 = is_8_3(fname, True);
+ was_8_3 = mangle_is_8_3(fname, True);
len = 94+strlen(fname);
len = (len + 3) & ~3;
SIVAL(p,0,len); p += 4;
@@ -665,8 +680,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
SIVAL(p,0,0); p += 4;
if (!was_8_3) {
fstrcpy(p+2,fname);
- if(!name_map_mangle(p+2,True,True,SNUM(conn)))
- (p+2)[12] = 0;
+ mangle_map(p+2,True,True,SNUM(conn));
strupper(p+2);
SSVAL(p, 0, strlen(p+2));
} else {
@@ -1031,8 +1045,8 @@ close_if_end = %d requires_resume_key = %d level = %d, max_data_bytes = %d\n",
* (see PR#13758). JRA.
*/
- if(!is_8_3( mask, False))
- name_map_mangle(mask, True, True, SNUM(conn));
+ if(!mangle_is_8_3_wildcards( mask, False))
+ mangle_map(mask, True, True, SNUM(conn));
return(-1);
}
@@ -1194,7 +1208,7 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
*/
if(dname != NULL)
- name_map_mangle( dname, False, True, SNUM(conn));
+ mangle_map( dname, False, True, SNUM(conn));
if(dname && strcsequal( resume_name, dname)) {
SeekDir(dirptr, current_pos+1);
@@ -1220,7 +1234,7 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
*/
if(dname != NULL)
- name_map_mangle( dname, False, True, SNUM(conn));
+ mangle_map( dname, False, True, SNUM(conn));
if(dname && strcsequal( resume_name, dname)) {
SeekDir(dirptr, current_pos+1);
@@ -1424,6 +1438,12 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf
SMB_BIG_UINT dfree,dsize,bsize,secs_per_unit;;
data_len = 24;
conn->vfs_ops.disk_free(conn,".",False,&bsize,&dfree,&dsize);
+ if (bsize < 1024) {
+ SMB_BIG_UINT factor = 1024/bsize;
+ bsize = 1024;
+ dsize /= factor;
+ dfree /= factor;
+ }
secs_per_unit = 2;
SBIG_UINT(pdata,0,dsize*(bsize/(512*secs_per_unit)));
SBIG_UINT(pdata,8,dfree*(bsize/(512*secs_per_unit)));
@@ -1437,11 +1457,11 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf
SMB_BIG_UINT dfree,dsize,bsize;
data_len = 32;
conn->vfs_ops.disk_free(conn,".",False,&bsize,&dfree,&dsize);
- SBIG_UINT(pdata,0,dsize);
- SBIG_UINT(pdata,8,dsize);
- SBIG_UINT(pdata,16,dfree);
- SIVAL(pdata,24,bsize/512);
- SIVAL(pdata,28,512);
+ SBIG_UINT(pdata,0,dsize); /* Total Allocation units. */
+ SBIG_UINT(pdata,8,dfree); /* Caller available allocation units. */
+ SBIG_UINT(pdata,16,dfree); /* Actual available allocation units. */
+ SIVAL(pdata,24,bsize/512); /* Sectors per allocation unit. */
+ SIVAL(pdata,28,512); /* Bytes per sector. */
break;
}
@@ -1795,9 +1815,8 @@ static int call_trans2qfilepathinfo(connection_struct *conn, char *inbuf, char *
pstring short_name;
pstrcpy(short_name,p);
/* Mangle if not already 8.3 */
- if(!is_8_3(short_name, True)) {
- if(!name_map_mangle(short_name,True,True,SNUM(conn)))
- *short_name = '\0';
+ if(!mangle_is_8_3(short_name, True)) {
+ mangle_map(short_name,True,True,SNUM(conn));
}
strupper(short_name);
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2)|FLAGS2_UNICODE_STRINGS);
@@ -2355,10 +2374,10 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char
SSVAL(params,0,0);
- if (fsp) {
+ if (fsp) {
/* the pending modtime overrides the current modtime */
sbuf.st_mtime = fsp->pending_modtime;
- }
+ }
size = sbuf.st_size;
tvs.modtime = sbuf.st_mtime;
@@ -2369,12 +2388,6 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char
set_owner = VALID_STAT(sbuf) ? sbuf.st_uid : (uid_t)SMB_UID_NO_CHANGE;
set_grp = VALID_STAT(sbuf) ? sbuf.st_gid : (gid_t)SMB_GID_NO_CHANGE;
- if (total_data > 4 && IVAL(pdata,0) == total_data) {
- /* uggh, EAs for OS2 */
- DEBUG(4,("Rejecting EA request with total_data=%d\n",total_data));
- return ERROR_DOS(ERRDOS,ERReasnotsupported);
- }
-
switch (info_level) {
case SMB_INFO_STANDARD:
case SMB_INFO_QUERY_EA_SIZE:
@@ -2575,16 +2588,19 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char
if (total_data < 100)
return(ERROR_DOS(ERRDOS,ERRinvalidparam));
- size=IVAL(pdata,0); /* first 8 Bytes are size */
+ if(IVAL(pdata, 0) != SMB_SIZE_NO_CHANGE_LO &&
+ IVAL(pdata, 4) != SMB_SIZE_NO_CHANGE_HI) {
+ size=IVAL(pdata,0); /* first 8 Bytes are size */
#ifdef LARGE_SMB_OFF_T
- size |= (((SMB_OFF_T)IVAL(pdata,4)) << 32);
+ size |= (((SMB_OFF_T)IVAL(pdata,4)) << 32);
#else /* LARGE_SMB_OFF_T */
- if (IVAL(pdata,4) != 0) /* more than 32 bits? */
- return ERROR_DOS(ERRDOS,ERRunknownlevel);
+ if (IVAL(pdata,4) != 0) /* more than 32 bits? */
+ return ERROR_DOS(ERRDOS,ERRunknownlevel);
#endif /* LARGE_SMB_OFF_T */
+ }
pdata+=24; /* ctime & st_blocks are not changed */
- tvs.actime = interpret_long_date(pdata); /* access_time */
- tvs.modtime = interpret_long_date(pdata+8); /* modification_time */
+ tvs.actime = interpret_long_unix_date(pdata); /* access_time */
+ tvs.modtime = interpret_long_unix_date(pdata+8); /* modification_time */
pdata+=16;
set_owner = (uid_t)IVAL(pdata,0);
pdata += 8;
@@ -2656,7 +2672,7 @@ size = %.0f, uid = %u, gid = %u, raw perms = 0%o\n",
if (raw_unixmode != SMB_MODE_NO_CHANGE) {
DEBUG(10,("call_trans2setfilepathinfo: SMB_SET_FILE_UNIX_BASIC setting mode 0%o for file %s\n",
- unixmode, fname ));
+ (unsigned int)unixmode, fname ));
if (vfs_chmod(conn,fname,unixmode) != 0)
return(UNIXERROR(ERRDOS,ERRnoaccess));
}
diff --git a/source/smbd/uid.c b/source/smbd/uid.c
index 89d89b33c36..b94fc05875d 100644
--- a/source/smbd/uid.c
+++ b/source/smbd/uid.c
@@ -114,8 +114,10 @@ BOOL change_to_user(connection_struct *conn, uint16 vuid)
return(True);
} else if ((current_user.conn == conn) &&
(vuser != 0) && (current_user.vuid == vuid) &&
- (current_user.uid == vuser->uid)) {
+ (current_user.uid == vuser->uid))
+ {
DEBUG(4,("change_to_user: Skipping user change - already user\n"));
+ return True;
}
snum = SNUM(conn);
diff --git a/source/smbd/vfs-wrap.c b/source/smbd/vfs-wrap.c
index 4545671de94..2d7cf05bf9b 100644
--- a/source/smbd/vfs-wrap.c
+++ b/source/smbd/vfs-wrap.c
@@ -409,6 +409,7 @@ int vfswrap_chown(connection_struct *conn, const char *path, uid_t uid, gid_t gi
int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid)
{
+#ifdef HAVE_FCHOWN
int result;
START_PROFILE(syscall_fchown);
@@ -416,6 +417,10 @@ int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid)
result = fchown(fd, uid, gid);
END_PROFILE(syscall_fchown);
return result;
+#else
+ errno = ENOSYS;
+ return -1;
+#endif
}
int vfswrap_chdir(connection_struct *conn, const char *path)
diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c
index c937090de4d..14e1d4a24f7 100644
--- a/source/tdb/tdb.c
+++ b/source/tdb/tdb.c
@@ -412,6 +412,16 @@ static int rec_free_read(TDB_CONTEXT *tdb, tdb_off off, struct list_struct *rec)
{
if (tdb_read(tdb, off, rec, sizeof(*rec),DOCONV()) == -1)
return -1;
+
+ if (rec->magic == TDB_MAGIC) {
+ /* this happens when a app is showdown while deleting a record - we should
+ not completely fail when this happens */
+ TDB_LOG((tdb, 0,"rec_free_read non-free magic at offset=%d - fixing\n",
+ rec->magic, off));
+ rec->magic = TDB_FREE_MAGIC;
+ tdb_write(tdb, off, rec, sizeof(*rec));
+ }
+
if (rec->magic != TDB_FREE_MAGIC) {
TDB_LOG((tdb, 0,"rec_free_read bad magic 0x%x at offset=%d\n",
rec->magic, off));
diff --git a/source/utils/make_printerdef.c b/source/utils/make_printerdef.c
index f5d40ea3f00..621dff5b103 100644
--- a/source/utils/make_printerdef.c
+++ b/source/utils/make_printerdef.c
@@ -541,6 +541,10 @@ int main(int argc, char *argv[])
char *short_desc;
FILE *inf_file;
+ fprintf( stderr, "This tool has been deprecated in favor of the new printer administration\n");
+ fprintf( stderr, "model included in Samba 2.2. Please see the HOWTO in docs/textdocs/printer_driver2.html\n");
+ fprintf( stderr, "for details.\n");
+
if (argc!=3)
{
usage(argv[0]);
diff --git a/source/utils/nmblookup.c b/source/utils/nmblookup.c
index a134b218f61..4fffed74fd9 100644
--- a/source/utils/nmblookup.c
+++ b/source/utils/nmblookup.c
@@ -26,6 +26,7 @@
extern BOOL AllowDebugChange;
+static BOOL give_flags = False;
static BOOL use_bcast = True;
static BOOL got_bcast = False;
static struct in_addr bcast_addr;
@@ -64,6 +65,7 @@ static void usage(void)
printf("Version %s\n",VERSION);
printf("\t-d debuglevel set the debuglevel\n");
printf("\t-B broadcast address the address to use for broadcasts\n");
+ printf("\t-f lists flags returned from a name query\n");
printf("\t-U unicast address the address to use for unicast\n");
printf("\t-M searches for a master browser\n");
printf("\t-R set recursion desired in packet\n");
@@ -100,6 +102,24 @@ static char *node_status_flags(unsigned char flags)
}
/****************************************************************************
+turn the NMB Query flags into a string
+****************************************************************************/
+static char *query_flags(int flags)
+{
+ static fstring ret1;
+ fstrcpy(ret1, "");
+
+ if (flags & NM_FLAGS_RS) fstrcat(ret1, "Response ");
+ if (flags & NM_FLAGS_AA) fstrcat(ret1, "Authoritative ");
+ if (flags & NM_FLAGS_TC) fstrcat(ret1, "Truncated ");
+ if (flags & NM_FLAGS_RD) fstrcat(ret1, "Recursion_Desired ");
+ if (flags & NM_FLAGS_RA) fstrcat(ret1, "Recursion_Available ");
+ if (flags & NM_FLAGS_B) fstrcat(ret1, "Broadcast ");
+
+ return ret1;
+}
+
+/****************************************************************************
do a node status query
****************************************************************************/
static void do_node_status(int fd, char *name, int type, struct in_addr ip)
@@ -133,14 +153,14 @@ send out one query
****************************************************************************/
static BOOL query_one(char *lookup, unsigned int lookup_type)
{
- int j, count;
+ int j, count, flags;
struct in_addr *ip_list=NULL;
if (got_bcast) {
printf("querying %s on %s\n", lookup, inet_ntoa(bcast_addr));
ip_list = name_query(ServerFD,lookup,lookup_type,use_bcast,
use_bcast?True:recursion_desired,
- bcast_addr,&count);
+ bcast_addr,&count, &flags);
} else {
struct in_addr *bcast;
for (j=iface_count() - 1;
@@ -152,10 +172,13 @@ static BOOL query_one(char *lookup, unsigned int lookup_type)
ip_list = name_query(ServerFD,lookup,lookup_type,
use_bcast,
use_bcast?True:recursion_desired,
- *bcast,&count);
+ *bcast,&count, &flags);
}
}
+ if (give_flags)
+ printf("Flags: %s\n", query_flags(flags));
+
if (!ip_list) return False;
for (j=0;j<count;j++) {
@@ -208,7 +231,7 @@ int main(int argc,char *argv[])
charset_initialise();
- while ((opt = getopt(argc, argv, "d:B:U:i:s:SMrhART")) != EOF)
+ while ((opt = getopt(argc, argv, "d:fB:U:i:s:SMrhART")) != EOF)
switch (opt)
{
case 'B':
@@ -216,6 +239,9 @@ int main(int argc,char *argv[])
got_bcast = True;
use_bcast = True;
break;
+ case 'f':
+ give_flags = True;
+ break;
case 'U':
bcast_addr = *interpret_addr2(optarg);
got_bcast = True;
diff --git a/source/utils/smbcontrol.c b/source/utils/smbcontrol.c
index 102fdbb19e7..7bb5c3e2c8b 100644
--- a/source/utils/smbcontrol.c
+++ b/source/utils/smbcontrol.c
@@ -46,8 +46,8 @@ static void usage(BOOL doexit)
{
int i;
if (doexit) {
- printf("Usage: smbcontrol -i -s configfile\n");
- printf(" smbcontrol <destination> <message-type> <parameters>\n\n");
+ printf("Usage: smbcontrol [-d debuglevel] [-s configfile] [-i]\n");
+ printf(" smbcontrol [-d debuglevel] [-s configfile] <destination> <message-type> <parameters>\n\n");
} else {
printf("<destination> <message-type> <parameters>\n\n");
}
@@ -344,6 +344,7 @@ static BOOL do_command(char *dest, char *msg_name, int iparams, char **params)
{
int opt;
char temp[255];
+ extern char *optarg;
extern int optind;
pstring servicesf = CONFIGFILE;
BOOL interactive = False;
@@ -357,8 +358,11 @@ static BOOL do_command(char *dest, char *msg_name, int iparams, char **params)
if (argc < 2) usage(True);
- while ((opt = getopt(argc, argv,"is:")) != EOF) {
+ while ((opt = getopt(argc, argv,"is:d:")) != EOF) {
switch (opt) {
+ case 'd':
+ DEBUGLEVEL = atoi(optarg);
+ break;
case 'i':
interactive = True;
break;
@@ -380,7 +384,11 @@ static BOOL do_command(char *dest, char *msg_name, int iparams, char **params)
if (!interactive) {
if (argc < 2) usage(True);
- return (do_command(argv[0],argv[1], argc-2, argc > 2 ? &argv[2] : 0));
+ /*
+ * We want to return !do_command so we get the
+ * right shell semantics (0 = success, 1 = fail)
+ */
+ return (!do_command(argv[0],argv[1], argc-2, argc > 2 ? &argv[2] : 0));
}
while (True) {
diff --git a/source/utils/smbpasswd.c b/source/utils/smbpasswd.c
index 5bd8b421b1d..527e2a38f68 100644
--- a/source/utils/smbpasswd.c
+++ b/source/utils/smbpasswd.c
@@ -94,6 +94,7 @@ static void usage(void)
#endif
printf(" -x delete user\n");
printf(" -j DOMAIN join domain name\n");
+ printf(" -S DOMAIN Retrieve the domain SID for DOMAIN\n");
printf(" -R ORDER name resolve order\n");
exit(1);
@@ -113,7 +114,7 @@ static void process_options(int argc, char **argv, BOOL amroot)
user_name[0] = '\0';
- while ((ch = getopt(argc, argv, "c:axdehmnj:r:sw:R:D:U:L")) != EOF) {
+ while ((ch = getopt(argc, argv, "c:axdehmnj:r:sw:R:D:U:LS")) != EOF) {
switch(ch) {
case 'L':
local_mode = amroot = True;
@@ -157,6 +158,10 @@ static void process_options(int argc, char **argv, BOOL amroot)
case 'r':
remote_machine = optarg;
break;
+ case 'S':
+ if (!amroot) goto bad_args;
+ local_flags |= LOCAL_GET_DOM_SID;
+ break;
case 's':
set_line_buffering(stdin);
set_line_buffering(stdout);
@@ -170,7 +175,7 @@ static void process_options(int argc, char **argv, BOOL amroot)
fstrcpy(ldap_secret, optarg);
break;
#else
- printf("-w not available unless configured --with-ldap\n");
+ printf("-w not available unless configured --with-ldapsam\n");
goto bad_args;
#endif
case 'R':
@@ -309,6 +314,7 @@ static int join_domain_byuser(char *domain, char *remote,
ZERO_STRUCT(cli);
ZERO_STRUCT(creds);
+ ZERO_STRUCT(dest_ip); /* Make sure no nasty surprises */
if (!(mem_ctx = talloc_init())) {
DEBUG(0, ("Could not initialise talloc context\n"));
@@ -568,6 +574,13 @@ static int join_domain(char *domain, char *remote)
pstrcpy(pdc_name, remote ? remote : "");
fstrcpy(trust_passwd, global_myname);
strlower(trust_passwd);
+
+ /*
+ * Machine names can be 15 characters, but the max length on
+ * a password is 14. --jerry
+ */
+ trust_passwd[14] = '\0';
+
E_md4hash( (uchar *)trust_passwd, orig_trust_passwd_hash);
/* Ensure that we are not trying to join a
@@ -594,7 +607,7 @@ machine %s in domain %s.\n", global_myname, domain);
*/
if(remote == NULL || !strcmp(remote, "*")) {
- struct in_addr *ip_list;
+ struct in_addr *ip_list = NULL;
int addr_count;
if (!get_dc_list(True /* PDC only*/, domain, &ip_list, &addr_count)) {
fprintf(stderr, "Unable to find the domain controller for domain %s.\n", domain);
@@ -630,6 +643,51 @@ machine %s in domain %s.\n", global_myname, domain);
return 0;
}
+static int set_domain_sid_from_dc( char *domain, char *remote )
+{
+ pstring pdc_name;
+ DOM_SID domain_sid;
+ fstring sid_str;
+
+ pstrcpy(pdc_name, remote ? remote : "");
+
+ if(strequal(pdc_name, global_myname)) {
+ fprintf(stderr, "Cannot fetch domain sid for %s as the domain controller name is our own.\n", domain);
+ return 1;
+ }
+
+ if(remote == NULL || !strcmp(remote, "*")) {
+ struct in_addr *ip_list = NULL;
+ int addr_count;
+ if (!get_dc_list(False , domain, &ip_list, &addr_count)) {
+ fprintf(stderr, "Unable to find the domain controller for domain %s.\n", domain);
+ return 1;
+ }
+ if ((addr_count < 1) || (is_zero_ip(ip_list[0]))) {
+ fprintf(stderr, "Incorrect entries returned when finding the domain controller for domain %s.\n", domain);
+ return 1;
+ }
+
+ if (!lookup_dc_name(global_myname, domain, &ip_list[0], pdc_name)) {
+ fprintf(stderr, "Unable to lookup the name for the domain controller for domain %s.\n", domain);
+ return 1;
+ }
+ }
+
+ if (!fetch_domain_sid( domain, pdc_name, &domain_sid)
+ || !secrets_store_domain_sid(global_myname, &domain_sid))
+ {
+ fprintf(stderr,"Failed to get domain SID for %s.\n",domain);
+ return 1;
+ }
+
+ sid_to_string(sid_str, &domain_sid);
+ printf("Successfully set domain SID to %s.\n", sid_str);
+
+ return 0;
+
+}
+
/*************************************************************
Utility function to prompt for passwords from stdin. Each
password entered must end with a newline.
@@ -777,15 +835,16 @@ static int process_root(void)
* Ensure add/delete user and either remote machine or join domain are
* not both set.
*/
- if(((local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER)) == (LOCAL_ADD_USER|LOCAL_DELETE_USER)) ||
- ((local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER)) &&
- ((remote_machine != NULL) || joining_domain))) {
+ if ( ((local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER)) == (LOCAL_ADD_USER|LOCAL_DELETE_USER))
+ || ( (local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER))
+ && ((remote_machine != NULL) || joining_domain) ) )
+ {
usage();
}
/* Only load interfaces if we are doing network operations. */
- if (joining_domain || remote_machine) {
+ if ( joining_domain || remote_machine || (local_flags & LOCAL_GET_DOM_SID) ) {
load_interfaces();
}
@@ -816,6 +875,15 @@ static int process_root(void)
return join_domain(new_domain, remote_machine);
}
}
+
+ /*
+ * get the domain sid from a PDC and store it in secrets.tdb
+ * Used for Samba PDC/BDC installations.
+ */
+
+ if (local_flags & LOCAL_GET_DOM_SID) {
+ return set_domain_sid_from_dc(lp_workgroup(), remote_machine);
+ }
/*
* Deal with root - can add a user, but only locally.
@@ -1006,6 +1074,7 @@ int main(int argc, char **argv)
{
BOOL amroot = getuid() == 0;
+ DEBUGLEVEL = 0;
AllowDebugChange = False;
#if defined(HAVE_SET_AUTH_PARAMETERS)
diff --git a/source/utils/status.c b/source/utils/status.c
index 044cd7a6a16..ff45bb97961 100644
--- a/source/utils/status.c
+++ b/source/utils/status.c
@@ -641,12 +641,15 @@ static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *st
tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
if (!tdb) {
- printf("connections.tdb not initialised\n");
- if (!lp_status(-1))
+ printf("%s not initialized.\n", lock_path("connections.tdb"));
+ printf("This is normal if an SMB client has never connected to your server.\n");
+ if (!lp_status(-1)) {
printf("You need to have status=yes in your smb config file\n");
+ }
return(0);
} else if (verbose) {
- printf("Opened status file %s\n", fname);
+ slprintf (fname, sizeof(fname)-1, "%s/%s", lp_lockdir(), "connections.tdb");
+ printf("Opened %s\n", fname);
}
if (locks_only) goto locks;
@@ -660,6 +663,7 @@ static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *st
printf("----------------------------------------------\n");
}
tdb_traverse(tdb, traverse_fn1, NULL);
+
locks:
if (processes_only) exit(0);
diff --git a/source/web/diagnose.c b/source/web/diagnose.c
index bf2e6da17d1..efe1ef5a2c4 100644
--- a/source/web/diagnose.c
+++ b/source/web/diagnose.c
@@ -28,14 +28,14 @@
BOOL nmbd_running(void)
{
extern struct in_addr loopback_ip;
- int fd, count;
+ int fd, count, flags;
struct in_addr *ip_list;
if ((fd = open_socket_in(SOCK_DGRAM, 0, 3,
interpret_addr("127.0.0.1"), True)) != -1) {
if ((ip_list = name_query(fd, "__SAMBA__", 0,
True, True, loopback_ip,
- &count)) != NULL) {
+ &count, &flags)) != NULL) {
SAFE_FREE(ip_list);
close(fd);
return True;
diff --git a/swat/help/welcome.html b/swat/help/welcome.html
index 1c23d35a27c..43047843624 100644
--- a/swat/help/welcome.html
+++ b/swat/help/welcome.html
@@ -24,7 +24,6 @@ Please choose a configuration action using one of the above buttons
<li><a href="/swat/help/swat.8.html" target="docs">SWAT</a> - web configuration tool
<li><a href="/swat/help/make_smbcodepage.1.html" target="docs">make_smbcodepage</a> - codepage creation
<li><a href="/swat/help/make_unicodemap.1.html" target="docs">make_unicodemap</a> - unicode map file creation
- <li><a href="/swat/help/smbrun.1.html" target="docs">smbrun</a> - internal smbd utility
</ul>
<li><b>Client Tools</b>
<ul>
@@ -50,15 +49,20 @@ Please choose a configuration action using one of the above buttons
<li><b>Samba HOWTO Collection</b></li>
<ul>
<li><a href="/swat/help/Samba-HOWTO-Collection.html">Entire Collection (one file)</a>
+ <li><a href="/swat/help/UNIX_INSTALL.html">HOWTO Install and Test Samba</a>
+ <li><a href="/swat/help/ENCRYPTION.html">How To Configure Samba to use Encrypted Passwords</a>
<li><a href="/swat/help/DOMAIN_MEMBER.html">security = domain in Samba 2.x</a>
<li><a href="/swat/help/winbind.html">Unified Logons between Windows NT and UNIX Using Winbind</a>
<li><a href="/swat/help/msdfs_setup.html">Setting Samba as an MS-DFS server</a>
<li><a href="/swat/help/NT_Security.html">UNIX Permission Bits and Samba 2.x</a>
<li><a href="/swat/help/OS2-Client-HOWTO.html">OS/2 Clients and Samba</a>
<li><a href="/swat/help/printer_driver2.html">Printing under Samba 2.2.x</a>
- <li><a href="/swat/help/UNIX_INSTALL.html">HOWTO Install and Test Samba</a>
<li><a href="/swat/help/Integrating-with-Windows.html">Integrating Name Resolution and Authentication Services</a>
+ <li><a href="/swat/help/PAM-Authentication-And-Samba.html">Configuring Samba and PAM</a>
<li><a href="/swat/help/CVS-Access.html">CVS Access to Samba code</a>
+ <li><a href="/swat/help/Samba-PDC-HOWTO.html">How To Configure Samba as a Primary Domain Controller</a>
+ <li><a href="/swat/help/Samba-BDC-HOWTO.html">How To Configure Samba as a Backup Domain Controller for a Samba PDC</a>
+ <li><a href="/swat/help/Samba-LDAP-HOWTO.html">How to Replace smbpasswd with an LDAP Directory</a>
</ul>
</ul>