summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-10-10 18:04:10 +0000
committerGerald Carter <jerry@samba.org>2003-10-10 18:04:10 +0000
commitf0f94187925c5551c68a438dc0424d946447a5e7 (patch)
treeead63d73fa0096480a05d36fc583d6b4e95d2438
parent57e99bfb967ce068308d70cf08ec11598ea9750c (diff)
downloadsamba-f0f94187925c5551c68a438dc0424d946447a5e7.tar.gz
syncing up for 3.0.1pre1
-rw-r--r--packaging/RedHat/samba.spec.tmpl192
-rw-r--r--source/Makefile.in13
-rw-r--r--source/VERSION4
-rw-r--r--source/aclocal.m44
-rw-r--r--source/auth/auth_sam.c87
-rw-r--r--source/auth/auth_util.c17
-rw-r--r--source/auth/auth_winbind.c16
-rw-r--r--source/configure.in37
-rw-r--r--source/include/intl.h1
-rw-r--r--source/include/passdb.h8
-rw-r--r--source/include/privileges.h2
-rw-r--r--source/include/rpc_dce.h11
-rw-r--r--source/include/rpc_lsa.h8
-rw-r--r--source/include/rpc_misc.h142
-rw-r--r--source/include/rpc_samr.h8
-rw-r--r--source/include/smbldap.h2
-rw-r--r--source/include/talloc.h21
-rw-r--r--source/intl/lang_tdb.c35
-rw-r--r--source/lib/afs.c2
-rw-r--r--source/lib/getsmbpass.c148
-rw-r--r--source/lib/iconv.c2
-rw-r--r--source/lib/module.c9
-rw-r--r--source/lib/sysquotas.c100
-rw-r--r--source/lib/system.c8
-rw-r--r--source/lib/system_smbd.c2
-rw-r--r--source/lib/talloc.c21
-rw-r--r--source/lib/util_seaccess.c131
-rw-r--r--source/lib/util_sid.c2
-rw-r--r--source/lib/util_unistr.c12
-rw-r--r--source/libads/ldap.c3
-rw-r--r--source/libads/ldap_utils.c7
-rw-r--r--source/libsmb/errormap.c2
-rw-r--r--source/locking/brlock.c9
-rw-r--r--source/locking/locking.c43
-rw-r--r--source/modules/vfs_recycle.c2
-rw-r--r--source/nmbd/nmbd_winsserver.c10
-rw-r--r--source/nsswitch/winbindd_ads.c15
-rw-r--r--source/nsswitch/winbindd_pam.c40
-rw-r--r--source/param/loadparm.c37
-rw-r--r--source/passdb/passdb.c29
-rw-r--r--source/passdb/pdb_get_set.c34
-rw-r--r--source/passdb/pdb_ldap.c22
-rw-r--r--source/passdb/pdb_mysql.c58
-rw-r--r--source/passdb/pdb_smbpasswd.c4
-rw-r--r--source/passdb/pdb_xml.c12
-rw-r--r--source/po/de.msg1746
-rw-r--r--source/po/en.msg1692
-rw-r--r--source/po/fr.msg1724
-rw-r--r--source/po/it.msg1730
-rw-r--r--source/po/ja.msg1946
-rw-r--r--source/po/pl.msg1750
-rw-r--r--source/po/tr.msg1717
-rw-r--r--source/printing/nt_printing.c6
-rw-r--r--source/python/py_ntsec.c2
-rw-r--r--source/python/py_spoolss_forms.c2
-rw-r--r--source/python/py_spoolss_forms_conv.c2
-rw-r--r--source/registry/reg_printing.c41
-rw-r--r--source/rpc_client/cli_lsarpc.c6
-rw-r--r--source/rpc_client/cli_pipe.c29
-rw-r--r--source/rpc_client/cli_srvsvc.c16
-rw-r--r--source/rpc_parse/parse_dfs.c20
-rw-r--r--source/rpc_parse/parse_ds.c6
-rw-r--r--source/rpc_parse/parse_lsa.c84
-rw-r--r--source/rpc_parse/parse_misc.c98
-rw-r--r--source/rpc_parse/parse_net.c108
-rw-r--r--source/rpc_parse/parse_prs.c147
-rw-r--r--source/rpc_parse/parse_reg.c64
-rw-r--r--source/rpc_parse/parse_rpc.c59
-rw-r--r--source/rpc_parse/parse_samr.c454
-rw-r--r--source/rpc_parse/parse_sec.c725
-rw-r--r--source/rpc_parse/parse_spoolss.c79
-rw-r--r--source/rpc_parse/parse_srv.c74
-rw-r--r--source/rpc_server/srv_dfs_nt.c12
-rw-r--r--source/rpc_server/srv_lsa.c2
-rw-r--r--source/rpc_server/srv_lsa_ds_nt.c6
-rw-r--r--source/rpc_server/srv_lsa_nt.c143
-rw-r--r--source/rpc_server/srv_pipe.c30
-rw-r--r--source/rpc_server/srv_samr_nt.c31
-rw-r--r--source/rpc_server/srv_samr_util.c26
-rw-r--r--source/rpc_server/srv_spoolss_nt.c16
-rw-r--r--source/rpc_server/srv_srvsvc_nt.c2
-rw-r--r--source/rpcclient/cmd_samr.c3
-rw-r--r--source/rpcclient/cmd_spoolss.c4
-rw-r--r--source/rpcclient/rpcclient.c50
-rwxr-xr-xsource/script/installbin.sh15
-rwxr-xr-xsource/script/installdat.sh2
-rwxr-xr-xsource/script/installdirs.sh8
-rwxr-xr-xsource/script/installman.sh2
-rwxr-xr-xsource/script/installmodules.sh4
-rw-r--r--source/script/installmsg.sh2
-rwxr-xr-xsource/script/installscripts.sh2
-rwxr-xr-xsource/script/installswat.sh2
-rw-r--r--source/script/mkproto.awk2
-rwxr-xr-xsource/script/uninstallbin.sh8
-rwxr-xr-xsource/script/uninstallman.sh2
-rwxr-xr-xsource/script/uninstallmodules.sh4
-rwxr-xr-xsource/script/uninstallscripts.sh2
-rw-r--r--source/smbd/blocking.c16
-rw-r--r--source/smbd/error.c5
-rw-r--r--source/smbd/notify_hash.c6
-rw-r--r--source/smbd/nttrans.c48
-rw-r--r--source/smbd/password.c10
-rw-r--r--source/smbd/reply.c251
-rw-r--r--source/smbd/service.c25
-rw-r--r--source/smbd/trans2.c32
-rw-r--r--source/tdb/tdbback.c14
-rw-r--r--source/tdb/tdbbackup.c12
-rw-r--r--source/utils/net_ads_cldap.c20
-rw-r--r--source/utils/profiles.c8
-rw-r--r--source/utils/smbcacls.c6
-rw-r--r--source/utils/testparm.c12
-rw-r--r--source/web/statuspage.c22
-rw-r--r--source/web/swat.c142
-rw-r--r--swat/help/welcome.html3
-rw-r--r--swat/lang/ja/help/welcome.html2
-rw-r--r--swat/lang/ja/images/globals.gifbin1613 -> 0 bytes
-rw-r--r--swat/lang/ja/images/home.gifbin1881 -> 0 bytes
-rw-r--r--swat/lang/ja/images/passwd.gifbin1427 -> 0 bytes
-rw-r--r--swat/lang/ja/images/printers.gifbin1987 -> 0 bytes
-rw-r--r--swat/lang/ja/images/samba.gifbin3877 -> 0 bytes
-rw-r--r--swat/lang/ja/images/shares.gifbin1590 -> 0 bytes
-rw-r--r--swat/lang/ja/images/status.gifbin2582 -> 0 bytes
-rw-r--r--swat/lang/ja/images/viewconfig.gifbin1485 -> 0 bytes
123 files changed, 4057 insertions, 12656 deletions
diff --git a/packaging/RedHat/samba.spec.tmpl b/packaging/RedHat/samba.spec.tmpl
index 063af05dd38..7afb30bb31e 100644
--- a/packaging/RedHat/samba.spec.tmpl
+++ b/packaging/RedHat/samba.spec.tmpl
@@ -68,10 +68,18 @@ autoheader
autoconf
EXTRA="-D_LARGEFILE64_SOURCE"
%endif
+
+## Get number of cpu's, default for 1 cpu on error
NUMCPU=`grep processor /proc/cpuinfo | wc -l`
+if [ $NUMCPU -eq 0 ]; then
+ NUMCPU=1;
+fi
+
+## run autogen if missing the configure script
if [ ! -f "configure" ]; then
./autogen.sh
fi
+
CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
--prefix=%{prefix} \
--localstatedir=/var \
@@ -88,9 +96,8 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA" ./configure \
--with-swatdir=%{prefix}/share/swat \
--with-libsmbclient
make -j${NUMCPU} proto
-make -j${NUMCPU} all nsswitch/libnss_wins.so modules
+make -j${NUMCPU} all nsswitch/libnss_wins.so
make -j${NUMCPU} debug2html
-make -j${NUMCPU} bin/smbspool
# Remove some permission bits to avoid to many dependencies
find examples docs -type f | xargs -r chmod -x
@@ -154,11 +161,11 @@ cd ..
# Install the nsswitch wins library
install -m755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/lib
-( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_wins.so libnss_wins.so.2; )
+( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_wins.so libnss_wins.so.2 )
# Install winbind shared libraries
install -m755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/lib
-( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_winbind.so libnss_winbind.so.2; )
+( cd $RPM_BUILD_ROOT/lib; ln -sf libnss_winbind.so libnss_winbind.so.2 )
install -m755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/lib/security
# Install pam_smbpass.so
@@ -189,6 +196,9 @@ find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
rm -rf $RPM_BUILD_ROOT
%post
+##
+## only needed if this is a new install (not an upgrade)
+##
if [ "$1" -eq "1" ]; then
/sbin/chkconfig --add smb
/sbin/chkconfig --add winbind
@@ -196,113 +206,119 @@ if [ "$1" -eq "1" ]; then
/sbin/chkconfig winbind off
fi
-echo "Looking for old /etc/smb.conf..."
-if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then
- echo "Moving old /etc/smb.conf to /etc/samba/smb.conf"
- mv /etc/smb.conf /etc/samba/smb.conf
-fi
+##
+## we only have to wory about this if we are upgrading
+##
+if [ "$1" -eq "2" ]; then
+ if [ -f /etc/smb.conf -a ! -f /etc/samba/smb.conf ]; then
+ echo "Moving old /etc/smb.conf to /etc/samba/smb.conf"
+ mv /etc/smb.conf /etc/samba/smb.conf
+ fi
-echo "Looking for old /etc/smbusers..."
-if [ -f /etc/smbusers -a ! -f /etc/samba/smbusers ]; then
- echo "Moving old /etc/smbusers to /etc/samba/smbusers"
- mv /etc/smbusers /etc/samba/smbusers
-fi
+ if [ -f /etc/smbusers -a ! -f /etc/samba/smbusers ]; then
+ echo "Moving old /etc/smbusers to /etc/samba/smbusers"
+ mv /etc/smbusers /etc/samba/smbusers
+ fi
-echo "Looking for old /etc/lmhosts..."
-if [ -f /etc/lmhosts -a ! -f /etc/samba/lmhosts ]; then
- echo "Moving old /etc/lmhosts to /etc/samba/lmhosts"
- mv /etc/lmhosts /etc/samba/lmhosts
-fi
+ if [ -f /etc/lmhosts -a ! -f /etc/samba/lmhosts ]; then
+ echo "Moving old /etc/lmhosts to /etc/samba/lmhosts"
+ mv /etc/lmhosts /etc/samba/lmhosts
+ fi
-echo "Looking for old /etc/MACHINE.SID..."
-if [ -f /etc/MACHINE.SID -a ! -f /etc/samba/MACHINE.SID ]; then
- echo "Moving old /etc/MACHINE.SID to /etc/samba/MACHINE.SID"
- mv /etc/MACHINE.SID /etc/samba/MACHINE.SID
-fi
+ if [ -f /etc/MACHINE.SID -a ! -f /etc/samba/MACHINE.SID ]; then
+ echo "Moving old /etc/MACHINE.SID to /etc/samba/MACHINE.SID"
+ mv /etc/MACHINE.SID /etc/samba/MACHINE.SID
+ fi
-echo "Looking for old /etc/smbpasswd..."
-if [ -f /etc/smbpasswd -a ! -f /etc/samba/smbpasswd ]; then
- echo "Moving old /etc/smbpasswd to /etc/samba/smbpasswd"
- mv /etc/smbpasswd /etc/samba/smbpasswd
-fi
+ if [ -f /etc/smbpasswd -a ! -f /etc/samba/smbpasswd ]; then
+ echo "Moving old /etc/smbpasswd to /etc/samba/smbpasswd"
+ mv /etc/smbpasswd /etc/samba/smbpasswd
+ fi
-#
-# For 2.2.1 we move the tdb files from /var/lock/samba to /var/cache/samba
-# to preserve across reboots.
-#
-echo "Moving tdb files in /var/lock/samba/*.tdb to /var/cache/samba/*.tdb"
-for i in /var/lock/samba/*.tdb
-do
-if [ -f $i ]; then
- newname=`echo $i | sed -e's|var\/lock\/samba|var\/cache\/samba|'`
- echo "Moving $i to $newname"
- mv $i $newname
-fi
-done
+ #
+ # For 2.2.1 we move the tdb files from /var/lock/samba to /var/cache/samba
+ # to preserve across reboots.
+ #
+ for i in /var/lock/samba/*.tdb; do
+ if [ -f $i ]; then
+ newname=`echo $i | sed -e's|var\/lock\/samba|var\/cache\/samba|'`
+ echo "Moving $i to $newname"
+ mv $i $newname
+ fi
+ done
-# Remove the transient tdb files.
-if [ -e /var/cache/samba/brlock.tdb ]; then
- rm -f /var/cache/samba/brlock.tdb
-fi
+ # Remove the transient tdb files.
+ if [ -e /var/cache/samba/brlock.tdb ]; then
+ rm -f /var/cache/samba/brlock.tdb
+ fi
-if [ -e /var/cache/samba/unexpected.tdb ]; then
- rm -f /var/cache/samba/unexpected.tdb
-fi
+ if [ -e /var/cache/samba/unexpected.tdb ]; then
+ rm -f /var/cache/samba/unexpected.tdb
+ fi
-if [ -e /var/cache/samba/connections.tdb ]; then
- rm -f /var/cache/samba/connections.tdb
-fi
+ if [ -e /var/cache/samba/connections.tdb ]; then
+ rm -f /var/cache/samba/connections.tdb
+ fi
-if [ -e /var/cache/samba/locking.tdb ]; then
- rm -f /var/cache/samba/locking.tdb
-fi
+ if [ -e /var/cache/samba/locking.tdb ]; then
+ rm -f /var/cache/samba/locking.tdb
+ fi
-if [ -e /var/cache/samba/messages.tdb ]; then
- rm -f /var/cache/samba/messages.tdb
-fi
+ if [ -e /var/cache/samba/messages.tdb ]; then
+ rm -f /var/cache/samba/messages.tdb
+ fi
-if [ -d /var/lock/samba ]; then
- rm -rf /var/lock/samba
+ if [ -d /var/lock/samba ]; then
+ rm -rf /var/lock/samba
+ fi
fi
+##
+## New things
+##
+
# Add swat entry to /etc/services if not already there.
-if !( grep ^[:space:]*swat /etc/services > /dev/null ) then
+if [ ! "`grep ^\s**swat /etc/services`" ]; then
echo 'swat 901/tcp # Add swat service used via inetd' >> /etc/services
fi
# Add swat entry to /etc/inetd.conf if needed.
if [ -f /etc/inetd.conf ]; then
- if !( grep ^[:space:]*swat /etc/inetd.conf > /dev/null ) then
+ if [ ! "`grep ^\s*swat /etc/inetd.conf`" ]; then
echo 'swat stream tcp nowait.400 root %{prefix}/sbin/swat swat' >> /etc/inetd.conf
- killall -1 inetd || :
+ killall -HUP inetd || :
fi
fi
# Add swat entry to xinetd.d if needed.
-if [ -d $RPM_BUILD_ROOT/etc/xinetd.d -a ! -f /etc/xinetd.d/swat ]; then
+if [ -d /etc/xinetd.d -a ! -f /etc/xinetd.d/swat ]; then
mv /etc/samba/samba.xinetd /etc/xinetd.d/swat
else
rm -f /etc/samba/samba.xinetd
fi
# Install the correct version of the samba pam file, depending on pam version.
-if [ -f /lib/security/pam_stack.so ]; then
- echo "Installing stack version of /etc/pam.d/samba..."
- mv /etc/samba/samba.stack /etc/pam.d/samba
-else
- echo "Installing non-stack version of /etc/pam.d/samba..."
- rm -f /etc/samba/samba.stack
+# (always keep an existing PAM config file)
+if [ ! -f /etc/pam.d/samba ]; then
+ if [ -f /lib/security/pam_stack.so ]; then
+ echo "Installing stack version of /etc/pam.d/samba..."
+ mv /etc/samba/samba.stack /etc/pam.d/samba
+ else
+ echo "Installing non-stack version of /etc/pam.d/samba..."
+ rm -f /etc/samba/samba.stack
+ fi
fi
## call ldconfig to create the version symlink for libsmbclient.so
/sbin/ldconfig
%preun
-if [ $1 = 0 ] ; then
+if [ "$1" -eq "0" ] ; then
/sbin/chkconfig --del smb
/sbin/chkconfig --del winbind
- # We want to remove the browse.dat and wins.dat files so they can not interfer with a new version of samba!
+ # We want to remove the browse.dat and wins.dat files
+ # so they can not interfer with a new version of samba!
if [ -e /var/cache/samba/browse.dat ]; then
rm -f /var/cache/samba/browse.dat
fi
@@ -330,45 +346,42 @@ if [ $1 = 0 ] ; then
if [ -e /var/cache/samba/messages.tdb ]; then
rm -f /var/cache/samba/messages.tdb
fi
-
- # Remove winbind nss client symlink
-
- if [ -L /lib/libnss_winbind.so.2 ]; then
- rm -f /lib/libnss_winbind.so.2
- fi
fi
%postun
# Only delete remnants of samba if this is the final deletion.
-if [ $1 = 0 ] ; then
+if [ "$1" -eq "0" ] ; then
if [ -x /etc/pam.d/samba ]; then
rm -f /etc/pam.d/samba
fi
+
if [ -e /var/log/samba ]; then
rm -rf /var/log/samba
fi
- if [ -e /var/cache/samba ]; then
- rm -rf /var/cache/samba
- fi
+
+ if [ -e /var/cache/samba ]; then
+ rm -rf /var/cache/samba
+ fi
# Remove swat entries from /etc/inetd.conf and /etc/services
cd /etc
tmpfile=/etc/tmp.$$
- if [ -f /etc/inetd.conf ]; then
+ if [ -f /etc/inetd.conf ]; then
# preserve inetd.conf permissions.
cp -p /etc/inetd.conf $tmpfile
sed -e '/^[:space:]*swat.*$/d' /etc/inetd.conf > $tmpfile
mv $tmpfile inetd.conf
- fi
+ fi
+
# preserve services permissions.
cp -p /etc/services $tmpfile
sed -e '/^[:space:]*swat.*$/d' /etc/services > $tmpfile
mv $tmpfile /etc/services
- # Remove swat entry from /etc/xinetd.d
- if [ -f /etc/xinetd.d/swat ]; then
- rm -r /etc/xinetd.d/swat
- fi
+ # Remove swat entry from /etc/xinetd.d
+ if [ -f /etc/xinetd.d/swat ]; then
+ rm -r /etc/xinetd.d/swat
+ fi
fi
/sbin/ldconfig
@@ -427,7 +440,6 @@ fi
%{prefix}/share/swat/lang/*/images/*
%{prefix}/share/swat/lang/*/include/*.html
%{prefix}/share/swat/using_samba/*
-%attr(755,root,root) %{prefix}/lib/samba/*.msg
%config(noreplace) /etc/samba/lmhosts
%config(noreplace) /etc/samba/smb.conf
%config(noreplace) /etc/samba/smbusers
@@ -445,6 +457,6 @@ MANDIR_MACRO/man8/*
%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/libnss_winbind.so*
%attr(-,root,root) /lib/security/pam_winbind.so
%attr(-,root,root) /lib/security/pam_smbpass.so
diff --git a/source/Makefile.in b/source/Makefile.in
index 0ea2c4411f8..4769604243b 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -18,6 +18,7 @@ CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
EXEEXT=@EXEEXT@
LDFLAGS=@LDFLAGS@
+AR=@AR@
LDSHFLAGS=@LDSHFLAGS@ @LDFLAGS@
WINBIND_NSS_LDSHFLAGS=@WINBIND_NSS_LDSHFLAGS@ @LDFLAGS@
AWK=@AWK@
@@ -45,6 +46,7 @@ VPATH=@srcdir@
srcdir=@abs_srcdir@
builddir=@abs_builddir@
SHELL=/bin/sh
+DESTDIR=/
# XXX: Perhaps this should be @SHELL@ instead -- apparently autoconf
# will search for a POSIX-compliant shell, and that might not be
@@ -181,7 +183,8 @@ LIB_OBJ = lib/version.o lib/charcnv.o lib/debug.o lib/fault.o \
nsswitch/wb_client.o nsswitch/wb_common.o \
lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \
- lib/module.o lib/ldap_escape.o @CHARSET_STATIC@
+ lib/module.o lib/ldap_escape.o @CHARSET_STATIC@ \
+ lib/privileges.o lib/secdesc.o lib/secace.o lib/secacl.o
LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
@@ -218,7 +221,7 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \
libsmb/clireadwrite.o libsmb/clilist.o libsmb/cliprint.o \
libsmb/clitrans.o libsmb/clisecdesc.o libsmb/clidgram.o \
- libsmb/clistr.o \
+ libsmb/clistr.o lib/util_seaccess.o \
libsmb/cliquota.o libsmb/clifsinfo.o \
libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
libsmb/clioplock.o libsmb/errormap.o libsmb/clirap2.o \
@@ -345,7 +348,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \
smbd/posix_acls.o lib/sysacls.o lib/server_mutex.o \
smbd/process.o smbd/service.o smbd/error.o \
- printing/printfsp.o lib/util_seaccess.o \
+ printing/printfsp.o \
lib/sysquotas.o smbd/change_trust_pw.o smbd/fake_file.o \
smbd/quotas.o smbd/ntquotas.o lib/afs.o \
$(MANGLE_OBJ) @VFS_STATIC@
@@ -1180,8 +1183,8 @@ installservers: all installdirs
@$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
installbin: all installdirs
- @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
- @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS)
+ @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS)
+ @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS)
installmodules: modules installdirs
diff --git a/source/VERSION b/source/VERSION
index da17d316eae..5acae18c7d6 100644
--- a/source/VERSION
+++ b/source/VERSION
@@ -19,7 +19,7 @@
########################################################
SAMBA_VERSION_MAJOR=3
SAMBA_VERSION_MINOR=0
-SAMBA_VERSION_RELEASE=0
+SAMBA_VERSION_RELEASE=1
########################################################
# If a official release has a serious bug #
@@ -41,7 +41,7 @@ SAMBA_VERSION_REVISION=
# e.g. SAMBA_VERSION_PRE_RELEASE=1 #
# -> "2.2.9pre1" #
########################################################
-SAMBA_VERSION_PRE_RELEASE=
+SAMBA_VERSION_PRE_RELEASE=1
########################################################
# For 'rc' releases the version will be #
diff --git a/source/aclocal.m4 b/source/aclocal.m4
index 52396e56d6c..c7831c58caa 100644
--- a/source/aclocal.m4
+++ b/source/aclocal.m4
@@ -73,7 +73,7 @@ AC_DEFUN(SMB_SUBSYSTEM,
AC_SUBST($1_STATIC)
AC_SUBST($1_MODULES)
AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions])
- ifelse([$2], , :, [touch $2])
+ ifelse([$2], , :, [rm -f $2])
])
dnl AC_PROG_CC_FLAG(flag)
@@ -179,7 +179,7 @@ AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes],
*-l$1*)
;;
*)
- $2="$$2 -l$1"
+ $2="-l$1 $$2"
;;
esac])
[$6]
diff --git a/source/auth/auth_sam.c b/source/auth/auth_sam.c
index fb66d53cd4f..ce97bd7df26 100644
--- a/source/auth/auth_sam.c
+++ b/source/auth/auth_sam.c
@@ -27,8 +27,9 @@
#define DBGC_CLASS DBGC_AUTH
/****************************************************************************
-core of smb password checking routine.
+ Core of smb password checking routine.
****************************************************************************/
+
static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response,
const uchar *part_passwd,
const DATA_BLOB *sec_blob,
@@ -54,8 +55,7 @@ static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response,
}
SMBOWFencrypt(part_passwd, sec_blob->data, p24);
- if (user_sess_key != NULL)
- {
+ if (user_sess_key != NULL) {
SMBsesskeygen_ntv1(part_passwd, NULL, user_sess_key);
}
@@ -74,12 +74,11 @@ static BOOL smb_pwd_check_ntlmv1(const DATA_BLOB *nt_response,
return (memcmp(p24, nt_response->data, 24) == 0);
}
-
/****************************************************************************
-core of smb password checking routine. (NTLMv2, LMv2)
-
-Note: The same code works with both NTLMv2 and LMv2.
+ Core of smb password checking routine. (NTLMv2, LMv2)
+ Note: The same code works with both NTLMv2 and LMv2.
****************************************************************************/
+
static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response,
const uchar *part_passwd,
const DATA_BLOB *sec_blob,
@@ -92,8 +91,7 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response,
uchar client_response[16];
DATA_BLOB client_key_data;
- if (part_passwd == NULL)
- {
+ if (part_passwd == NULL) {
DEBUG(10,("No password set - DISALLOWING access\n"));
/* No password set - always False */
return False;
@@ -121,8 +119,7 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response,
}
SMBOWFencrypt_ntv2(kr, sec_blob, &client_key_data, value_from_encryption);
- if (user_sess_key != NULL)
- {
+ if (user_sess_key != NULL) {
SMBsesskeygen_ntv2(kr, value_from_encryption, user_sess_key);
}
@@ -142,11 +139,11 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB *ntv2_response,
return (memcmp(value_from_encryption, client_response, 16) == 0);
}
-
/****************************************************************************
Do a specific test for an smb password being correct, given a smb_password and
the lanman and NT responses.
****************************************************************************/
+
static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
TALLOC_CTX *mem_ctx,
SAM_ACCOUNT *sampass,
@@ -158,15 +155,11 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
uint32 auth_flags;
acct_ctrl = pdb_get_acct_ctrl(sampass);
- if (acct_ctrl & ACB_PWNOTREQ)
- {
- if (lp_null_passwords())
- {
+ if (acct_ctrl & ACB_PWNOTREQ) {
+ if (lp_null_passwords()) {
DEBUG(3,("Account for user '%s' has no password and null passwords are allowed.\n", pdb_get_username(sampass)));
return(NT_STATUS_OK);
- }
- else
- {
+ } else {
DEBUG(3,("Account for user '%s' has no password and null passwords are NOT allowed.\n", pdb_get_username(sampass)));
return(NT_STATUS_LOGON_FAILURE);
}
@@ -191,8 +184,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
nt_pw, &auth_context->challenge,
user_info->smb_name.str,
user_info->client_domain.str,
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
}
@@ -201,9 +193,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
nt_pw, &auth_context->challenge,
user_info->smb_name.str,
"",
- user_sess_key))
-
- {
+ user_sess_key)) {
return NT_STATUS_OK;
} else {
DEBUG(3,("sam_password_ok: NTLMv2 password check failed\n"));
@@ -218,8 +208,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
DEBUG(4,("sam_password_ok: Checking NT MD4 password\n"));
if (smb_pwd_check_ntlmv1(&user_info->nt_resp,
nt_pw, &auth_context->challenge,
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
} else {
DEBUG(3,("sam_password_ok: NT MD4 password check failed for user %s\n",pdb_get_username(sampass)));
@@ -247,8 +236,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
DEBUG(4,("sam_password_ok: Checking LM password\n"));
if (smb_pwd_check_ntlmv1(&user_info->lm_resp,
lm_pw, &auth_context->challenge,
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
}
}
@@ -268,8 +256,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
nt_pw, &auth_context->challenge,
user_info->smb_name.str,
user_info->client_domain.str,
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
}
@@ -278,8 +265,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
nt_pw, &auth_context->challenge,
user_info->smb_name.str,
"",
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
}
@@ -287,12 +273,10 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
- I think this is related to Win9X pass-though authentication
*/
DEBUG(4,("sam_password_ok: Checking NT MD4 password in LM field\n"));
- if (lp_ntlm_auth())
- {
+ if (lp_ntlm_auth()) {
if (smb_pwd_check_ntlmv1(&user_info->lm_resp,
nt_pw, &auth_context->challenge,
- user_sess_key))
- {
+ user_sess_key)) {
return NT_STATUS_OK;
}
DEBUG(3,("sam_password_ok: LM password, NT MD4 password in LM field and LMv2 failed for user %s\n",pdb_get_username(sampass)));
@@ -313,6 +297,7 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
Do a specific test for a SAM_ACCOUNT being vaild for this connection
(ie not disabled, expired and the like).
****************************************************************************/
+
static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
SAM_ACCOUNT *sampass,
const auth_usersupplied_info *user_info)
@@ -325,16 +310,22 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
/* Quit if the account was disabled. */
if (acct_ctrl & ACB_DISABLED) {
- DEBUG(1,("Account for user '%s' was disabled.\n", pdb_get_username(sampass)));
+ DEBUG(1,("sam_account_ok: Account for user '%s' was disabled.\n", pdb_get_username(sampass)));
return NT_STATUS_ACCOUNT_DISABLED;
}
+ /* Quit if the account was locked out. */
+ if (acct_ctrl & ACB_AUTOLOCK) {
+ DEBUG(1,("sam_account_ok: Account for user %s was locked out.\n", pdb_get_username(sampass)));
+ return NT_STATUS_ACCOUNT_LOCKED_OUT;
+ }
+
/* Test account expire time */
kickoff_time = pdb_get_kickoff_time(sampass);
if (kickoff_time != 0 && time(NULL) > kickoff_time) {
- DEBUG(1,("Account for user '%s' has expired.\n", pdb_get_username(sampass)));
- DEBUG(3,("Account expired at '%ld' unix time.\n", (long)kickoff_time));
+ DEBUG(1,("sam_account_ok: Account for user '%s' has expired.\n", pdb_get_username(sampass)));
+ DEBUG(3,("sam_account_ok: Account expired at '%ld' unix time.\n", (long)kickoff_time));
return NT_STATUS_ACCOUNT_EXPIRED;
}
@@ -344,14 +335,14 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
/* check for immediate expiry "must change at next logon" */
if (must_change_time == 0 && last_set_time != 0) {
- DEBUG(1,("Account for user '%s' password must change!.\n", pdb_get_username(sampass)));
+ DEBUG(1,("sam_account_ok: Account for user '%s' password must change!.\n", pdb_get_username(sampass)));
return NT_STATUS_PASSWORD_MUST_CHANGE;
}
/* check for expired password */
if (must_change_time < time(NULL) && must_change_time != 0) {
- DEBUG(1,("Account for user '%s' password expired!.\n", pdb_get_username(sampass)));
- DEBUG(1,("Password expired at '%s' (%ld) unix time.\n", http_timestring(must_change_time), (long)must_change_time));
+ DEBUG(1,("sam_account_ok: Account for user '%s' password expired!.\n", pdb_get_username(sampass)));
+ DEBUG(1,("sam_account_ok: Password expired at '%s' (%ld) unix time.\n", http_timestring(must_change_time), (long)must_change_time));
return NT_STATUS_PASSWORD_EXPIRED;
}
}
@@ -359,8 +350,8 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
/* Test workstation. Workstation list is comma separated. */
workstation_list = talloc_strdup(mem_ctx, pdb_get_workstations(sampass));
-
- if (!workstation_list) return NT_STATUS_NO_MEMORY;
+ if (!workstation_list)
+ return NT_STATUS_NO_MEMORY;
if (*workstation_list) {
BOOL invalid_ws = True;
@@ -369,7 +360,7 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
fstring tok;
while (next_token(&s, tok, ",", sizeof(tok))) {
- DEBUG(10,("checking for workstation match %s and %s (len=%d)\n",
+ DEBUG(10,("sam_account_ok: checking for workstation match %s and %s (len=%d)\n",
tok, user_info->wksta_name.str, user_info->wksta_name.len));
if(strequal(tok, user_info->wksta_name.str)) {
invalid_ws = False;
@@ -399,7 +390,6 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
return NT_STATUS_OK;
}
-
/****************************************************************************
check if a username/password is OK assuming the password is a 24 byte
SMB hash supplied in the user_info structure
@@ -434,9 +424,8 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
ret = pdb_getsampwnam(sampass, user_info->internal_username.str);
unbecome_root();
- if (ret == False)
- {
- DEBUG(3,("Couldn't find user '%s' in passdb file.\n", user_info->internal_username.str));
+ if (ret == False) {
+ DEBUG(3,("check_sam_security: Couldn't find user '%s' in passdb file.\n", user_info->internal_username.str));
pdb_free_sam(&sampass);
return NT_STATUS_NO_SUCH_USER;
}
diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c
index 952aa8ba590..38037414661 100644
--- a/source/auth/auth_util.c
+++ b/source/auth/auth_util.c
@@ -644,6 +644,9 @@ NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups,
*
* currently this is a hack, as there is no sam implementation that is capable
* of groups.
+ *
+ * NOTE!! This function will fail if you pass in a winbind user without
+ * the domain --jerry
******************************************************************************/
static NTSTATUS get_user_groups(const char *username, uid_t uid, gid_t gid,
@@ -926,8 +929,10 @@ static NTSTATUS fill_sam_account(TALLOC_CTX *mem_ctx,
with just 'username'. This is need for accessing the server
as a trust user that actually maps to a local account */
- if ( !passwd )
- passwd = Get_Pwnam(username);
+ if ( !passwd ) {
+ fstrcpy( dom_user, username );
+ passwd = Get_Pwnam( dom_user );
+ }
if (passwd == NULL)
return NT_STATUS_NO_SUCH_USER;
@@ -935,7 +940,13 @@ static NTSTATUS fill_sam_account(TALLOC_CTX *mem_ctx,
*uid = passwd->pw_uid;
*gid = passwd->pw_gid;
- *found_username = talloc_strdup(mem_ctx, passwd->pw_name);
+ /* This is pointless -- there is no suport for differeing
+ unix and windows names. Make sure to always store the
+ one we actuall looked up and succeeded. Have I mentioned
+ why I hate the 'winbind use default domain' parameter?
+ --jerry */
+
+ *found_username = talloc_strdup(mem_ctx, dom_user);
return pdb_init_sam_pw(sam_account, passwd);
}
diff --git a/source/auth/auth_winbind.c b/source/auth/auth_winbind.c
index cae7aadd0c7..d09987ba37a 100644
--- a/source/auth/auth_winbind.c
+++ b/source/auth/auth_winbind.c
@@ -126,15 +126,15 @@ static NTSTATUS check_winbind_security(const struct auth_context *auth_context,
if (result == NSS_STATUS_SUCCESS && response.extra_data) {
if (NT_STATUS_IS_OK(nt_status)) {
- if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3))) {
- nt_status =
- make_server_info_info3(mem_ctx,
- user_info->internal_username.str,
- user_info->smb_name.str,
- user_info->domain.str,
- server_info,
- &info3);
+
+ if (NT_STATUS_IS_OK(nt_status = get_info3_from_ndr(mem_ctx, &response, &info3)))
+ {
+ nt_status = make_server_info_info3(mem_ctx,
+ user_info->internal_username.str,
+ user_info->smb_name.str, user_info->domain.str,
+ server_info, &info3);
}
+
}
} else if (NT_STATUS_IS_OK(nt_status)) {
nt_status = NT_STATUS_NO_LOGON_SERVERS;
diff --git a/source/configure.in b/source/configure.in
index b981313c9ad..1bb97460ac1 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -166,6 +166,7 @@ AC_SUBST(EXTRA_ALL_TARGETS)
AC_ARG_ENABLE(debug,
[ --enable-debug Turn on compiler debugging information (default=no)],
[if eval "test x$enable_debug = xyes"; then
+ echo "DEBUGGING TURNED ON!!!!"
CFLAGS="${CFLAGS} -g"
fi])
@@ -192,11 +193,21 @@ then
fi
dnl Checks for programs.
+
+##
+## for some reason this macro resets the CFLAGS
+## so save and restore
+##
+OLD_CFLAGS=${CFLAGS}
AC_PROG_CC
+CFLAGS=${OLD_CFLAGS}
+
AC_PROG_INSTALL
AC_PROG_AWK
AC_PATH_PROG(PERL, perl)
+AC_CHECK_TOOL(AR, ar)
+
# compile with optimization and without debugging by default, but
# allow people to set their own preference.
if test "x$CFLAGS" = x
@@ -480,7 +491,7 @@ main() {
/* Ensure this is kernel 2.4 or higher */
uname(&uts);
- release = uts.release;
+ release = strdup(uts.release);
major = atoi(strsep(&release, "."));
minor = atoi(strsep(&release, "."));
@@ -1686,7 +1697,7 @@ done
if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
AC_MSG_WARN([Sufficient support for iconv function was not found.
Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
- AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"CP850",[Default dos charset name])
+ AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
fi
@@ -2684,12 +2695,12 @@ AC_ARG_WITH(expsam,
case "$i" in
xml)
## pdb_xml
- AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[])
+ AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
CFLAGS="$CFLAGS $XML_CFLAGS"
;;
mysql)
## pdb_mysql
- AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[])
+ AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
;;
no)
@@ -3072,7 +3083,7 @@ AC_TRY_RUN_STRICT([
#define HAVE_QUOTACTL_4A 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
-#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
+#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
@@ -3085,7 +3096,7 @@ AC_TRY_RUN_STRICT([
#define HAVE_QUOTACTL_4B 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
-#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
+#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
@@ -3099,7 +3110,7 @@ AC_TRY_RUN_STRICT([
#define HAVE_QUOTACTL_3 1
#define AUTOCONF_TEST 1
#include "confdefs.h"
-#include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
+#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
@@ -4096,7 +4107,7 @@ SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB,
SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
-SMB_SUBSYSTEM(PDB,passdb/pdb_interface.c)
+SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
@@ -4108,16 +4119,16 @@ SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
-SMB_SUBSYSTEM(RPC,smbd/server.c)
+SMB_SUBSYSTEM(RPC,smbd/server.o)
SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
-SMB_SUBSYSTEM(IDMAP,sam/idmap.c)
+SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
-SMB_SUBSYSTEM(CHARSET,lib/iconv.c)
+SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
@@ -4126,7 +4137,7 @@ SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
-SMB_SUBSYSTEM(AUTH,auth/auth.c)
+SMB_SUBSYSTEM(AUTH,auth/auth.o)
SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
@@ -4136,7 +4147,7 @@ SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", V
SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
-SMB_SUBSYSTEM(VFS,smbd/vfs.c)
+SMB_SUBSYSTEM(VFS,smbd/vfs.o)
AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
diff --git a/source/include/intl.h b/source/include/intl.h
index 5b56d9aa2c9..01fa3bad976 100644
--- a/source/include/intl.h
+++ b/source/include/intl.h
@@ -22,3 +22,4 @@
/* ideally we would have a static mapping, but that precludes
dynamic loading. This is a reasonable compromise */
#define _(x) lang_msg_rotate(x)
+#define N_(x) (x)
diff --git a/source/include/passdb.h b/source/include/passdb.h
index e3077eee70a..a4b2bcff3fd 100644
--- a/source/include/passdb.h
+++ b/source/include/passdb.h
@@ -57,7 +57,8 @@ enum pdb_elements {
PDB_MUNGEDDIAL,
PDB_HOURS,
PDB_UNKNOWN3,
- PDB_UNKNOWN5,
+ PDB_BAD_PASSWORD_COUNT,
+ PDB_LOGON_COUNT,
PDB_UNKNOWN6,
PDB_LMPASSWD,
PDB_NTPASSWD,
@@ -136,7 +137,10 @@ typedef struct sam_passwd
uint32 hours_len; /* normally 21 bytes */
uint8 hours[MAX_HOURS_LEN];
- uint32 unknown_5; /* 0x0002 0000 */
+ /* Was unknown_5. */
+ uint16 bad_password_count;
+ uint16 logon_count;
+
uint32 unknown_6; /* 0x0000 04ec */
/* a tag for who added the private methods */
const struct pdb_methods *backend_private_methods;
diff --git a/source/include/privileges.h b/source/include/privileges.h
index 67d8a2cbcc1..b7e1b44c2af 100644
--- a/source/include/privileges.h
+++ b/source/include/privileges.h
@@ -53,6 +53,8 @@ typedef struct LUID_ATTR
typedef struct privilege_set
{
+ TALLOC_CTX *mem_ctx;
+ BOOL ext_ctx;
uint32 count;
uint32 control;
LUID_ATTR *set;
diff --git a/source/include/rpc_dce.h b/source/include/rpc_dce.h
index 2e4a418bb7d..52fe08d8753 100644
--- a/source/include/rpc_dce.h
+++ b/source/include/rpc_dce.h
@@ -61,8 +61,14 @@ enum RPC_PKT_TYPE
/* Netlogon schannel auth type and level */
#define NETSEC_AUTH_TYPE 0x44
-#define NETSEC_SIGNATURE { 0x77, 0x00, 0x7a, 0x00, 0xff, 0xff, 0x00, 0x00 }
+#define NETSEC_SIGN_SIGNATURE { 0x77, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
+#define NETSEC_SEAL_SIGNATURE { 0x77, 0x00, 0x7a, 0x00, 0xff, 0xff, 0x00, 0x00 }
#define RPC_AUTH_NETSEC_CHK_LEN 0x20
+
+/* The 7 here seems to be required to get Win2k not to downgrade us
+ to NT4. Actually, anything other than 1ff would seem to do... */
+#define NETLOGON_NEG_AUTH2_FLAGS 0x000701ff
+
#define NETLOGON_NEG_SCHANNEL 0x40000000
enum netsec_direction
@@ -239,13 +245,14 @@ typedef struct rpc_auth_netsec_chk_info
uint8 sig [8]; /* 77 00 7a 00 ff ff 00 00 */
uint8 packet_digest[8]; /* checksum over the packet, MD5'ed with session key */
uint8 seq_num[8]; /* verifier, seq num */
- uint8 data8[8]; /* random 8-byte nonce */
+ uint8 confounder[8]; /* random 8-byte nonce */
} RPC_AUTH_NETSEC_CHK;
struct netsec_auth_struct
{
uchar sess_key[16];
uint32 seq_num;
+ int auth_flags;
};
/* RPC_BIND_REQ - ms req bind */
diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h
index fa49d76c885..2064a38056e 100644
--- a/source/include/rpc_lsa.h
+++ b/source/include/rpc_lsa.h
@@ -657,7 +657,7 @@ typedef struct lsa_r_enumprivsaccount
{
uint32 ptr;
uint32 count;
- PRIVILEGE_SET set;
+ PRIVILEGE_SET *set;
NTSTATUS status;
} LSA_R_ENUMPRIVSACCOUNT;
@@ -703,7 +703,7 @@ typedef struct lsa_q_addprivs
{
POLICY_HND pol; /* policy handle */
uint32 count;
- PRIVILEGE_SET set;
+ PRIVILEGE_SET *set;
} LSA_Q_ADDPRIVS;
typedef struct lsa_r_addprivs
@@ -718,7 +718,7 @@ typedef struct lsa_q_removeprivs
uint32 allrights;
uint32 ptr;
uint32 count;
- PRIVILEGE_SET set;
+ PRIVILEGE_SET *set;
} LSA_Q_REMOVEPRIVS;
typedef struct lsa_r_removeprivs
@@ -728,5 +728,3 @@ typedef struct lsa_r_removeprivs
#endif /* _RPC_LSA_H */
-
-
diff --git a/source/include/rpc_misc.h b/source/include/rpc_misc.h
index a0572a0bfdc..aaaad55c20c 100644
--- a/source/include/rpc_misc.h
+++ b/source/include/rpc_misc.h
@@ -85,49 +85,42 @@ typedef struct enum_hnd_info
{
uint32 ptr_hnd; /* pointer to enumeration handle */
uint32 handle; /* enumeration handle */
-
} ENUM_HND;
/* LOOKUP_LEVEL - switch value */
typedef struct lookup_level_info
{
- uint16 value;
-
+ uint16 value;
} LOOKUP_LEVEL;
/* DOM_SID2 - security id */
typedef struct sid_info_2
{
uint32 num_auths; /* length, bytes, including length of len :-) */
-
DOM_SID sid;
-
} DOM_SID2;
/* STRHDR - string header */
typedef struct header_info
{
- uint16 str_str_len;
- uint16 str_max_len;
- uint32 buffer; /* non-zero */
-
+ uint16 str_str_len;
+ uint16 str_max_len;
+ uint32 buffer; /* non-zero */
} STRHDR;
/* UNIHDR - unicode string header */
typedef struct unihdr_info
{
- uint16 uni_str_len;
- uint16 uni_max_len;
- uint32 buffer; /* usually has a value of 4 */
-
+ uint16 uni_str_len;
+ uint16 uni_max_len;
+ uint32 buffer; /* usually has a value of 4 */
} UNIHDR;
/* UNIHDR2 - unicode string header and undocumented buffer */
typedef struct unihdr2_info
{
- UNIHDR unihdr;
- uint32 buffer; /* 32 bit buffer pointer */
-
+ UNIHDR unihdr;
+ uint32 buffer; /* 32 bit buffer pointer */
} UNIHDR2;
/* clueless as to what maximum length should be */
@@ -138,16 +131,15 @@ typedef struct unihdr2_info
/* UNISTR - unicode string size and buffer */
typedef struct unistr_info
{
- /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */
- uint16 *buffer;
+ /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */
+ uint16 *buffer;
} UNISTR;
/* BUFHDR - buffer header */
typedef struct bufhdr_info
{
- uint32 buf_max_len;
- uint32 buf_len;
-
+ uint32 buf_max_len;
+ uint32 buf_len;
} BUFHDR;
/* BUFFER2 - unicode string, size (in uint8 ascii chars) and buffer */
@@ -155,51 +147,47 @@ typedef struct bufhdr_info
/* of a unicode string different from the other \PIPE\ writers */
typedef struct buffer2_info
{
- uint32 buf_max_len;
- uint32 undoc;
- uint32 buf_len;
- /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */
- uint16 *buffer;
-
+ uint32 buf_max_len;
+ uint32 offset;
+ uint32 buf_len;
+ /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */
+ uint16 *buffer;
} BUFFER2;
/* BUFFER3 */
typedef struct buffer3_info
{
- uint32 buf_max_len;
- uint8 *buffer; /* Data */
- uint32 buf_len;
-
+ uint32 buf_max_len;
+ uint8 *buffer; /* Data */
+ uint32 buf_len;
} BUFFER3;
/* BUFFER5 */
typedef struct buffer5_info
{
- uint32 buf_len;
- uint16 *buffer; /* data */
+ uint32 buf_len;
+ uint16 *buffer; /* data */
} BUFFER5;
/* UNISTR2 - unicode string size (in uint16 unicode chars) and buffer */
typedef struct unistr2_info
{
- uint32 uni_max_len;
- uint32 undoc;
- uint32 uni_str_len;
- /* unicode characters. ***MUST*** be little-endian.
- **must** be null-terminated and the uni_str_len should include
- the NULL character */
- uint16 *buffer;
-
+ uint32 uni_max_len;
+ uint32 offset;
+ uint32 uni_str_len;
+ /* unicode characters. ***MUST*** be little-endian.
+ **must** be null-terminated and the uni_str_len should include
+ the NULL character */
+ uint16 *buffer;
} UNISTR2;
/* STRING2 - string size (in uint8 chars) and buffer */
typedef struct string2_info
{
- uint32 str_max_len;
- uint32 undoc;
- uint32 str_str_len;
- uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */
-
+ uint32 str_max_len;
+ uint32 offset;
+ uint32 str_str_len;
+ uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */
} STRING2;
/* UNISTR3 - XXXX not sure about this structure */
@@ -266,85 +254,77 @@ typedef struct domrid3_info
/* DOM_RID4 - rid + user attributes */
typedef struct domrid4_info
{
- uint32 unknown;
- uint16 attr;
- uint32 rid; /* user RID */
-
+ uint32 unknown;
+ uint16 attr;
+ uint32 rid; /* user RID */
} DOM_RID4;
/* DOM_CLNT_SRV - client / server names */
typedef struct clnt_srv_info
{
- uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */
- UNISTR2 uni_logon_srv; /* logon server name */
- uint32 undoc_buffer2; /* undocumented 32 bit buffer pointer */
- UNISTR2 uni_comp_name; /* client machine name */
-
+ uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */
+ UNISTR2 uni_logon_srv; /* logon server name */
+ uint32 undoc_buffer2; /* undocumented 32 bit buffer pointer */
+ UNISTR2 uni_comp_name; /* client machine name */
} DOM_CLNT_SRV;
/* DOM_LOG_INFO - login info */
typedef struct log_info
{
- uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */
- UNISTR2 uni_logon_srv; /* logon server name */
- UNISTR2 uni_acct_name; /* account name */
- uint16 sec_chan; /* secure channel type */
- UNISTR2 uni_comp_name; /* client machine name */
-
+ uint32 undoc_buffer; /* undocumented 32 bit buffer pointer */
+ UNISTR2 uni_logon_srv; /* logon server name */
+ UNISTR2 uni_acct_name; /* account name */
+ uint16 sec_chan; /* secure channel type */
+ UNISTR2 uni_comp_name; /* client machine name */
} DOM_LOG_INFO;
/* DOM_CHAL - challenge info */
typedef struct chal_info
{
- uchar data[8]; /* credentials */
+ uchar data[8]; /* credentials */
} DOM_CHAL;
/* DOM_CREDs - timestamped client or server credentials */
typedef struct cred_info
{
- DOM_CHAL challenge; /* credentials */
- UTIME timestamp; /* credential time-stamp */
+ DOM_CHAL challenge; /* credentials */
+ UTIME timestamp; /* credential time-stamp */
} DOM_CRED;
/* DOM_CLNT_INFO - client info */
typedef struct clnt_info
{
- DOM_LOG_INFO login;
- DOM_CRED cred;
-
+ DOM_LOG_INFO login;
+ DOM_CRED cred;
} DOM_CLNT_INFO;
/* DOM_CLNT_INFO2 - client info */
typedef struct clnt_info2
{
- DOM_CLNT_SRV login;
- uint32 ptr_cred;
- DOM_CRED cred;
-
+ DOM_CLNT_SRV login;
+ uint32 ptr_cred;
+ DOM_CRED cred;
} DOM_CLNT_INFO2;
/* DOM_LOGON_ID - logon id */
typedef struct logon_info
{
- uint32 low;
- uint32 high;
-
+ uint32 low;
+ uint32 high;
} DOM_LOGON_ID;
/* OWF INFO */
typedef struct owf_info
{
- uint8 data[16];
-
+ uint8 data[16];
} OWF_INFO;
/* DOM_GID - group id + user attributes */
typedef struct gid_info
{
- uint32 g_rid; /* a group RID */
- uint32 attr;
-
+ uint32 g_rid; /* a group RID */
+ uint32 attr;
} DOM_GID;
/* POLICY_HND */
@@ -355,7 +335,6 @@ typedef struct lsa_policy_info
uint16 data3;
uint16 data4;
uint8 data5[8];
-
#ifdef __INSURE__
/* To prevent the leakage of policy handles mallocate a bit of
@@ -366,7 +345,6 @@ typedef struct lsa_policy_info
char *marker;
#endif
-
} POLICY_HND;
/*
@@ -425,5 +403,5 @@ typedef struct buffer4_info
}
BUFFER4;
-
+enum unistr2_term_codes { UNI_FLAGS_NONE = 0, UNI_STR_TERMINATE = 1, UNI_MAXLEN_TERMINATE = 2 };
#endif /* _RPC_MISC_H */
diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h
index 4d9ad0b2e18..3b81042df37 100644
--- a/source/include/rpc_samr.h
+++ b/source/include/rpc_samr.h
@@ -189,7 +189,9 @@ typedef struct sam_user_info_23
/* uint8 pad[2] */
uint32 ptr_logon_hrs; /* pointer to logon hours */
- uint32 unknown_5; /* 0x0001 0000 */
+ /* Was unknown_5. */
+ uint16 bad_password_count;
+ uint16 logon_count;
uint8 padding1[6];
@@ -312,7 +314,9 @@ typedef struct sam_user_info_21
/* uint8 pad[2] */
uint32 ptr_logon_hrs; /* unknown pointer */
- uint32 unknown_5; /* 0x0002 0000 */
+ /* Was unknown_5. */
+ uint16 bad_password_count;
+ uint16 logon_count;
uint8 padding1[6];
diff --git a/source/include/smbldap.h b/source/include/smbldap.h
index 826fc3c55a1..9765b9fbd60 100644
--- a/source/include/smbldap.h
+++ b/source/include/smbldap.h
@@ -88,6 +88,8 @@
#define LDAP_ATTR_SID 32
#define LDAP_ATTR_ALGORITHMIC_RID_BASE 33
#define LDAP_ATTR_NEXT_RID 34
+#define LDAP_ATTR_BAD_PASSWORD_COUNT 35
+#define LDAP_ATTR_LOGON_COUNT 36
typedef struct _attrib_map_entry {
int attrib;
diff --git a/source/include/talloc.h b/source/include/talloc.h
index 4badddbb880..433b52ec954 100644
--- a/source/include/talloc.h
+++ b/source/include/talloc.h
@@ -30,6 +30,27 @@
/**
* talloc allocation pool. All allocated blocks can be freed in one go.
**/
+
+struct talloc_chunk {
+ struct talloc_chunk *next;
+ size_t size;
+ void *ptr;
+};
+
+struct talloc_ctx {
+ struct talloc_chunk *list;
+ size_t total_alloc_size;
+
+ /** The name recorded for this pool, if any. Should describe
+ * the purpose for which it was allocated. The string is
+ * allocated within the pool. **/
+ char *name;
+
+ /** Pointer to the next allocate talloc pool, so that we can
+ * summarize all talloc memory usage. **/
+ struct talloc_ctx *next_ctx;
+};
+
typedef struct talloc_ctx TALLOC_CTX;
TALLOC_CTX *talloc_init(char const *fmt, ...) PRINTF_ATTRIBUTE(1, 2);
diff --git a/source/intl/lang_tdb.c b/source/intl/lang_tdb.c
index 5409ce6619d..af70b529ff9 100644
--- a/source/intl/lang_tdb.c
+++ b/source/intl/lang_tdb.c
@@ -176,16 +176,47 @@ BOOL lang_tdb_init(const char *lang)
const char *lang_msg(const char *msgid)
{
TDB_DATA key, data;
+ char *p, *q, *msgid_quoted;
+ int count;
lang_tdb_init(NULL);
if (!tdb) return msgid;
- key.dptr = (char *)msgid;
- key.dsize = strlen(msgid)+1;
+ /* Due to the way quotes in msgids are escaped in the msg file we
+ must replace " with \" before doing a lookup in the tdb. */
+
+ count = 0;
+
+ for(p = msgid; *p; p++) {
+ if (*p == '\"')
+ count++;
+ }
+
+ if (!(msgid_quoted = malloc(strlen(msgid) + count + 1)))
+ return msgid;
+
+ /* string_sub() is unsuitable here as it replaces some punctuation
+ chars with underscores. */
+
+ for(p = msgid, q = msgid_quoted; *p; p++) {
+ if (*p == '\"') {
+ *q = '\\';
+ q++;
+ }
+ *q = *p;
+ q++;
+ }
+
+ *q = 0;
+
+ key.dptr = (char *)msgid_quoted;
+ key.dsize = strlen(msgid_quoted)+1;
data = tdb_fetch(tdb, key);
+ free(msgid_quoted);
+
/* if the message isn't found then we still need to return a pointer
that can be freed. Pity. */
if (!data.dptr)
diff --git a/source/lib/afs.c b/source/lib/afs.c
index faeca3d0c33..882442a79f1 100644
--- a/source/lib/afs.c
+++ b/source/lib/afs.c
@@ -154,7 +154,7 @@ BOOL afs_login(connection_struct *conn)
cell += 1;
strlower_m(cell);
- DEBUG(10, ("Trying to log into AFS for user %s@%s\n",
+ DEBUG(10, ("Trying to log into AFS for user %s@%s\n",
afs_username, cell));
if (!secrets_init())
diff --git a/source/lib/getsmbpass.c b/source/lib/getsmbpass.c
index b6ae09b3181..27cd5e6dfa2 100644
--- a/source/lib/getsmbpass.c
+++ b/source/lib/getsmbpass.c
@@ -83,71 +83,95 @@ static int tcsetattr(int fd, int flags, struct sgttyb *t)
static struct termios t;
#endif /* SYSV_TERMIO */
+static SIG_ATOMIC_T gotintr;
+static int in_fd = -1;
+
+/***************************************************************
+ Signal function to tell us were ^C'ed.
+****************************************************************/
+
+static void gotintr_sig(void)
+{
+ gotintr = 1;
+ if (in_fd != -1)
+ close(in_fd); /* Safe way to force a return. */
+ in_fd = -1;
+}
+
char *getsmbpass(const char *prompt)
{
- FILE *in, *out;
- int echo_off;
- static char buf[256];
- static size_t bufsize = sizeof(buf);
- size_t nread;
-
- /* Catch problematic signals */
- CatchSignal(SIGINT, SIGNAL_CAST SIG_IGN);
-
- /* Try to write to and read from the terminal if we can.
- If we can't open the terminal, use stderr and stdin. */
-
- in = fopen ("/dev/tty", "w+");
- if (in == NULL)
- {
- in = stdin;
- out = stderr;
- }
- else
- out = in;
-
- setvbuf(in, NULL, _IONBF, 0);
-
- /* Turn echoing off if it is on now. */
-
- if (tcgetattr (fileno (in), &t) == 0)
- {
- if (ECHO_IS_ON(t))
- {
- TURN_ECHO_OFF(t);
- echo_off = tcsetattr (fileno (in), TCSAFLUSH, &t) == 0;
- TURN_ECHO_ON(t);
+ FILE *in, *out;
+ int echo_off;
+ static char buf[256];
+ static size_t bufsize = sizeof(buf);
+ size_t nread;
+
+ /* Catch problematic signals */
+ CatchSignal(SIGINT, SIGNAL_CAST gotintr_sig);
+
+ /* Try to write to and read from the terminal if we can.
+ If we can't open the terminal, use stderr and stdin. */
+
+ in = fopen ("/dev/tty", "w+");
+ if (in == NULL) {
+ in = stdin;
+ out = stderr;
+ } else {
+ out = in;
+ }
+
+ setvbuf(in, NULL, _IONBF, 0);
+
+ /* Turn echoing off if it is on now. */
+
+ if (tcgetattr (fileno (in), &t) == 0) {
+ if (ECHO_IS_ON(t)) {
+ TURN_ECHO_OFF(t);
+ echo_off = tcsetattr (fileno (in), TCSAFLUSH, &t) == 0;
+ TURN_ECHO_ON(t);
+ } else {
+ echo_off = 0;
+ }
+ } else {
+ echo_off = 0;
+ }
+
+ /* Write the prompt. */
+ fputs(prompt, out);
+ fflush(out);
+
+ /* Read the password. */
+ buf[0] = 0;
+ if (!gotintr) {
+ in_fd = fileno(in);
+ fgets(buf, bufsize, in);
+ }
+ nread = strlen(buf);
+ if (buf[nread - 1] == '\n')
+ buf[nread - 1] = '\0';
+
+ /* Restore echoing. */
+ if (echo_off) {
+ if (gotintr && in_fd == -1)
+ in = fopen ("/dev/tty", "w+");
+ if (in != NULL)
+ tcsetattr (fileno (in), TCSANOW, &t);
+ }
+
+ if (in != stdin) /* We opened the terminal; now close it. */
+ fclose(in);
+
+ /* Catch problematic signals */
+ CatchSignal(SIGINT, SIGNAL_CAST SIG_DFL);
+
+ printf("\n");
+
+ if (gotintr) {
+ printf("Interupted by signal.\n");
+ fflush(stdout);
+ exit(1);
}
- else
- echo_off = 0;
- }
- else
- echo_off = 0;
-
- /* Write the prompt. */
- fputs (prompt, out);
- fflush (out);
-
- /* Read the password. */
- buf[0] = 0;
- fgets(buf, bufsize, in);
- nread = strlen(buf);
- if (buf[nread - 1] == '\n')
- buf[nread - 1] = '\0';
-
- /* Restore echoing. */
- if (echo_off)
- (void) tcsetattr (fileno (in), TCSANOW, &t);
-
- if (in != stdin)
- /* We opened the terminal; now close it. */
- fclose (in);
-
- /* Catch problematic signals */
- CatchSignal(SIGINT, SIGNAL_CAST SIG_DFL);
-
- printf("\n");
- return buf;
+ return buf;
}
#else
diff --git a/source/lib/iconv.c b/source/lib/iconv.c
index 3d26d7e17c9..0326ca70611 100644
--- a/source/lib/iconv.c
+++ b/source/lib/iconv.c
@@ -136,7 +136,7 @@ static size_t sys_iconv(void *cd,
* enough that Samba works on systems that don't have iconv.
**/
size_t smb_iconv(smb_iconv_t cd,
- const char **inbuf, size_t *inbytesleft,
+ char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
char cvtbuf[2048];
diff --git a/source/lib/module.c b/source/lib/module.c
index 941a6cfbe39..38fcf0f3297 100644
--- a/source/lib/module.c
+++ b/source/lib/module.c
@@ -210,18 +210,21 @@ void smb_run_idle_events(time_t now)
struct smb_idle_list_ent *event = smb_idle_event_list;
while (event) {
+ struct smb_idle_list_ent *next = event->next;
time_t interval;
- if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) {
+ if (event->interval <= 0) {
+ interval = SMB_IDLE_EVENT_DEFAULT_INTERVAL;
+ } else if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) {
interval = event->interval;
} else {
interval = SMB_IDLE_EVENT_MIN_INTERVAL;
}
if (now >(event->lastrun+interval)) {
- event->fn(&event->data,&event->interval,now);
event->lastrun = now;
+ event->fn(&event->data,&event->interval,now);
}
- event = event->next;
+ event = next;
}
return;
diff --git a/source/lib/sysquotas.c b/source/lib/sysquotas.c
index 617f624daea..3223ecb580b 100644
--- a/source/lib/sysquotas.c
+++ b/source/lib/sysquotas.c
@@ -19,8 +19,6 @@
*/
-#ifndef AUTOCONF_TEST
-
#include "includes.h"
#ifdef HAVE_SYS_QUOTAS
@@ -742,7 +740,7 @@ static int command_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
if (lines) {
char *line = lines[0];
- DEBUG (3, ("Read output from get_quota, \"r%s\"\n", line));
+ DEBUG (3, ("Read output from get_quota, \"%s\"\n", line));
/* we need to deal with long long unsigned here, if supported */
@@ -1011,99 +1009,3 @@ int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DI
}
#endif /* HAVE_SYS_QUOTAS */
-#else /* ! AUTOCONF_TEST */
-/* this is the autoconf driver to test witch quota system we should use */
-
-#if defined(HAVE_QUOTACTL_4A)
-/* long quotactl(int cmd, char *special, qid_t id, caddr_t addr) */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#ifdef HAVE_ASM_TYPES_H
-#include <asm/types.h>
-#endif
-
-#if defined(HAVE_LINUX_QUOTA_H)
-# include <linux/quota.h>
-# if defined(HAVE_STRUCT_IF_DQBLK)
-# define SYS_DQBLK if_dqblk
-# elif defined(HAVE_STRUCT_MEM_DQBLK)
-# define SYS_DQBLK mem_dqblk
-# endif
-#elif defined(HAVE_SYS_QUOTA_H)
-# include <sys/quota.h>
-#endif
-
-#ifndef SYS_DQBLK
-#define SYS_DQBLK dqblk
-#endif
-
- int autoconf_quota(void)
-{
- int ret = -1;
- struct SYS_DQBLK D;
-
- ret = quotactl(Q_GETQUOTA,"/dev/hda1",0,(void *)&D);
-
- return ret;
-}
-
-#elif defined(HAVE_QUOTACTL_4B)
-/* int quotactl(const char *path, int cmd, int id, char *addr); */
-
-#ifdef HAVE_SYS_QUOTA_H
-#include <sys/quota.h>
-#else /* *BSD */
-#include <sys/types.h>
-#include <ufs/ufs/quota.h>
-#include <machine/param.h>
-#endif
-
- int autoconf_quota(void)
-{
- int ret = -1;
- struct dqblk D;
-
- ret = quotactl("/",Q_GETQUOTA,0,(char *) &D);
-
- return ret;
-}
-
-#elif defined(HAVE_QUOTACTL_3)
-/* int quotactl (char *spec, int request, char *arg); */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_QUOTA_H
-#include <sys/quota.h>
-#endif
-
- int autoconf_quota(void)
-{
- int ret = -1;
- struct q_request request;
-
- ret = quotactl("/", Q_GETQUOTA, &request);
-
- return ret;
-}
-
-#elif defined(HAVE_QUOTACTL_2)
-
-#error HAVE_QUOTACTL_2 not implemented
-
-#else
-
-#error Unknow QUOTACTL prototype
-
-#endif
-
- int main(void)
-{
- autoconf_quota();
- return 0;
-}
-#endif /* AUTOCONF_TEST */
diff --git a/source/lib/system.c b/source/lib/system.c
index b020a203730..2e95efec79b 100644
--- a/source/lib/system.c
+++ b/source/lib/system.c
@@ -693,7 +693,6 @@ int sys_getgroups(int setlen, gid_t *gidset)
#endif /* HAVE_BROKEN_GETGROUPS */
}
-#ifdef HAVE_SETGROUPS
/**************************************************************************
Wrapper for setgroups. Deals with broken (int) case. Automatically used
@@ -702,6 +701,11 @@ int sys_getgroups(int setlen, gid_t *gidset)
int sys_setgroups(int setlen, gid_t *gidset)
{
+#if !defined(HAVE_SETGROUPS)
+ errno = ENOSYS;
+ return -1;
+#endif /* HAVE_SETGROUPS */
+
#if !defined(HAVE_BROKEN_GETGROUPS)
return setgroups(setlen, gidset);
#else
@@ -742,8 +746,6 @@ int sys_setgroups(int setlen, gid_t *gidset)
#endif /* HAVE_BROKEN_GETGROUPS */
}
-#endif /* HAVE_SETGROUPS */
-
/**************************************************************************
Wrappers for setpwent(), getpwent() and endpwent()
****************************************************************************/
diff --git a/source/lib/system_smbd.c b/source/lib/system_smbd.c
index bcbc8c61e64..73c910e631d 100644
--- a/source/lib/system_smbd.c
+++ b/source/lib/system_smbd.c
@@ -92,7 +92,7 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups, in
restore_re_gid();
- if (setgroups(ngrp_saved, gids_saved) != 0) {
+ if (sys_setgroups(ngrp_saved, gids_saved) != 0) {
/* yikes! */
DEBUG(0,("ERROR: getgrouplist: failed to reset group list!\n"));
smb_panic("getgrouplist: failed to reset group list!\n");
diff --git a/source/lib/talloc.c b/source/lib/talloc.c
index b6c8b2efdf0..485dc28f31d 100644
--- a/source/lib/talloc.c
+++ b/source/lib/talloc.c
@@ -54,27 +54,6 @@
#include "includes.h"
-struct talloc_chunk {
- struct talloc_chunk *next;
- size_t size;
- void *ptr;
-};
-
-
-struct talloc_ctx {
- struct talloc_chunk *list;
- size_t total_alloc_size;
-
- /** The name recorded for this pool, if any. Should describe
- * the purpose for which it was allocated. The string is
- * allocated within the pool. **/
- char *name;
-
- /** Pointer to the next allocate talloc pool, so that we can
- * summarize all talloc memory usage. **/
- struct talloc_ctx *next_ctx;
-};
-
/**
* Start of linked list of all talloc pools.
diff --git a/source/lib/util_seaccess.c b/source/lib/util_seaccess.c
index eba8cab7fb8..cb0f46e2f9d 100644
--- a/source/lib/util_seaccess.c
+++ b/source/lib/util_seaccess.c
@@ -23,22 +23,6 @@
extern DOM_SID global_sid_Builtin;
-/**********************************************************************************
- Check if this ACE has a SID in common with the token.
-**********************************************************************************/
-
-static BOOL token_sid_in_ace(const NT_USER_TOKEN *token, const SEC_ACE *ace)
-{
- size_t i;
-
- for (i = 0; i < token->num_sids; i++) {
- if (sid_equal(&ace->trustee, &token->user_sids[i]))
- return True;
- }
-
- return False;
-}
-
/*********************************************************************************
Check an ACE against a SID. We return the remaining needed permission
bits not yet granted. Zero means permission allowed (no more needed bits).
@@ -332,119 +316,6 @@ BOOL se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token,
return False;
}
-/* Create a child security descriptor using another security descriptor as
- the parent container. This child object can either be a container or
- non-container object. */
-
-SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr,
- BOOL child_container)
-{
- SEC_DESC_BUF *sdb;
- SEC_DESC *sd;
- SEC_ACL *new_dacl, *the_acl;
- SEC_ACE *new_ace_list = NULL;
- unsigned int new_ace_list_ndx = 0, i;
- size_t size;
-
- /* Currently we only process the dacl when creating the child. The
- sacl should also be processed but this is left out as sacls are
- not implemented in Samba at the moment.*/
-
- the_acl = parent_ctr->dacl;
-
- if (!(new_ace_list = talloc(ctx, sizeof(SEC_ACE) * the_acl->num_aces)))
- return NULL;
-
- for (i = 0; the_acl && i < the_acl->num_aces; i++) {
- SEC_ACE *ace = &the_acl->ace[i];
- SEC_ACE *new_ace = &new_ace_list[new_ace_list_ndx];
- uint8 new_flags = 0;
- BOOL inherit = False;
- fstring sid_str;
-
- /* The OBJECT_INHERIT_ACE flag causes the ACE to be
- inherited by non-container children objects. Container
- children objects will inherit it as an INHERIT_ONLY
- ACE. */
-
- if (ace->flags & SEC_ACE_FLAG_OBJECT_INHERIT) {
-
- if (!child_container) {
- new_flags |= SEC_ACE_FLAG_OBJECT_INHERIT;
- } else {
- new_flags |= SEC_ACE_FLAG_INHERIT_ONLY;
- }
-
- inherit = True;
- }
-
- /* The CONAINER_INHERIT_ACE flag means all child container
- objects will inherit and use the ACE. */
-
- if (ace->flags & SEC_ACE_FLAG_CONTAINER_INHERIT) {
- if (!child_container) {
- inherit = False;
- } else {
- new_flags |= SEC_ACE_FLAG_CONTAINER_INHERIT;
- }
- }
-
- /* The INHERIT_ONLY_ACE is not used by the se_access_check()
- function for the parent container, but is inherited by
- all child objects as a normal ACE. */
-
- if (ace->flags & SEC_ACE_FLAG_INHERIT_ONLY) {
- /* Move along, nothing to see here */
- }
-
- /* The SEC_ACE_FLAG_NO_PROPAGATE_INHERIT flag means the ACE
- is inherited by child objects but not grandchildren
- objects. We clear the object inherit and container
- inherit flags in the inherited ACE. */
-
- if (ace->flags & SEC_ACE_FLAG_NO_PROPAGATE_INHERIT) {
- new_flags &= ~(SEC_ACE_FLAG_OBJECT_INHERIT |
- SEC_ACE_FLAG_CONTAINER_INHERIT);
- }
-
- /* Add ACE to ACE list */
-
- if (!inherit)
- continue;
-
- init_sec_access(&new_ace->info, ace->info.mask);
- init_sec_ace(new_ace, &ace->trustee, ace->type,
- new_ace->info, new_flags);
-
- sid_to_string(sid_str, &ace->trustee);
-
- DEBUG(5, ("se_create_child_secdesc(): %s:%d/0x%02x/0x%08x "
- " inherited as %s:%d/0x%02x/0x%08x\n", sid_str,
- ace->type, ace->flags, ace->info.mask,
- sid_str, new_ace->type, new_ace->flags,
- new_ace->info.mask));
-
- new_ace_list_ndx++;
- }
-
- /* Create child security descriptor to return */
-
- new_dacl = make_sec_acl(ctx, ACL_REVISION, new_ace_list_ndx, new_ace_list);
-
- /* Use the existing user and group sids. I don't think this is
- correct. Perhaps the user and group should be passed in as
- parameters by the caller? */
-
- sd = make_sec_desc(ctx, SEC_DESC_REVISION,
- parent_ctr->owner_sid,
- parent_ctr->grp_sid,
- parent_ctr->sacl,
- new_dacl, &size);
-
- sdb = make_sec_desc_buf(ctx, size, sd);
-
- return sdb;
-}
/*******************************************************************
samr_make_sam_obj_sd
@@ -479,7 +350,7 @@ NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size)
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
diff --git a/source/lib/util_sid.c b/source/lib/util_sid.c
index fbb393770d5..50bbb4c72c6 100644
--- a/source/lib/util_sid.c
+++ b/source/lib/util_sid.c
@@ -638,7 +638,7 @@ void print_guid(GUID *guid)
Tallocs a duplicate SID.
********************************************************************/
-DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, DOM_SID *src)
+DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, const DOM_SID *src)
{
DOM_SID *dst;
diff --git a/source/lib/util_unistr.c b/source/lib/util_unistr.c
index e7c200218e2..e90a824395c 100644
--- a/source/lib/util_unistr.c
+++ b/source/lib/util_unistr.c
@@ -819,22 +819,25 @@ UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src)
{
size_t len;
- if (!src) return NULL;
+ if (!src)
+ return NULL;
len = strlen_w(src);
/* allocate UNISTR2 destination if not given */
if (!dst) {
dst = (UNISTR2*) talloc(ctx, sizeof(UNISTR2));
- if (!dst) return NULL;
+ if (!dst)
+ return NULL;
}
if (!dst->buffer) {
dst->buffer = (uint16*) talloc(ctx, sizeof(uint16) * (len + 1));
- if (!dst->buffer) return NULL;
+ if (!dst->buffer)
+ return NULL;
}
/* set UNISTR2 parameters */
dst->uni_max_len = len + 1;
- dst->undoc = 0;
+ dst->offset = 0;
dst->uni_str_len = len;
/* copy the actual unicode string */
@@ -842,4 +845,3 @@ UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src)
return dst;
}
-
diff --git a/source/libads/ldap.c b/source/libads/ldap.c
index 48401cc3d80..8c3185ea5e3 100644
--- a/source/libads/ldap.c
+++ b/source/libads/ldap.c
@@ -1787,7 +1787,8 @@ ADS_STATUS ads_USN(ADS_STRUCT *ads, uint32 *usn)
void *res;
status = ads_do_search_retry(ads, "", LDAP_SCOPE_BASE, "(objectclass=*)", attrs, &res);
- if (!ADS_ERR_OK(status)) return status;
+ if (!ADS_ERR_OK(status))
+ return status;
if (ads_count_replies(ads, res) != 1) {
return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
diff --git a/source/libads/ldap_utils.c b/source/libads/ldap_utils.c
index 1fa9ebfc975..4142bceabca 100644
--- a/source/libads/ldap_utils.c
+++ b/source/libads/ldap_utils.c
@@ -54,15 +54,20 @@ ADS_STATUS ads_do_search_retry(ADS_STRUCT *ads, const char *bind_path, int scope
return status;
}
- if (*res) ads_msgfree(ads, *res);
+ if (*res)
+ ads_msgfree(ads, *res);
*res = NULL;
+
DEBUG(3,("Reopening ads connection to realm '%s' after error %s\n",
ads->config.realm, ads_errstr(status)));
+
if (ads->ld) {
ldap_unbind(ads->ld);
}
+
ads->ld = NULL;
status = ads_connect(ads);
+
if (!ADS_ERR_OK(status)) {
DEBUG(1,("ads_search_retry: failed to reconnect (%s)\n",
ads_errstr(status)));
diff --git a/source/libsmb/errormap.c b/source/libsmb/errormap.c
index 3d99e3d5e52..4d9a717e1c0 100644
--- a/source/libsmb/errormap.c
+++ b/source/libsmb/errormap.c
@@ -1490,7 +1490,7 @@ const 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_OBJECT_NAME_NOT_FOUND },
- { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND },
+ { ENOTDIR, ERRDOS, ERRbadpath, NT_STATUS_NOT_A_DIRECTORY },
{ 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/locking/brlock.c b/source/locking/brlock.c
index 20d76c9c792..c51a5a2aac9 100644
--- a/source/locking/brlock.c
+++ b/source/locking/brlock.c
@@ -172,7 +172,8 @@ static BOOL brl_conflict_other(struct lock_struct *lck1, struct lock_struct *lck
}
if (lck1->start >= (lck2->start + lck2->size) ||
- lck2->start >= (lck1->start + lck1->size)) return False;
+ lck2->start >= (lck1->start + lck1->size))
+ return False;
return True;
}
@@ -305,7 +306,7 @@ static int lock_compare(struct lock_struct *lck1,
NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum,
uint16 smbpid, pid_t pid, uint16 tid,
br_off start, br_off size,
- enum brl_type lock_type)
+ enum brl_type lock_type, BOOL *my_lock_ctx)
{
TDB_DATA kbuf, dbuf;
int count, i;
@@ -315,6 +316,7 @@ NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum,
static int last_failed = -1;
static br_off last_failed_start;
+ *my_lock_ctx = False;
kbuf = locking_key(dev,ino);
dbuf.dptr = NULL;
@@ -343,6 +345,9 @@ NTSTATUS brl_lock(SMB_DEV_T dev, SMB_INO_T ino, int fnum,
for (i=0; i<count; i++) {
if (brl_conflict(&locks[i], &lock)) {
status = NT_STATUS_LOCK_NOT_GRANTED;
+ /* Did we block ourselves ? */
+ if (brl_same_context(&locks[i].context, &lock.context))
+ *my_lock_ctx = True;
goto fail;
}
#if ZERO_ZERO
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 4475f1446f9..c3abd638182 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -98,7 +98,7 @@ BOOL is_locked(files_struct *fsp,connection_struct *conn,
****************************************************************************/
static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_pid,
- SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type)
+ SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type, BOOL *my_lock_ctx)
{
NTSTATUS status = NT_STATUS_LOCK_NOT_GRANTED;
@@ -114,7 +114,7 @@ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_p
status = brl_lock(fsp->dev, fsp->inode, fsp->fnum,
lock_pid, sys_getpid(), conn->cnum,
offset, count,
- lock_type);
+ lock_type, my_lock_ctx);
if (NT_STATUS_IS_OK(status) && lp_posix_locking(SNUM(conn))) {
@@ -153,7 +153,7 @@ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_p
****************************************************************************/
NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid,
- SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type)
+ SMB_BIG_UINT count,SMB_BIG_UINT offset,enum brl_type lock_type, BOOL *my_lock_ctx)
{
int j, maxj = lp_lock_spin_count();
int sleeptime = lp_lock_sleep_time();
@@ -165,7 +165,7 @@ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid
ret = NT_STATUS_OK; /* to keep dumb compilers happy */
for (j = 0; j < maxj; j++) {
- status = do_lock(fsp, conn, lock_pid, count, offset, lock_type);
+ status = do_lock(fsp, conn, lock_pid, count, offset, lock_type, my_lock_ctx);
if (!NT_STATUS_EQUAL(status, NT_STATUS_LOCK_NOT_GRANTED) &&
!NT_STATUS_EQUAL(status, NT_STATUS_FILE_LOCK_CONFLICT)) {
return status;
@@ -173,6 +173,9 @@ NTSTATUS do_lock_spin(files_struct *fsp,connection_struct *conn, uint16 lock_pid
/* if we do fail then return the first error code we got */
if (j == 0) {
ret = status;
+ /* Don't spin if we blocked ourselves. */
+ if (*my_lock_ctx)
+ return ret;
}
if (sleeptime)
sys_usleep(sleeptime);
@@ -419,10 +422,10 @@ int get_share_modes(connection_struct *conn,
struct locking_data *data;
int num_share_modes;
share_mode_entry *shares = NULL;
-
+ TDB_DATA key = locking_key(dev, inode);
*pp_shares = NULL;
- dbuf = tdb_fetch(tdb, locking_key(dev, inode));
+ dbuf = tdb_fetch(tdb, key);
if (!dbuf.dptr)
return 0;
@@ -469,7 +472,7 @@ int get_share_modes(connection_struct *conn,
/* The record has shrunk a bit */
dbuf.dsize -= del_count * sizeof(share_mode_entry);
- if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1) {
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) {
SAFE_FREE(shares);
SAFE_FREE(dbuf.dptr);
return 0;
@@ -544,12 +547,13 @@ ssize_t del_share_entry( SMB_DEV_T dev, SMB_INO_T inode,
int i, del_count=0;
share_mode_entry *shares;
ssize_t count = 0;
+ TDB_DATA key = locking_key(dev, inode);
if (ppse)
*ppse = NULL;
/* read in the existing share modes */
- dbuf = tdb_fetch(tdb, locking_key(dev, inode));
+ dbuf = tdb_fetch(tdb, key);
if (!dbuf.dptr)
return -1;
@@ -590,10 +594,10 @@ ssize_t del_share_entry( SMB_DEV_T dev, SMB_INO_T inode,
/* store it back in the database */
if (data->u.num_share_mode_entries == 0) {
- if (tdb_delete(tdb, locking_key(dev, inode)) == -1)
+ if (tdb_delete(tdb, key) == -1)
count = -1;
} else {
- if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1)
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1)
count = -1;
}
}
@@ -630,10 +634,11 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type)
struct locking_data *data;
char *p=NULL;
int size;
+ TDB_DATA key = locking_key_fsp(fsp);
BOOL ret = True;
/* read in the existing share modes if any */
- dbuf = tdb_fetch(tdb, locking_key_fsp(fsp));
+ dbuf = tdb_fetch(tdb, key);
if (!dbuf.dptr) {
size_t offset;
/* we'll need to create a new record */
@@ -658,7 +663,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type)
fill_share_mode(p + sizeof(*data), fsp, port, op_type);
dbuf.dptr = p;
dbuf.dsize = size;
- if (tdb_store(tdb, locking_key_fsp(fsp), dbuf, TDB_REPLACE) == -1)
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1)
ret = False;
print_share_mode_table((struct locking_data *)p);
@@ -688,7 +693,7 @@ BOOL set_share_mode(files_struct *fsp, uint16 port, uint16 op_type)
SAFE_FREE(dbuf.dptr);
dbuf.dptr = p;
dbuf.dsize = size;
- if (tdb_store(tdb, locking_key_fsp(fsp), dbuf, TDB_REPLACE) == -1)
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1)
ret = False;
print_share_mode_table((struct locking_data *)p);
SAFE_FREE(p);
@@ -709,9 +714,10 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
share_mode_entry *shares;
BOOL need_store=False;
BOOL ret = True;
+ TDB_DATA key = locking_key(dev, inode);
/* read in the existing share modes */
- dbuf = tdb_fetch(tdb, locking_key(dev, inode));
+ dbuf = tdb_fetch(tdb, key);
if (!dbuf.dptr)
return False;
@@ -729,10 +735,10 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
/* if the mod fn was called then store it back */
if (need_store) {
if (data->u.num_share_mode_entries == 0) {
- if (tdb_delete(tdb, locking_key(dev, inode)) == -1)
+ if (tdb_delete(tdb, key) == -1)
ret = False;
} else {
- if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1)
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1)
ret = False;
}
}
@@ -808,9 +814,10 @@ BOOL modify_delete_flag( SMB_DEV_T dev, SMB_INO_T inode, BOOL delete_on_close)
struct locking_data *data;
int i;
share_mode_entry *shares;
+ TDB_DATA key = locking_key(dev, inode);
/* read in the existing share modes */
- dbuf = tdb_fetch(tdb, locking_key(dev, inode));
+ dbuf = tdb_fetch(tdb, key);
if (!dbuf.dptr)
return False;
@@ -826,7 +833,7 @@ BOOL modify_delete_flag( SMB_DEV_T dev, SMB_INO_T inode, BOOL delete_on_close)
/* store it back */
if (data->u.num_share_mode_entries) {
- if (tdb_store(tdb, locking_key(dev,inode), dbuf, TDB_REPLACE)==-1) {
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE)==-1) {
SAFE_FREE(dbuf.dptr);
return False;
}
diff --git a/source/modules/vfs_recycle.c b/source/modules/vfs_recycle.c
index b1b2ac03538..9b31f6afb95 100644
--- a/source/modules/vfs_recycle.c
+++ b/source/modules/vfs_recycle.c
@@ -213,7 +213,7 @@ static BOOL recycle_create_dir(vfs_handle_struct *handle, const char *dname)
char *tok_str;
BOOL ret = False;
- mode = S_IREAD | S_IWRITE | S_IEXEC;
+ mode = S_IRUSR | S_IWUSR | S_IXUSR;
tmp_str = strdup(dname);
ALLOC_CHECK(tmp_str, done);
diff --git a/source/nmbd/nmbd_winsserver.c b/source/nmbd/nmbd_winsserver.c
index 484588c6626..36940724207 100644
--- a/source/nmbd/nmbd_winsserver.c
+++ b/source/nmbd/nmbd_winsserver.c
@@ -107,7 +107,7 @@ static void wins_hook(const char *operation, struct name_record *namerec, int tt
{
pstring command;
char *cmd = lp_wins_hook();
- char *p;
+ char *p, *namestr;
int i;
if (!cmd || !*cmd) return;
@@ -119,11 +119,17 @@ static void wins_hook(const char *operation, struct name_record *namerec, int tt
}
}
+ /* Use the name without the nametype (and scope) appended */
+
+ namestr = nmb_namestr(&namerec->name);
+ if ((p = strchr(namestr, '<')))
+ *p = 0;
+
p = command;
p += slprintf(p, sizeof(command)-1, "%s %s %s %02x %d",
cmd,
operation,
- nmb_namestr(&namerec->name),
+ namestr,
namerec->name.name_type,
ttl);
diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c
index c64359a2241..ef3f0f8fc20 100644
--- a/source/nsswitch/winbindd_ads.c
+++ b/source/nsswitch/winbindd_ads.c
@@ -787,9 +787,13 @@ static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32 *seq)
}
rc = ads_USN(ads, seq);
+
if (!ADS_ERR_OK(rc)) {
- /* its a dead connection */
- ads_destroy(&ads);
+
+ /* its a dead connection ; don't destroy it
+ through since ads_USN() has already done
+ that indirectly */
+
domain->private = NULL;
}
return ads_ntstatus(rc);
@@ -910,8 +914,11 @@ static NTSTATUS domain_sid(struct winbindd_domain *domain, DOM_SID *sid)
rc = ads_domain_sid(ads, sid);
if (!ADS_ERR_OK(rc)) {
- /* its a dead connection */
- ads_destroy(&ads);
+
+ /* its a dead connection; don't destroy it though
+ since that has already been done indirectly
+ by ads_domain_sid() */
+
domain->private = NULL;
}
diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c
index ea2868b2cf9..d696428de4c 100644
--- a/source/nsswitch/winbindd_pam.c
+++ b/source/nsswitch/winbindd_pam.c
@@ -65,7 +65,7 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
time_t last_change_time;
uint32 sec_channel_type;
NET_USER_INFO_3 info3;
- struct cli_state *cli;
+ struct cli_state *cli = NULL;
uchar chal[8];
TALLOC_CTX *mem_ctx = NULL;
DATA_BLOB lm_resp;
@@ -128,7 +128,6 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
do {
ZERO_STRUCT(info3);
ZERO_STRUCT(ret_creds);
- cli = NULL;
retry = False;
/* Don't shut this down - it belongs to the connection cache code */
@@ -148,8 +147,17 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
&info3);
attempts += 1;
+ /* We have to try a second time as cm_get_netlogon_cli
+ might not yet have noticed that the DC has killed
+ our connection. */
+
+ if ( cli->fd == -1 ) {
+ retry = True;
+ continue;
+ }
+
/* if we get access denied, a possible cuase was that we had and open
- connection to the DC, but someone changed our machine accoutn password
+ connection to the DC, but someone changed our machine account password
out from underneath us using 'net rpc changetrustpw' */
if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) ) {
@@ -158,12 +166,9 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
name_domain));
winbindd_cm_flush();
retry = True;
+ cli = NULL;
}
- /* We have to try a second time as cm_get_netlogon_cli
- might not yet have noticed that the DC has killed
- our connection. */
-
} while ( (attempts < 2) && retry );
clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
@@ -206,7 +211,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
time_t last_change_time;
uint32 sec_channel_type;
NET_USER_INFO_3 info3;
- struct cli_state *cli;
+ struct cli_state *cli = NULL;
TALLOC_CTX *mem_ctx = NULL;
char *user = NULL;
const char *domain = NULL;
@@ -301,7 +306,6 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
do {
ZERO_STRUCT(info3);
ZERO_STRUCT(ret_creds);
- cli = NULL;
retry = False;
/* Don't shut this down - it belongs to the connection cache code */
@@ -323,8 +327,17 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
attempts += 1;
- /* if we get access denied, a possible cuase was that we had and open
- connection to the DC, but someone changed our machine accoutn password
+ /* We have to try a second time as cm_get_netlogon_cli
+ might not yet have noticed that the DC has killed
+ our connection. */
+
+ if ( cli->fd == -1 ) {
+ retry = True;
+ continue;
+ }
+
+ /* if we get access denied, a possible cause was that we had and open
+ connection to the DC, but someone changed our machine account password
out from underneath us using 'net rpc changetrustpw' */
if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_ACCESS_DENIED) ) {
@@ -333,12 +346,9 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
domain));
winbindd_cm_flush();
retry = True;
+ cli = NULL;
}
- /* We have to try a second time as cm_get_netlogon_cli
- might not yet have noticed that the DC has killed
- our connection. */
-
} while ( (attempts < 2) && retry );
clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
diff --git a/source/param/loadparm.c b/source/param/loadparm.c
index 0efa2796c36..5a5ac4a2cc1 100644
--- a/source/param/loadparm.c
+++ b/source/param/loadparm.c
@@ -185,7 +185,6 @@ typedef struct
int mangle_prefix;
int max_log_size;
char *szLogLevel;
- int mangled_stack;
int max_xmit;
int max_mux;
int max_open_files;
@@ -753,7 +752,7 @@ static const struct enum_list enum_map_to_guest[] = {
*/
static struct parm_struct parm_table[] = {
- {"Base Options", P_SEP, P_SEPARATOR},
+ {N_("Base Options"), P_SEP, P_SEPARATOR},
{"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, handle_charset, NULL, FLAG_ADVANCED},
{"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, handle_charset, NULL, FLAG_ADVANCED},
@@ -773,7 +772,7 @@ static struct parm_struct parm_table[] = {
{"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD},
{"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD},
- {"Security Options", P_SEP, P_SEPARATOR},
+ {N_("Security Options"), P_SEP, P_SEPARATOR},
{"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD},
{"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_ADVANCED},
@@ -857,7 +856,7 @@ static struct parm_struct parm_table[] = {
{"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE},
{"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
- {"Logging Options", P_SEP, P_SEPARATOR},
+ {N_("Logging Options"), P_SEP, P_SEPARATOR},
{"log level", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_ADVANCED},
{"debuglevel", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_HIDE},
@@ -872,7 +871,7 @@ static struct parm_struct parm_table[] = {
{"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_ADVANCED},
{"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_ADVANCED},
- {"Protocol Options", P_SEP, P_SEPARATOR},
+ {N_("Protocol Options"), P_SEP, P_SEPARATOR},
{"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED},
{"protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_ADVANCED},
@@ -909,7 +908,7 @@ static struct parm_struct parm_table[] = {
{"server signing", P_ENUM, P_GLOBAL, &Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED},
{"client use spnego", P_BOOL, P_GLOBAL, &Globals.bClientUseSpnego, NULL, NULL, FLAG_ADVANCED},
- {"Tuning Options", P_SEP, P_SEPARATOR},
+ {N_("Tuning Options"), P_SEP, P_SEPARATOR},
{"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, FLAG_ADVANCED},
@@ -938,7 +937,7 @@ static struct parm_struct parm_table[] = {
{"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED},
- {"Printing Options", P_SEP, P_SEPARATOR},
+ {N_("Printing Options"), P_SEP, P_SEPARATOR},
{"max reported print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxReportedPrintJobs, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT},
{"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT},
@@ -968,11 +967,10 @@ static struct parm_struct parm_table[] = {
{"use client driver", P_BOOL, P_LOCAL, &sDefault.bUseClientDriver, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT},
{"default devmode", P_BOOL, P_LOCAL, &sDefault.bDefaultDevmode, NULL, NULL, FLAG_ADVANCED | FLAG_PRINT},
- {"Filename Handling", P_SEP, P_SEPARATOR},
+ {N_("Filename Handling"), P_SEP, P_SEPARATOR},
{"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, FLAG_ADVANCED},
{"mangle prefix", P_INTEGER, P_GLOBAL, &Globals.mangle_prefix, NULL, NULL, FLAG_ADVANCED},
- {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED},
{"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_ADVANCED | FLAG_SHARE},
{"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE},
@@ -992,14 +990,14 @@ static struct parm_struct parm_table[] = {
{"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
- {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
+ {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_DEPRECATED },
{"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_ADVANCED},
- {"Domain Options", P_SEP, P_SEPARATOR},
+ {N_("Domain Options"), P_SEP, P_SEPARATOR},
{"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD},
- {"Logon Options", P_SEP, P_SEPARATOR},
+ {N_("Logon Options"), P_SEP, P_SEPARATOR},
{"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED},
{"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, FLAG_ADVANCED},
@@ -1018,7 +1016,7 @@ static struct parm_struct parm_table[] = {
{"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, FLAG_ADVANCED},
{"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED},
- {"Browse Options", P_SEP, P_SEPARATOR},
+ {N_("Browse Options"), P_SEP, P_SEPARATOR},
{"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED},
{"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, FLAG_ADVANCED},
@@ -1032,7 +1030,7 @@ static struct parm_struct parm_table[] = {
{"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE},
{"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_ADVANCED},
- {"WINS Options", P_SEP, P_SEPARATOR},
+ {N_("WINS Options"), P_SEP, P_SEPARATOR},
{"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, FLAG_ADVANCED},
{"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, FLAG_ADVANCED},
@@ -1042,7 +1040,7 @@ static struct parm_struct parm_table[] = {
{"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED},
{"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD},
- {"Locking Options", P_SEP, P_SEPARATOR},
+ {N_("Locking Options"), P_SEP, P_SEPARATOR},
{"blocking locks", P_BOOL, P_LOCAL, &sDefault.bBlockingLocks, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
@@ -1060,7 +1058,7 @@ static struct parm_struct parm_table[] = {
{"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
{"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
- {"Ldap Options", P_SEP, P_SEPARATOR},
+ {N_("Ldap Options"), P_SEP, P_SEPARATOR},
#ifdef WITH_LDAP_SAMCONFIG
{"ldap server", P_STRING, P_GLOBAL, &Globals.szLdapServer, NULL, NULL, FLAG_ADVANCED},
@@ -1077,7 +1075,7 @@ static struct parm_struct parm_table[] = {
{"ldap passwd sync", P_ENUM, P_GLOBAL, &Globals.ldap_passwd_sync, NULL, enum_ldap_passwd_sync, FLAG_ADVANCED},
{"ldap delete dn", P_BOOL, P_GLOBAL, &Globals.ldap_delete_dn, NULL, NULL, FLAG_ADVANCED},
- {"Miscellaneous Options", P_SEP, P_SEPARATOR},
+ {N_("Miscellaneous Options"), P_SEP, P_SEPARATOR},
{"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, FLAG_ADVANCED},
{"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, FLAG_ADVANCED},
{"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, FLAG_ADVANCED},
@@ -1137,7 +1135,7 @@ static struct parm_struct parm_table[] = {
{"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED},
{"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED},
- {"VFS module options", P_SEP, P_SEPARATOR},
+ {N_("VFS module options"), P_SEP, P_SEPARATOR},
{"vfs objects", P_LIST, P_LOCAL, &sDefault.szVfsObjects, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE},
{"vfs object", P_LIST, P_LOCAL, &sDefault.szVfsObjects, NULL, NULL, FLAG_HIDE},
@@ -1147,7 +1145,7 @@ static struct parm_struct parm_table[] = {
{"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE},
{"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED},
- {"Winbind options", P_SEP, P_SEPARATOR},
+ {N_("Winbind options"), P_SEP, P_SEPARATOR},
{"enable rid algorithm", P_BOOL, P_GLOBAL, &Globals.bEnableRidAlgorithm, NULL, NULL, FLAG_DEPRECATED},
{"idmap backend", P_STRING, P_GLOBAL, &Globals.szIdmapBackend, NULL, NULL, FLAG_ADVANCED},
@@ -1361,7 +1359,6 @@ static void init_globals(void)
Globals.AlgorithmicRidBase = BASE_RID;
Globals.bLoadPrinters = True;
- Globals.mangled_stack = 50;
/* Was 65535 (0xFFFF). 0x4101 matches W2K and causes major speed improvements... */
/* Discovered by 2 days of pain by Don McCall @ HP :-). */
Globals.max_xmit = 0x4104;
diff --git a/source/passdb/passdb.c b/source/passdb/passdb.c
index 78f36eb9b6d..9d8f600eeac 100644
--- a/source/passdb/passdb.c
+++ b/source/passdb/passdb.c
@@ -83,7 +83,8 @@ void pdb_fill_default_sam(SAM_ACCOUNT *user)
user->private.logon_divs = 168; /* hours per week */
user->private.hours_len = 21; /* 21 times 8 bits = 168 */
memset(user->private.hours, 0xff, user->private.hours_len); /* available at all hours */
- user->private.unknown_5 = 0x00000000; /* don't know */
+ user->private.bad_password_count = 0;
+ user->private.logon_count = 0;
user->private.unknown_6 = 0x000004ec; /* don't know */
/* Some parts of samba strlen their pdb_get...() returns,
@@ -103,6 +104,13 @@ void pdb_fill_default_sam(SAM_ACCOUNT *user)
user->private.plaintext_pw = NULL;
+ /*
+ Unless we know otherwise have a Account Control Bit
+ value of 'normal user'. This helps User Manager, which
+ asks for a filtered list of users.
+ */
+
+ user->private.acct_ctrl = ACB_NORMAL;
}
static void destroy_pdb_talloc(SAM_ACCOUNT **user)
@@ -935,7 +943,7 @@ BOOL local_password_change(const char *user_name, int local_flags,
if ((local_flags & LOCAL_ADD_USER) || (local_flags & LOCAL_DELETE_USER)) {
/* Might not exist in /etc/passwd. Use rid algorithm here */
if (!NT_STATUS_IS_OK(pdb_init_sam_new(&sam_pass, user_name, 0))) {
- slprintf(err_str, err_str_len-1, "Failed initialise SAM_ACCOUNT for user %s.\n", user_name);
+ slprintf(err_str, err_str_len-1, "Failed to initialise SAM_ACCOUNT for user %s.\n", user_name);
return False;
}
} else {
@@ -1280,7 +1288,7 @@ BOOL local_sid_to_gid(gid_t *pgid, const DOM_SID *psid, enum SID_NAME_USE *name_
Marshall/unmarshall SAM_ACCOUNT structs.
*********************************************************************/
-#define TDB_FORMAT_STRING "ddddddBBBBBBBBBBBBddBBwdwdBdd"
+#define TDB_FORMAT_STRING "ddddddBBBBBBBBBBBBddBBwdwdBwwd"
/**********************************************************************
Intialize a SAM_ACCOUNT struct from a BYTE buffer of size len
@@ -1315,8 +1323,9 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
fullname_len, homedir_len, logon_script_len,
profile_path_len, acct_desc_len, workstations_len;
- uint32 user_rid, group_rid, unknown_3, hours_len, unknown_5, unknown_6;
+ uint32 user_rid, group_rid, unknown_3, hours_len, unknown_6;
uint16 acct_ctrl, logon_divs;
+ uint16 bad_password_count, logon_count;
uint8 *hours;
static uint8 *lm_pw_ptr, *nt_pw_ptr;
uint32 len = 0;
@@ -1357,7 +1366,8 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
&logon_divs,
&hours_len,
&hourslen, &hours,
- &unknown_5,
+ &bad_password_count,
+ &logon_count,
&unknown_6);
if (len == -1) {
@@ -1432,7 +1442,8 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
pdb_set_group_sid_from_rid(sampass, group_rid, PDB_SET);
pdb_set_unknown_3(sampass, unknown_3, PDB_SET);
pdb_set_hours_len(sampass, hours_len, PDB_SET);
- pdb_set_unknown_5(sampass, unknown_5, PDB_SET);
+ pdb_set_bad_password_count(sampass, bad_password_count, PDB_SET);
+ pdb_set_logon_count(sampass, logon_count, PDB_SET);
pdb_set_unknown_6(sampass, unknown_6, PDB_SET);
pdb_set_acct_ctrl(sampass, acct_ctrl, PDB_SET);
pdb_set_logon_divs(sampass, logon_divs, PDB_SET);
@@ -1640,7 +1651,8 @@ uint32 init_buffer_from_sam (uint8 **buf, const SAM_ACCOUNT *sampass, BOOL size_
pdb_get_logon_divs(sampass),
pdb_get_hours_len(sampass),
MAX_HOURS_LEN, pdb_get_hours(sampass),
- pdb_get_unknown_5(sampass),
+ pdb_get_bad_password_count(sampass),
+ pdb_get_logon_count(sampass),
pdb_get_unknown_6(sampass));
@@ -1682,7 +1694,8 @@ uint32 init_buffer_from_sam (uint8 **buf, const SAM_ACCOUNT *sampass, BOOL size_
pdb_get_logon_divs(sampass),
pdb_get_hours_len(sampass),
MAX_HOURS_LEN, pdb_get_hours(sampass),
- pdb_get_unknown_5(sampass),
+ pdb_get_bad_password_count(sampass),
+ pdb_get_logon_count(sampass),
pdb_get_unknown_6(sampass));
diff --git a/source/passdb/pdb_get_set.c b/source/passdb/pdb_get_set.c
index 15054585512..46c49be8b11 100644
--- a/source/passdb/pdb_get_set.c
+++ b/source/passdb/pdb_get_set.c
@@ -314,12 +314,20 @@ uint32 pdb_get_unknown_3 (const SAM_ACCOUNT *sampass)
return (-1);
}
-uint32 pdb_get_unknown_5 (const SAM_ACCOUNT *sampass)
+uint16 pdb_get_bad_password_count(const SAM_ACCOUNT *sampass)
{
if (sampass)
- return (sampass->private.unknown_5);
+ return (sampass->private.bad_password_count);
else
- return (-1);
+ return 0;
+}
+
+uint16 pdb_get_logon_count(const SAM_ACCOUNT *sampass)
+{
+ if (sampass)
+ return (sampass->private.logon_count);
+ else
+ return 0;
}
uint32 pdb_get_unknown_6 (const SAM_ACCOUNT *sampass)
@@ -501,7 +509,7 @@ BOOL pdb_set_init_flags (SAM_ACCOUNT *sampass, enum pdb_elements element, enum p
return True;
}
-BOOL pdb_set_user_sid (SAM_ACCOUNT *sampass, DOM_SID *u_sid, enum pdb_value_state flag)
+BOOL pdb_set_user_sid (SAM_ACCOUNT *sampass, const DOM_SID *u_sid, enum pdb_value_state flag)
{
if (!sampass || !u_sid)
return False;
@@ -537,7 +545,7 @@ BOOL pdb_set_user_sid_from_string (SAM_ACCOUNT *sampass, fstring u_sid, enum pdb
return True;
}
-BOOL pdb_set_group_sid (SAM_ACCOUNT *sampass, DOM_SID *g_sid, enum pdb_value_state flag)
+BOOL pdb_set_group_sid (SAM_ACCOUNT *sampass, const DOM_SID *g_sid, enum pdb_value_state flag)
{
if (!sampass || !g_sid)
return False;
@@ -984,14 +992,24 @@ BOOL pdb_set_unknown_3 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state
return pdb_set_init_flags(sampass, PDB_UNKNOWN3, flag);
}
-BOOL pdb_set_unknown_5 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state flag)
+BOOL pdb_set_bad_password_count(SAM_ACCOUNT *sampass, uint16 bad_password_count, enum pdb_value_state flag)
+{
+ if (!sampass)
+ return False;
+
+ sampass->private.bad_password_count = bad_password_count;
+
+ return pdb_set_init_flags(sampass, PDB_BAD_PASSWORD_COUNT, flag);
+}
+
+BOOL pdb_set_logon_count(SAM_ACCOUNT *sampass, uint16 logon_count, enum pdb_value_state flag)
{
if (!sampass)
return False;
- sampass->private.unknown_5 = unkn;
+ sampass->private.logon_count = logon_count;
- return pdb_set_init_flags(sampass, PDB_UNKNOWN5, flag);
+ return pdb_set_init_flags(sampass, PDB_LOGON_COUNT, flag);
}
BOOL pdb_set_unknown_6 (SAM_ACCOUNT *sampass, uint32 unkn, enum pdb_value_state flag)
diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c
index e00631fb7dd..5cf1691f0dd 100644
--- a/source/passdb/pdb_ldap.c
+++ b/source/passdb/pdb_ldap.c
@@ -61,7 +61,7 @@
#if defined(LDAP_EXOP_X_MODIFY_PASSWD) && !defined(LDAP_EXOP_MODIFY_PASSWD)
#define LDAP_EXOP_MODIFY_PASSWD LDAP_EXOP_X_MODIFY_PASSWD
#elif !defined(LDAP_EXOP_MODIFY_PASSWD)
-#define "1.3.6.1.4.1.4203.1.11.1"
+#define LDAP_EXOP_MODIFY_PASSWD "1.3.6.1.4.1.4203.1.11.1"
#endif
#if defined(LDAP_EXOP_X_MODIFY_PASSWD_ID) && !defined(LDAP_EXOP_MODIFY_PASSWD_ID)
@@ -422,6 +422,8 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state,
smbntpwd[NT_HASH_LEN];
uint16 acct_ctrl = 0,
logon_divs;
+ uint16 bad_password_count = 0,
+ logon_count = 0;
uint32 hours_len;
uint8 hours[MAX_HOURS_LEN];
pstring temp;
@@ -704,7 +706,23 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state,
pdb_set_munged_dial(sampass, munged_dial, PDB_SET);
/* pdb_set_unknown_3(sampass, unknown3, PDB_SET); */
- /* pdb_set_unknown_5(sampass, unknown5, PDB_SET); */
+
+ if (!smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_BAD_PASSWORD_COUNT), temp)) {
+ /* leave as default */
+ } else {
+ bad_password_count = (uint32) atol(temp);
+ pdb_set_bad_password_count(sampass, bad_password_count, PDB_SET);
+ }
+
+ if (!smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LOGON_COUNT), temp)) {
+ /* leave as default */
+ } else {
+ logon_count = (uint32) atol(temp);
+ pdb_set_logon_count(sampass, logon_count, PDB_SET);
+ }
+
/* pdb_set_unknown_6(sampass, unknown6, PDB_SET); */
pdb_set_hours(sampass, hours, PDB_SET);
diff --git a/source/passdb/pdb_mysql.c b/source/passdb/pdb_mysql.c
index 6c200be5045..7c2c56e3594 100644
--- a/source/passdb/pdb_mysql.c
+++ b/source/passdb/pdb_mysql.c
@@ -49,7 +49,8 @@
#define CONFIG_UNKNOWN_3_DEFAULT "unknown_3"
#define CONFIG_LOGON_DIVS_DEFAULT "logon_divs"
#define CONFIG_HOURS_LEN_DEFAULT "hours_len"
-#define CONFIG_UNKNOWN_5_DEFAULT "unknown_5"
+#define CONFIG_BAD_PASSWORD_COUNT_DEFAULT "bad_password_count"
+#define CONFIG_LOGON_COUNT_DEFAULT "logon_count"
#define CONFIG_UNKNOWN_6_DEFAULT "unknown_6"
#define CONFIG_HOST_DEFAULT "localhost"
#define CONFIG_USER_DEFAULT "samba"
@@ -155,7 +156,7 @@ static const char * config_value_write(pdb_mysql_data * data, const char *name,
if (!v)
return NULL;
- swrite = strchr(v, ':');
+ swrite = strrchr(v, ':');
/* Default to the same field as read field */
if (!swrite)
@@ -181,7 +182,7 @@ static const char * config_value_read(pdb_mysql_data * data, const char *name, c
if (!v)
return "NULL";
- swrite = strchr(v, ':');
+ swrite = strrchr(v, ':');
/* If no write is specified, there are no problems */
if (!swrite) {
@@ -240,14 +241,20 @@ static NTSTATUS row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
pdb_set_unknown_str(u, row[16], PDB_SET);
pdb_set_munged_dial(u, row[17], PDB_SET);
- if(row[18])string_to_sid(&sid, row[18]);
- pdb_set_user_sid(u, &sid, PDB_SET);
- if(row[19])string_to_sid(&sid, row[19]);
- pdb_set_group_sid(u, &sid, PDB_SET);
+ if(!row[18] || !string_to_sid(&sid, row[18])) {
+ DEBUG(0,("No user SID retrieved from database!\n"));
+ } else {
+ pdb_set_user_sid(u, &sid, PDB_SET);
+ }
- if (pdb_gethexpwd(row[20], temp), PDB_SET)
+ if(row[19]) {
+ string_to_sid(&sid, row[19]);
+ pdb_set_group_sid(u, &sid, PDB_SET);
+ }
+
+ if (pdb_gethexpwd(row[20], temp))
pdb_set_lanman_passwd(u, temp, PDB_SET);
- if (pdb_gethexpwd(row[21], temp), PDB_SET)
+ if (pdb_gethexpwd(row[21], temp))
pdb_set_nt_passwd(u, temp, PDB_SET);
/* Only use plaintext password storage when lanman and nt are
@@ -259,8 +266,9 @@ static NTSTATUS row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
pdb_set_unknown_3(u, xatol(row[24]), PDB_SET);
pdb_set_logon_divs(u, xatol(row[25]), PDB_SET);
pdb_set_hours_len(u, xatol(row[26]), PDB_SET);
- pdb_set_unknown_5(u, xatol(row[27]), PDB_SET);
- pdb_set_unknown_6(u, xatol(row[28]), PDB_SET);
+ pdb_set_bad_password_count(u, xatol(row[27]), PDB_SET);
+ pdb_set_logon_count(u, xatol(row[28]), PDB_SET);
+ pdb_set_unknown_6(u, xatol(row[29]), PDB_SET);
return NT_STATUS_OK;
}
@@ -278,7 +286,7 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
}
asprintf(&query,
- "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s",
+ "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s",
config_value_read(data, "logon time column",
CONFIG_LOGON_TIME_DEFAULT),
config_value_read(data, "logoff time column",
@@ -333,8 +341,10 @@ static NTSTATUS mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
CONFIG_LOGON_DIVS_DEFAULT),
config_value_read(data, "hours len column",
CONFIG_HOURS_LEN_DEFAULT),
- config_value_read(data, "unknown 5 column",
- CONFIG_UNKNOWN_5_DEFAULT),
+ config_value_read(data, "bad password count column",
+ CONFIG_BAD_PASSWORD_COUNT_DEFAULT),
+ config_value_read(data, "logon count column",
+ CONFIG_LOGON_COUNT_DEFAULT),
config_value_read(data, "unknown 6 column",
CONFIG_UNKNOWN_6_DEFAULT),
config_value(data, "table", CONFIG_TABLE_DEFAULT)
@@ -442,7 +452,7 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
}
asprintf(&query,
- "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s WHERE %s = '%s'",
+ "SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s WHERE %s = '%s'",
config_value_read(data, "logon time column",
CONFIG_LOGON_TIME_DEFAULT),
config_value_read(data, "logoff time column",
@@ -497,8 +507,10 @@ static NTSTATUS mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOU
CONFIG_LOGON_DIVS_DEFAULT),
config_value_read(data, "hours len column",
CONFIG_HOURS_LEN_DEFAULT),
- config_value_read(data, "unknown 5 column",
- CONFIG_UNKNOWN_5_DEFAULT),
+ config_value_read(data, "bad password count column",
+ CONFIG_BAD_PASSWORD_COUNT_DEFAULT),
+ config_value_read(data, "logon count column",
+ CONFIG_LOGON_COUNT_DEFAULT),
config_value_read(data, "unknown 6 column",
CONFIG_UNKNOWN_6_DEFAULT),
config_value(data, "table", CONFIG_TABLE_DEFAULT), field,
@@ -645,6 +657,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
const SAM_ACCOUNT * newpwd, char isupdate)
{
pstring temp;
+ char *field;
struct pdb_mysql_data *data;
pdb_mysql_query query;
fstring sid_str;
@@ -655,6 +668,7 @@ static NTSTATUS mysqlsam_replace_sam_account(struct pdb_methods *methods,
}
data = (struct pdb_mysql_data *) methods->private_data;
+
if (data == NULL || data->handle == NULL) {
DEBUG(0, ("invalid handle!\n"));
return NT_STATUS_INVALID_HANDLE;
@@ -872,6 +886,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
{
NTSTATUS nt_status;
struct pdb_mysql_data *data;
+ const char *sid_column, *username_column;
mysqlsam_debug_level = debug_add_class("mysqlsam");
if (mysqlsam_debug_level == -1) {
@@ -880,6 +895,7 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
("mysqlsam: Couldn't register custom debugging class!\n"));
}
+
if (!pdb_context) {
DEBUG(0, ("invalid pdb_methods specified\n"));
return NT_STATUS_UNSUCCESSFUL;
@@ -927,6 +943,14 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
DEBUG(0, ("Failed to connect to server\n"));
return NT_STATUS_UNSUCCESSFUL;
}
+
+ sid_column = config_value_read(data, "user sid column", CONFIG_USER_SID_DEFAULT);
+ username_column = config_value_read(data, "username column", CONFIG_USERNAME_DEFAULT);
+ if(!strcmp(sid_column,"NULL") || !strcmp(username_column, "NULL")) {
+ DEBUG(0,("Please specify both a valid 'user sid column' and a valid 'username column' in smb.conf\n"));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
/* Process correct entry in $HOME/.my.conf */
if (!mysql_real_connect(data->handle,
config_value(data, "mysql host", CONFIG_HOST_DEFAULT),
diff --git a/source/passdb/pdb_smbpasswd.c b/source/passdb/pdb_smbpasswd.c
index 8171b65adcc..8cdbec9b9d0 100644
--- a/source/passdb/pdb_smbpasswd.c
+++ b/source/passdb/pdb_smbpasswd.c
@@ -261,7 +261,11 @@ static FILE *startsmbfilepwent(const char *pfile, enum pwf_access_type type, int
setvbuf(fp, (char *)NULL, _IOFBF, 1024);
/* Make sure it is only rw by the owner */
+#ifdef HAVE_FCHMOD
if(fchmod(fileno(fp), S_IRUSR|S_IWUSR) == -1) {
+#else
+ if(chmod(pfile, S_IRUSR|S_IWUSR) == -1) {
+#endif
DEBUG(0, ("startsmbfilepwent_internal: failed to set 0600 permissions on password file %s. \
Error was %s\n.", pfile, strerror(errno) ));
pw_file_unlock(fileno(fp), lock_depth);
diff --git a/source/passdb/pdb_xml.c b/source/passdb/pdb_xml.c
index 7af2fdd9402..29922bca4f9 100644
--- a/source/passdb/pdb_xml.c
+++ b/source/passdb/pdb_xml.c
@@ -159,8 +159,13 @@ static BOOL parseUser(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT *
atol(xmlNodeListGetString
(doc, cur->xmlChildrenNode, 1)), PDB_SET);
- else if (!strcmp(cur->name, "unknown_5") && cur->ns == ns)
- pdb_set_unknown_5(u,
+ else if (!strcmp(cur->name, "bad_password_count") && cur->ns == ns)
+ pdb_set_bad_password_count(u,
+ atol(xmlNodeListGetString
+ (doc, cur->xmlChildrenNode, 1)), PDB_SET);
+
+ else if (!strcmp(cur->name, "logon_count") && cur->ns == ns)
+ pdb_set_logon_count(u,
atol(xmlNodeListGetString
(doc, cur->xmlChildrenNode, 1)), PDB_SET);
@@ -495,7 +500,8 @@ static NTSTATUS xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT
xmlNewChild(user, data->ns, "hours_len",
iota(pdb_get_hours_len(u)));
- xmlNewChild(user, data->ns, "unknown_5", iota(pdb_get_unknown_5(u)));
+ xmlNewChild(user, data->ns, "bad_password_count", iota(pdb_get_bad_password_count(u)));
+ xmlNewChild(user, data->ns, "logon_count", iota(pdb_get_logon_count(u)));
xmlNewChild(user, data->ns, "unknown_6", iota(pdb_get_unknown_6(u)));
xmlSaveFile(data->location, data->doc);
diff --git a/source/po/de.msg b/source/po/de.msg
index 6a8da43ae3a..e2294d50871 100644
--- a/source/po/de.msg
+++ b/source/po/de.msg
@@ -1,1707 +1,593 @@
# German messages for international release of SWAT.
# Copyright (C) 2001 Andreas Moroder
-
+#
+# 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.
+#
msgid ""
msgstr ""
-"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-10-27 14:05+0100\n"
+"Project-Id-Version: i18n_swat\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2000-02-08 14:45+0100\n"
-"Last-Translator: Andreas Moroder"
+"Last-Translator: Andreas Moroder\n"
"Language-Team: (Samba Team) <samba-technical@samba.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: \n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "ERRORE: Kann %s nicht ffnen\n"
+msgid "ERROR: Can't open %s"
+msgstr "ERRORE: Kann %s nicht ffnen"
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr "Hilfe"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr "Setze Standardwerte"
-#: web/swat.c:502
+#: ../web/swat.c:408
+#, c-format
+msgid "failed to open %s for writing"
+msgstr ""
+
+#: ../web/swat.c:431
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
-msgstr "Verbunden als <b>%s</b><p>\n"
+msgid "Can't reload %s"
+msgstr ""
-#: web/swat.c:505
+#: ../web/swat.c:501
+#, c-format
+msgid "Logged in as <b>%s</b>"
+msgstr "Verbunden als <b>%s</b>"
+
+#: ../web/swat.c:505
msgid "Home"
msgstr "Home"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
msgstr "Globals"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
msgstr "Freigaben"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
msgstr "Drucker"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr ""
+
+#: ../web/swat.c:513
msgid "Status"
msgstr "Status"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
msgstr "Zeige Konfiguration"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
msgstr "Passwortverwaltung"
-#: web/swat.c:539
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "Aktuelle Konfiguration"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "Basis Ansicht"
+
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "Erweiterte Ansicht"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "トndere Passwort"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "Aktuelle Konfiguration"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "Normale Ansich"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "Komplette Ansicht"
-#: web/swat.c:561
-msgid "Global Variables"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr ""
+
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr ""
+
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr ""
+
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr ""
+
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr ""
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr ""
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "Kommentar"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "Drucker Parameter"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr ""
+
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr ""
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr "Dom舅en master"
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr "Dom舅en master"
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr ""
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr ""
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr "nicht hinabsteigen"
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr ""
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr ""
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr ""
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr ""
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr ""
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr ""
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr ""
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr "Globale Variablen"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
msgid "Commit Changes"
msgstr "Speichere トnderungen"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
msgid "Reset Values"
msgstr "Setze Werte zurck"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "Erweiterte Ansicht"
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "Basis Ansicht"
-
-#: web/swat.c:613
+#: ../web/swat.c:844
msgid "Share Parameters"
msgstr "Parameter der Freigabe"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
msgstr "W臧le Freigabe"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
msgstr "Lsche Freigabe"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
msgstr "Erstelle Freigabe"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr "トnderung des Passworts im Demo modus nicht aktiv"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
-msgstr " \"Benutzername\" muss angegeben werden \n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr ""
+
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
+msgstr " \"Benutzername\" muss angegeben werden "
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
-msgstr " \"Altes Passwort\" mu゚ angegeben werden \n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
+msgstr " \"Altes Passwort\" mu゚ angegeben werden "
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
-msgstr " \"Remote Maschine\" mu゚ angegeben werden \n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
+msgstr " \"Remote Maschine\" mu゚ angegeben werden "
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
-msgstr " "Neues/Best舩ige Passwort" mu゚ angegeben werden \n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
+msgstr " \"Neues/Best舩ige Passwort\" mu゚ angegeben werden "
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
-msgstr " Das best舩igte Passwort stimmt nicht mit dem neuen Passwort berein\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
+msgstr " Das best舩igte Passwort stimmt nicht mit dem neuen Passwort berein"
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
-msgstr " Das Passwort fr '%s' wurde ge舅dert. \n"
+msgid " The passwd for '%s' has been changed."
+msgstr " Das Passwort fr '%s' wurde ge舅dert."
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
-msgstr " Das Passwort fr '%s' wurde nicht ge舅dert. \n"
+msgid " The passwd for '%s' has NOT been changed."
+msgstr " Das Passwort fr '%s' wurde nicht ge舅dert."
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
msgstr "Verwaltung des Server Passwortes"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr " Benutzername : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
+msgstr "Benutzername"
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
-msgstr " Altes Passwort : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
+msgstr "Altes Passwort"
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr " Neues Passwort : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
+msgstr "Neues Passwort"
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr " Best舩ige neues Passwort : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
+msgstr "Best舩ige neues Passwort"
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "トndere Passwort"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "Fge Benutzer hinzu"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
msgstr "Lsche Benutzer"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
msgstr "Desaktiviere Benutzer"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
msgstr "Aktiviere Benutzer"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
msgstr "Client/Server Passwort Verwaltung"
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr " Remote Maschine : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
+msgstr "Remote Maschine"
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
msgstr "Drucker Parameter"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
msgstr "Wichtige Hinweise:"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "Mit [*] gekennzeichnete Druckername in der Druckerauswahlliste"
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
msgstr "wurde automatisch geladen von :"
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "Printcap Name"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
-msgstr "Der Versuch diese Drucker von SWAT aus zu lschen wird keine Auswirkung haben.\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
+msgstr "Der Versuch diese Drucker von SWAT aus zu lschen wird keine Auswirkung haben."
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
msgstr "W臧le Drucker"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
msgstr "Lsche Drucker"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
msgstr "Ersteller Drucker"
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr ""
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr ""
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr ""
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr ""
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr ""
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
msgstr ""
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
msgstr ""
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
msgstr ""
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr ""
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr ""
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr ""
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr ""
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr ""
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
msgstr "Server Status"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
msgstr "Automatische Aktualisierung"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
msgstr "Aktualisierungsintervall: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
msgstr "Stop Aktualisierung"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
msgstr "Version:"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
msgstr ""
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
msgstr "aktiv"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "inaktiv"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
msgstr "Stopp smbd"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
msgstr "Start smbd"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
msgstr "Neustart smbd"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
msgstr ""
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
msgstr "Stopp nmbd"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
msgstr "Start nmbd"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
msgstr "Neustart nmbd"
-#: web/statuspage.c:249
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr ""
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "Stopp nmbd"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "Start nmbd"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "Neustart nmbd"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr ""
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "Neustart nmbd"
+
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "Start nmbd"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
msgstr "Aktive Verbindungen"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr ""
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "IP Adresse"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "Datum"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "Kill"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
msgstr "Aktive Freigaben"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "Freigabe"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "Benutzer"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "Gruppe"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
msgstr "Offene Dateien"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr ""
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "Basisoptionen"
-
-#: param/loadparm.c:643
-msgid "dos charset"
-msgstr "dos Charakterset"
-
-#: param/loadparm.c:644
-msgid "unix charset"
-msgstr "unix Charakterset"
-
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr "Anzeige Charakterset"
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr "Kommentar"
-
-#: param/loadparm.c:647
-msgid "path"
-msgstr "Pfad"
-
-#: param/loadparm.c:648
-msgid "directory"
-msgstr "Verzeichnis"
-
-#: param/loadparm.c:649
-msgid "workgroup"
-msgstr "Arbeitsgruppe"
-
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr "netbios name"
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr "netbios aliase"
-
-#: param/loadparm.c:652
-msgid "netbios scope"
-msgstr "netbios scope"
-
-#: param/loadparm.c:653
-msgid "server string"
-msgstr "server string"
-
-#: param/loadparm.c:654
-msgid "interfaces"
-msgstr "Schnittstellen"
-
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr "verwende nur definierte Schnittstellen"
-
-#: param/loadparm.c:657
-msgid "Security Options"
-msgstr "Sicherheitsoptionen"
-
-#: param/loadparm.c:659
-msgid "security"
-msgstr "Sicherheit"
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr "Verschlsselte Passwrter"
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr "update Verschlsselte"
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr "Erlaube Vertrauneswrdige Dom舅en"
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr "Alternative Berechtigungen"
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr ""
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr "Min. L舅ge Passwort"
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr "Min. L舅ge Passwort"
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr "Map nach Gast"
-
-#: param/loadparm.c:668
-msgid "null passwords"
-msgstr "leere Passwrter"
-
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
-msgstr "Folge pam Einschr舅kungen"
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr "Serverpasswort"
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr "smb passwd Datei"
-
-#: param/loadparm.c:672
-msgid "private dir"
-msgstr "Privates Verzeichnis"
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr "Pfad passdb Modul"
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr ""
-
-#: param/loadparm.c:675
-msgid "root dir"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
msgstr ""
-#: param/loadparm.c:676
-msgid "root"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
msgstr ""
-#: param/loadparm.c:678
-msgid "pam password change"
-msgstr "pam Passwort舅derung"
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr ""
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr ""
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr ""
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr "username map"
-
-#: param/loadparm.c:683
-msgid "password level"
-msgstr "Stufe Passwort "
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr "Stufe Benutzer"
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr "Synchronisiere unix Passwort "
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr "Beschr舅ke anonymus"
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr ""
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr ""
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr "plaintext to smbpasswd"
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr "use rhosts"
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr "Benutzername"
-
-#: param/loadparm.c:693
-msgid "user"
-msgstr "Benutzer"
-
-#: param/loadparm.c:694
-msgid "users"
-msgstr "Benutzer"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr "Gast Account"
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr "Ungltige Benutzer"
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr "Gltige Benutzer"
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr "Administratoren"
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr ""
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr ""
-
-#: param/loadparm.c:702
-msgid "printer admin"
-msgstr "Druckerverwalter"
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr ""
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr ""
-
-#: param/loadparm.c:705
-msgid "group"
-msgstr "Gruppe"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr "nur lesen"
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr "Schreiben zulassen"
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr "Beschreibbar"
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr "Beschreibbar"
-
-#: param/loadparm.c:712
-msgid "create mask"
-msgstr "Erstellungsmaske"
-
-#: param/loadparm.c:713
-msgid "create mode"
-msgstr "Erstellungsmodus"
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr "Erzwinge Erstellungsmodus"
-
-#: param/loadparm.c:715
-msgid "security mask"
-msgstr ""
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr "Erzwinge Sicherheitsmodus"
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr "Verzeichnismaske"
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr "Verzeichnismodus"
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr "Erzwinge Verzeichnismodus"
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr "Verzeichnis Sicherheitsmaske"
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr "Erzwinge Verzeichnis Sicherheitsmodus"
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr "Vererbe Rechte"
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr "nur G舖te"
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr "nur G舖te"
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr "G舖te erlaubt"
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr "ヨffentlich"
-
-#: param/loadparm.c:729
-msgid "only user"
-msgstr "Nur Benutzer"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr "Erlaube hosts"
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr "Erlaube hosts"
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr "verbiete hosts"
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr "verbiete hosts"
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "Secure Socket Layer Optionen"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr ""
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr ""
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr ""
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr ""
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr ""
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr ""
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr ""
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr ""
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr ""
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr "ssl bedarf eines Clientzertifikats"
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr "ssl bedarf eines Serverzertifikats"
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr ""
-
-#: param/loadparm.c:750
-msgid "ssl version"
-msgstr ""
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "Basisoptionen"
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr ""
+#: ../param/loadparm.c:775
+msgid "Security Options"
+msgstr "Sicherheitsoptionen"
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "Log Optionen"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr "Log Stufe"
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr "Debug Stufe"
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr ""
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr "nur syslog"
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr "Log Datei"
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr "max log Grsse"
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr ""
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr ""
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr ""
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr ""
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr ""
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
-msgstr " Protokoll Optionen"
-
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr "Protokoll"
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
+msgstr "Protokoll Optionen"
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr "max Protokoll"
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr "min Protokoll"
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr ""
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr ""
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr ""
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr "nt smb Untersttzung"
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr "nt pipe Untersttzung"
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr "ntacl Untersttzung"
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr "Melde Version"
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr "Melde als"
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr ""
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr ""
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr "Reihenfolge Namensauflsung"
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr "max Paket"
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr "Paketgr゚e"
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr ""
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr ""
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr "wins ttl minimo"
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr "Zeitserver"
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "Optimierungsoptionen"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr ""
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr ""
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr ""
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr ""
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr "Max Anzahl smbd Prozesse"
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr "Max. Verbindungen"
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr "Paranoide Serversicherheit"
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr "Max. Festplattengr゚e"
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr "max Anzahl offener Dateien"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr ""
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr ""
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr "Socket Optionen"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr "Grsse stat cache"
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr ""
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr ""
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr ""
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr "verwende mmap"
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr "gr゚e Schreibpuffer"
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr "Druckoptionen"
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr "Druckauftr臠e insges."
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr "Druckauftr臠e max."
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr "lade Drucker"
-
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr "printcap name"
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr ""
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr "Bedruckbar"
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr "Druck ok"
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr ""
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr "Druck"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr "Druckbefehl"
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr "deaktiviere spoolss"
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr "lpq Befehl"
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr "lprm Befehl"
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr "lppause Befehl"
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr "lpresume Befehl"
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr "queuepause Befehl"
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr "queueresume Befehl"
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr "enumports Befehl"
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr "addprinter Befehl"
-
-#: param/loadparm.c:842
-msgid "deleteprinter command"
-msgstr "deleteprinter Befehl"
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr "Zeige Wizzard zum hinzufgen von Druckern"
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr ""
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr "Druckername"
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr "Drucker
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr "Verwende client Treiber"
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr "Druckertreiber"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr "Druckertreiber Datei"
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr "Pfad Druckertreiber"
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "Verwaltung Dateinamen"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr "Entferne den Punkt"
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr ""
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr ""
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr ""
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr ""
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr ""
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr ""
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr ""
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr ""
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr ""
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr ""
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr ""
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr "Verstecke Dateien"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr ""
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr ""
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr ""
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr ""
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr ""
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr ""
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr ""
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "Dom舅en Optionen"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr "Gruppe Dom舅enadministratoren"
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr "Dom舅en Gastgruppen"
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr ""
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr "Verfall Maschinenpasswort"
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "Login optionen"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr ""
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr ""
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr ""
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr ""
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr ""
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr ""
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr ""
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr ""
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr ""
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr ""
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr ""
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr ""
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr ""
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr ""
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr "Browsing Optionen"
-#: param/loadparm.c:908
-msgid "os level"
-msgstr "os Stufe"
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr ""
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr ""
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr "Bevorzugter master"
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr "Bevorzugter master"
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr "Lokaler master"
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr "Dom舅en master"
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr "browsing Liste"
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr ""
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr ""
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr "Erweitertes browsing"
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr "WINS Optionen"
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr ""
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr ""
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr ""
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr ""
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr ""
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "Locking Optionen"
-#: param/loadparm.c:930
-msgid "blocking locks"
-msgstr ""
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr ""
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr ""
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr ""
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr ""
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr ""
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr ""
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr ""
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr ""
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr ""
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr ""
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr "LDAP Optionen"
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr ""
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr ""
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr ""
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr ""
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr ""
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr ""
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "Verschiedene Optionen"
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr ""
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr ""
-
-#: param/loadparm.c:957
-msgid "delete share command"
-msgstr ""
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr "Konfigurationsdatei"
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr "Lade im Voraus"
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr ""
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr "Lock Verzeichnis"
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr "Lock Verzeichnis"
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr "utmp Verzeichnis"
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr "wtmp Verzeichnis"
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr ""
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr ""
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr ""
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr "Message Befehl"
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr "dfree Befehl"
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr "remote announce"
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr ""
-
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr ""
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr ""
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr ""
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr ""
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr ""
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr "Kopie"
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr "include"
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr ""
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr ""
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr ""
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr ""
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr ""
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr ""
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr ""
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr "Verfgbar"
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr ""
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr "Typ Dateisystem"
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr ""
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr ""
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr "Folge symlinks"
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr "nicht hinabsteigen"
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr ""
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr ""
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr "Lsche nur-lesen"
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr ""
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr ""
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr ""
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr ""
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr ""
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr "verstecke lokale Benutzer"
-
-#: param/loadparm.c:1012
-msgid "VFS options"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr "VFS Optionen"
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-msgid "vfs options"
-msgstr ""
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr ""
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr ""
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr "Winbind Optionen"
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr ""
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr ""
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr ""
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr ""
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr ""
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
diff --git a/source/po/en.msg b/source/po/en.msg
index 2f78cb835e7..6a1fcb55bac 100644
--- a/source/po/en.msg
+++ b/source/po/en.msg
@@ -1,1707 +1,593 @@
# English messages for international release of SWAT.
-# Copyright (C) 2001 Free Software Foundation, Inc.
-# TAKAHASHI Motonobu <monyo@samba.org>, 2001.
+# Copyright (C) 2003 TAKAHASHI Motonobu <monyo@samba.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
msgid ""
msgstr ""
"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-09-20 20:29+0900\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2000-02-08 12:48+09:00\n"
-"Last-Translator: TAKAHASHI Motonobu <monyo@samba.gr.jp>\n"
+"Last-Translator: TAKAHASHI Motonobu <monyo@samba.org>\n"
"Language-Team: (Samba Team) <samba-technical@samba.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=US-ASCII\n"
"Content-Transfer-Encoding: \n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
+msgid "ERROR: Can't open %s"
msgstr ""
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr ""
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr ""
-#: web/swat.c:502
+#: ../web/swat.c:408
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
-msgstr ""
-
-#: web/swat.c:505
-msgid "Home"
-msgstr ""
-
-#: web/swat.c:507
-msgid "Globals"
-msgstr ""
-
-#: web/swat.c:508
-msgid "Shares"
-msgstr ""
-
-#: web/swat.c:509
-msgid "Printers"
-msgstr ""
-
-#: web/swat.c:512
-msgid "Status"
-msgstr ""
-
-#: web/swat.c:513
-msgid "View Config"
-msgstr ""
-
-#: web/swat.c:515
-msgid "Password Management"
+msgid "failed to open %s for writing"
msgstr ""
-#: web/swat.c:539
-msgid "Current Config"
-msgstr ""
-
-#: web/swat.c:543
-msgid "Normal View"
-msgstr ""
-
-#: web/swat.c:545
-msgid "Full View"
-msgstr ""
-
-#: web/swat.c:561
-msgid "Global Variables"
-msgstr ""
-
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
-msgid "Commit Changes"
-msgstr ""
-
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
-msgid "Reset Values"
-msgstr ""
-
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr ""
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr ""
-
-#: web/swat.c:613
-msgid "Share Parameters"
-msgstr ""
-
-#: web/swat.c:642
-msgid "Choose Share"
-msgstr ""
-
-#: web/swat.c:656
-msgid "Delete Share"
-msgstr ""
-
-#: web/swat.c:663
-msgid "Create Share"
-msgstr ""
-
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
-msgstr ""
-
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
-msgstr ""
-
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
-msgstr ""
-
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
-msgstr ""
-
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
-msgstr ""
-
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
-msgstr ""
-
-#: web/swat.c:812
+#: ../web/swat.c:431
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
+msgid "Can't reload %s"
msgstr ""
-#: web/swat.c:814
+#: ../web/swat.c:501
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
-msgstr ""
-
-#: web/swat.c:838
-msgid "Server Password Management"
-msgstr ""
-
-#.
-#. * Create all the dialog boxes for data collection
-#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr ""
-
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
+msgid "Logged in as <b>%s</b>"
msgstr ""
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr ""
-
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr ""
-
-#: web/swat.c:863 web/swat.c:911
-msgid "Change Password"
-msgstr ""
-
-#: web/swat.c:866
-msgid "Add New User"
-msgstr ""
-
-#: web/swat.c:868
-msgid "Delete User"
-msgstr ""
-
-#: web/swat.c:870
-msgid "Disable User"
-msgstr ""
-
-#: web/swat.c:872
-msgid "Enable User"
-msgstr ""
-
-#: web/swat.c:885
-msgid "Client/Server Password Management"
-msgstr ""
-
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr ""
-
-#: web/swat.c:940
-msgid "Printer Parameters"
-msgstr ""
-
-#: web/swat.c:942
-msgid "Important Note:"
-msgstr ""
-
-#: web/swat.c:943
-msgid "Printer names marked with [*] in the Choose Printer drop-down box "
-msgstr ""
-
-#: web/swat.c:944
-msgid "are autoloaded printers from "
-msgstr ""
-
-#: web/swat.c:945
-msgid "Printcap Name"
-msgstr ""
-
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
-msgstr ""
-
-#: web/swat.c:980
-msgid "Choose Printer"
-msgstr ""
-
-#: web/swat.c:999
-msgid "Delete Printer"
-msgstr ""
-
-#: web/swat.c:1006
-msgid "Create Printer"
-msgstr ""
-
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr ""
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr ""
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr ""
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr ""
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr ""
-
-#: web/statuspage.c:50
-msgid "RDONLY "
-msgstr ""
-
-#: web/statuspage.c:51
-msgid "WRONLY "
-msgstr ""
-
-#: web/statuspage.c:52
-msgid "RDWR "
-msgstr ""
-
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr ""
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr ""
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr ""
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr ""
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr ""
-
-#: web/statuspage.c:195
-msgid "Server Status"
-msgstr ""
-
-#: web/statuspage.c:200
-msgid "Auto Refresh"
-msgstr ""
-
-#: web/statuspage.c:201 web/statuspage.c:206
-msgid "Refresh Interval: "
-msgstr ""
-
-#: web/statuspage.c:205
-msgid "Stop Refreshing"
-msgstr ""
-
-#: web/statuspage.c:220
-msgid "version:"
-msgstr ""
-
-#: web/statuspage.c:223
-msgid "smbd:"
-msgstr ""
-
-#: web/statuspage.c:223 web/statuspage.c:235
-msgid "running"
-msgstr ""
-
-#: web/statuspage.c:223 web/statuspage.c:235
-msgid "not running"
-msgstr ""
-
-#: web/statuspage.c:226
-msgid "Stop smbd"
-msgstr ""
-
-#: web/statuspage.c:228
-msgid "Start smbd"
-msgstr ""
-
-#: web/statuspage.c:230
-msgid "Restart smbd"
+#: ../web/swat.c:505
+msgid "Home"
msgstr ""
-#: web/statuspage.c:235
-msgid "nmbd:"
+#: ../web/swat.c:507
+msgid "Globals"
msgstr ""
-#: web/statuspage.c:238
-msgid "Stop nmbd"
+#: ../web/swat.c:508
+msgid "Shares"
msgstr ""
-#: web/statuspage.c:240
-msgid "Start nmbd"
+#: ../web/swat.c:509
+msgid "Printers"
msgstr ""
-#: web/statuspage.c:242
-msgid "Restart nmbd"
+#: ../web/swat.c:510
+msgid "Wizard"
msgstr ""
-#: web/statuspage.c:249
-msgid "Active Connections"
+#: ../web/swat.c:513
+msgid "Status"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
-msgid "PID"
+#: ../web/swat.c:514
+msgid "View Config"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
-msgid "Client"
+#: ../web/swat.c:516
+msgid "Password Management"
msgstr ""
-#: web/statuspage.c:251
-msgid "IP address"
+#: ../web/swat.c:526
+msgid "Current View Is"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
-msgid "Date"
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
msgstr ""
-#: web/statuspage.c:253
-msgid "Kill"
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
msgstr ""
-#: web/statuspage.c:261
-msgid "Active Shares"
+#: ../web/swat.c:529
+msgid "Change View To"
msgstr ""
-#: web/statuspage.c:264
-msgid "Share"
+#: ../web/swat.c:554
+msgid "Current Config"
msgstr ""
-#: web/statuspage.c:264
-msgid "User"
+#: ../web/swat.c:558
+msgid "Normal View"
msgstr ""
-#: web/statuspage.c:264
-msgid "Group"
+#: ../web/swat.c:560
+msgid "Full View"
msgstr ""
-#: web/statuspage.c:270
-msgid "Open Files"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
msgstr ""
-#: web/statuspage.c:272
-msgid "Sharing"
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
msgstr ""
-#: web/statuspage.c:272
-msgid "R/W"
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
msgstr ""
-#: web/statuspage.c:272
-msgid "Oplock"
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
msgstr ""
-#: web/statuspage.c:272
-msgid "File"
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
msgstr ""
-#: param/loadparm.c:641
-msgid "Base Options"
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
msgstr ""
-#: param/loadparm.c:643
-msgid "dos charset"
+#: ../web/swat.c:725
+msgid "Commit"
msgstr ""
-#: param/loadparm.c:644
-msgid "unix charset"
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
msgstr ""
-#: param/loadparm.c:645
-msgid "display charset"
+#: ../web/swat.c:732
+msgid "Server Type"
msgstr ""
-#: param/loadparm.c:646
-msgid "comment"
+#: ../web/swat.c:733
+msgid "Stand Alone"
msgstr ""
-#: param/loadparm.c:647
-msgid "path"
+#: ../web/swat.c:734
+msgid "Domain Member"
msgstr ""
-#: param/loadparm.c:648
-msgid "directory"
+#: ../web/swat.c:735
+msgid "Domain Controller"
msgstr ""
-#: param/loadparm.c:649
-msgid "workgroup"
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
msgstr ""
-#: param/loadparm.c:650
-msgid "netbios name"
+#: ../web/swat.c:740
+msgid "Configure WINS As"
msgstr ""
-#: param/loadparm.c:651
-msgid "netbios aliases"
+#: ../web/swat.c:741
+msgid "Not Used"
msgstr ""
-#: param/loadparm.c:652
-msgid "netbios scope"
+#: ../web/swat.c:742
+msgid "Server for client use"
msgstr ""
-#: param/loadparm.c:653
-msgid "server string"
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
msgstr ""
-#: param/loadparm.c:654
-msgid "interfaces"
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
msgstr ""
-#: param/loadparm.c:655
-msgid "bind interfaces only"
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
msgstr ""
-#: param/loadparm.c:657
-msgid "Security Options"
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
msgstr ""
-#: param/loadparm.c:659
-msgid "security"
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
msgstr ""
-#: param/loadparm.c:660
-msgid "encrypt passwords"
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
msgstr ""
-#: param/loadparm.c:661
-msgid "update encrypted"
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr ""
-#: param/loadparm.c:662
-msgid "allow trusted domains"
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
+msgid "Commit Changes"
msgstr ""
-#: param/loadparm.c:663
-msgid "alternate permissions"
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
+msgid "Reset Values"
msgstr ""
-#: param/loadparm.c:664
-msgid "hosts equiv"
+#: ../web/swat.c:844
+msgid "Share Parameters"
msgstr ""
-#: param/loadparm.c:665
-msgid "min passwd length"
+#: ../web/swat.c:887
+msgid "Choose Share"
msgstr ""
-#: param/loadparm.c:666
-msgid "min password length"
+#: ../web/swat.c:901
+msgid "Delete Share"
msgstr ""
-#: param/loadparm.c:667
-msgid "map to guest"
+#: ../web/swat.c:908
+msgid "Create Share"
msgstr ""
-#: param/loadparm.c:668
-msgid "null passwords"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr ""
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
msgstr ""
-#: param/loadparm.c:670
-msgid "password server"
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
msgstr ""
-#: param/loadparm.c:671
-msgid "smb passwd file"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
msgstr ""
-#: param/loadparm.c:672
-msgid "private dir"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
msgstr ""
-#: param/loadparm.c:673
-msgid "passdb module path"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
msgstr ""
-#: param/loadparm.c:674
-msgid "root directory"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
msgstr ""
-#: param/loadparm.c:675
-msgid "root dir"
+#: ../web/swat.c:1048
+#, c-format
+msgid " The passwd for '%s' has been changed."
msgstr ""
-#: param/loadparm.c:676
-msgid "root"
+#: ../web/swat.c:1051
+#, c-format
+msgid " The passwd for '%s' has NOT been changed."
msgstr ""
-#: param/loadparm.c:678
-msgid "pam password change"
+#: ../web/swat.c:1076
+msgid "Server Password Management"
msgstr ""
-#: param/loadparm.c:679
-msgid "passwd program"
+#.
+#. * Create all the dialog boxes for data collection
+#.
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
msgstr ""
-#: param/loadparm.c:680
-msgid "passwd chat"
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
msgstr ""
-#: param/loadparm.c:681
-msgid "passwd chat debug"
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
msgstr ""
-#: param/loadparm.c:682
-msgid "username map"
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
msgstr ""
-#: param/loadparm.c:683
-msgid "password level"
+#: ../web/swat.c:1101 ../web/swat.c:1149
+msgid "Change Password"
msgstr ""
-#: param/loadparm.c:684
-msgid "username level"
+#: ../web/swat.c:1104
+msgid "Add New User"
msgstr ""
-#: param/loadparm.c:685
-msgid "unix password sync"
+#: ../web/swat.c:1106
+msgid "Delete User"
msgstr ""
-#: param/loadparm.c:686
-msgid "restrict anonymous"
+#: ../web/swat.c:1108
+msgid "Disable User"
msgstr ""
-#: param/loadparm.c:687
-msgid "lanman auth"
+#: ../web/swat.c:1110
+msgid "Enable User"
msgstr ""
-#: param/loadparm.c:688
-msgid "ntlm auth"
+#: ../web/swat.c:1123
+msgid "Client/Server Password Management"
msgstr ""
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
+#: ../web/swat.c:1140
+msgid "Remote Machine"
msgstr ""
-#: param/loadparm.c:690
-msgid "use rhosts"
+#: ../web/swat.c:1179
+msgid "Printer Parameters"
msgstr ""
-#: param/loadparm.c:692
-msgid "username"
+#: ../web/swat.c:1181
+msgid "Important Note:"
msgstr ""
-#: param/loadparm.c:693
-msgid "user"
+#: ../web/swat.c:1182
+msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr ""
-#: param/loadparm.c:694
-msgid "users"
+#: ../web/swat.c:1183
+msgid "are autoloaded printers from "
msgstr ""
-#: param/loadparm.c:696
-msgid "guest account"
+#: ../web/swat.c:1184
+msgid "Printcap Name"
msgstr ""
-#: param/loadparm.c:697
-msgid "invalid users"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
msgstr ""
-#: param/loadparm.c:698
-msgid "valid users"
+#: ../web/swat.c:1231
+msgid "Choose Printer"
msgstr ""
-#: param/loadparm.c:699
-msgid "admin users"
+#: ../web/swat.c:1250
+msgid "Delete Printer"
msgstr ""
-#: param/loadparm.c:700
-msgid "read list"
+#: ../web/swat.c:1257
+msgid "Create Printer"
msgstr ""
-#: param/loadparm.c:701
-msgid "write list"
+#: ../web/statuspage.c:123
+msgid "RDONLY "
msgstr ""
-#: param/loadparm.c:702
-msgid "printer admin"
+#: ../web/statuspage.c:124
+msgid "WRONLY "
msgstr ""
-#: param/loadparm.c:703
-msgid "force user"
+#: ../web/statuspage.c:125
+msgid "RDWR "
msgstr ""
-#: param/loadparm.c:704
-msgid "force group"
+#: ../web/statuspage.c:309
+msgid "Server Status"
msgstr ""
-#: param/loadparm.c:705
-msgid "group"
+#: ../web/statuspage.c:314
+msgid "Auto Refresh"
msgstr ""
-#: param/loadparm.c:707
-msgid "read only"
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
+msgid "Refresh Interval: "
msgstr ""
-#: param/loadparm.c:708
-msgid "write ok"
+#: ../web/statuspage.c:319
+msgid "Stop Refreshing"
msgstr ""
-#: param/loadparm.c:709
-msgid "writeable"
+#: ../web/statuspage.c:334
+msgid "version:"
msgstr ""
-#: param/loadparm.c:710
-msgid "writable"
+#: ../web/statuspage.c:337
+msgid "smbd:"
msgstr ""
-#: param/loadparm.c:712
-msgid "create mask"
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
+msgid "running"
msgstr ""
-#: param/loadparm.c:713
-msgid "create mode"
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
+msgid "not running"
msgstr ""
-#: param/loadparm.c:714
-msgid "force create mode"
+#: ../web/statuspage.c:341
+msgid "Stop smbd"
msgstr ""
-#: param/loadparm.c:715
-msgid "security mask"
+#: ../web/statuspage.c:343
+msgid "Start smbd"
msgstr ""
-#: param/loadparm.c:716
-msgid "force security mode"
+#: ../web/statuspage.c:345
+msgid "Restart smbd"
msgstr ""
-#: param/loadparm.c:717
-msgid "directory mask"
+#: ../web/statuspage.c:350
+msgid "nmbd:"
msgstr ""
-#: param/loadparm.c:718
-msgid "directory mode"
+#: ../web/statuspage.c:354
+msgid "Stop nmbd"
msgstr ""
-#: param/loadparm.c:719
-msgid "force directory mode"
+#: ../web/statuspage.c:356
+msgid "Start nmbd"
msgstr ""
-#: param/loadparm.c:720
-msgid "directory security mask"
+#: ../web/statuspage.c:358
+msgid "Restart nmbd"
msgstr ""
-#: param/loadparm.c:721
-msgid "force directory security mode"
+#: ../web/statuspage.c:364
+msgid "winbindd:"
msgstr ""
-#: param/loadparm.c:722
-msgid "inherit permissions"
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
msgstr ""
-#: param/loadparm.c:723
-msgid "guest only"
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
msgstr ""
-#: param/loadparm.c:724
-msgid "only guest"
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
msgstr ""
-#: param/loadparm.c:726
-msgid "guest ok"
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
msgstr ""
-#: param/loadparm.c:727
-msgid "public"
+#: ../web/statuspage.c:382
+msgid "Restart All"
msgstr ""
-#: param/loadparm.c:729
-msgid "only user"
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
msgstr ""
-#: param/loadparm.c:730
-msgid "hosts allow"
+#: ../web/statuspage.c:393
+msgid "Active Connections"
msgstr ""
-#: param/loadparm.c:731
-msgid "allow hosts"
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
+msgid "PID"
msgstr ""
-#: param/loadparm.c:732
-msgid "hosts deny"
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
+msgid "Client"
msgstr ""
-#: param/loadparm.c:733
-msgid "deny hosts"
+#: ../web/statuspage.c:395
+msgid "IP address"
msgstr ""
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
+msgid "Date"
msgstr ""
-#: param/loadparm.c:737
-msgid "ssl"
+#: ../web/statuspage.c:397
+msgid "Kill"
msgstr ""
-#: param/loadparm.c:739
-msgid "ssl hosts"
+#: ../web/statuspage.c:405
+msgid "Active Shares"
msgstr ""
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
+#: ../web/statuspage.c:408
+msgid "Share"
msgstr ""
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
+#: ../web/statuspage.c:408
+msgid "User"
msgstr ""
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
+#: ../web/statuspage.c:408
+msgid "Group"
msgstr ""
-#: param/loadparm.c:743
-msgid "ssl server cert"
+#: ../web/statuspage.c:414
+msgid "Open Files"
msgstr ""
-#: param/loadparm.c:744
-msgid "ssl server key"
+#: ../web/statuspage.c:416
+msgid "Sharing"
msgstr ""
-#: param/loadparm.c:745
-msgid "ssl client cert"
+#: ../web/statuspage.c:416
+msgid "R/W"
msgstr ""
-#: param/loadparm.c:746
-msgid "ssl client key"
+#: ../web/statuspage.c:416
+msgid "Oplock"
msgstr ""
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
+#: ../web/statuspage.c:416
+msgid "File"
msgstr ""
-#: param/loadparm.c:748
-msgid "ssl require servercert"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
msgstr ""
-#: param/loadparm.c:749
-msgid "ssl ciphers"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
msgstr ""
-#: param/loadparm.c:750
-msgid "ssl version"
+#: ../param/loadparm.c:755
+msgid "Base Options"
msgstr ""
-#: param/loadparm.c:751
-msgid "ssl compatibility"
+#: ../param/loadparm.c:775
+msgid "Security Options"
msgstr ""
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr ""
-#: param/loadparm.c:755
-msgid "log level"
-msgstr ""
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr ""
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr ""
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr ""
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr ""
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr ""
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr ""
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr ""
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr ""
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr ""
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr ""
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr ""
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr ""
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
-
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr ""
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr ""
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr ""
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr ""
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr ""
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr ""
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr ""
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr ""
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr ""
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr ""
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr ""
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr ""
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr ""
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr ""
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr ""
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr ""
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr ""
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr ""
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr ""
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr ""
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr ""
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr ""
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr ""
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr ""
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr ""
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr ""
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr ""
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr ""
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr ""
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr ""
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr ""
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr ""
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr ""
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr ""
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr ""
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr ""
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr ""
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr ""
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr ""
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr ""
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr ""
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr ""
-
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr ""
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr ""
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr ""
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr ""
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr ""
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr ""
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr ""
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr ""
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr ""
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr ""
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr ""
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr ""
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr ""
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr ""
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr ""
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr ""
-
-#: param/loadparm.c:842
-msgid "deleteprinter command"
-msgstr ""
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr ""
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr ""
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr ""
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr ""
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr ""
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr ""
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr ""
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr ""
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr ""
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr ""
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr ""
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr ""
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr ""
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr ""
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr ""
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr ""
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr ""
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr ""
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr ""
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr ""
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr ""
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr ""
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr ""
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr ""
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr ""
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr ""
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr ""
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr ""
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr ""
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr ""
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr ""
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr ""
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr ""
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr ""
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr ""
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr ""
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr ""
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr ""
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr ""
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr ""
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr ""
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr ""
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr ""
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr ""
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr ""
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr ""
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr ""
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr ""
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr ""
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr ""
-#: param/loadparm.c:908
-msgid "os level"
-msgstr ""
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr ""
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr ""
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr ""
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr ""
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr ""
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr ""
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr ""
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr ""
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr ""
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr ""
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr ""
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr ""
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr ""
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr ""
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr ""
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr ""
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr ""
-#: param/loadparm.c:930
-msgid "blocking locks"
-msgstr ""
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr ""
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr ""
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr ""
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr ""
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr ""
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr ""
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr ""
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr ""
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr ""
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr ""
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr ""
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr ""
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr ""
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr ""
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr ""
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr ""
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr ""
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr ""
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr ""
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr ""
-
-#: param/loadparm.c:957
-msgid "delete share command"
-msgstr ""
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr ""
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr ""
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr ""
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr ""
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr ""
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr ""
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr ""
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr ""
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr ""
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr ""
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr ""
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr ""
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr ""
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr ""
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr ""
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr ""
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr ""
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr ""
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr ""
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr ""
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr ""
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr ""
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr ""
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr ""
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr ""
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr ""
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr ""
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr ""
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr ""
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr ""
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr ""
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr ""
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr ""
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr ""
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr ""
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr ""
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr ""
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr ""
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr ""
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr ""
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr ""
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr ""
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr ""
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr ""
-
-#: param/loadparm.c:1012
-msgid "VFS options"
-msgstr ""
-
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-msgid "vfs options"
-msgstr ""
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr ""
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr ""
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr ""
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr ""
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr ""
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr ""
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr ""
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr ""
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
diff --git a/source/po/fr.msg b/source/po/fr.msg
index 493db659ae6..134f1d6390b 100644
--- a/source/po/fr.msg
+++ b/source/po/fr.msg
@@ -1,1709 +1,593 @@
# French messages for international release of SWAT.
# Copyright (C) 2001 Fran輟is Le Lay <fanch@tuxfamily.org>
-
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
msgid ""
msgstr ""
"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-09-20 14:05+0100\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2000-02-08 14:45+0100\n"
"Last-Translator: Fran輟is Le Lay <fanch@tuxfamily.org>\n"
"Language-Team: (Samba Team) <samba-technical@samba.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: \n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "ERREUR: Impossible d'ouvrir %s\n"
+msgid "ERROR: Can't open %s"
+msgstr ""
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr "Aide"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr "D馭inir par d馭aut"
-#: web/swat.c:502
+#: ../web/swat.c:408
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
-msgstr "Connect en tant que <b>%s</b><p>\n"
+msgid "failed to open %s for writing"
+msgstr ""
-#: web/swat.c:505
+#: ../web/swat.c:431
+#, c-format
+msgid "Can't reload %s"
+msgstr ""
+
+#: ../web/swat.c:501
+#, c-format
+msgid "Logged in as <b>%s</b>"
+msgstr "Connect en tant que <b>%s</b>"
+
+#: ../web/swat.c:505
msgid "Home"
msgstr "Home"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
msgstr "Param鑼res G駭駻aux"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
msgstr "Partages"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
msgstr "Imprimantes"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr ""
+
+#: ../web/swat.c:513
msgid "Status"
msgstr "Statut"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
msgstr "Voir Configuration"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
msgstr "Gestion des mots de passe"
-#: web/swat.c:539
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "Configuration Actuelle"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "Vue Basique"
+
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "Vue D騁aill馥"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "Modifier le mot de passe"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "Configuration Actuelle"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "Vue Normale"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "Vue Compl鑼e"
-#: web/swat.c:561
-msgid "Global Variables"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr ""
+
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr ""
+
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr ""
+
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr ""
+
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr ""
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr ""
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "commentaire"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "Param鑼res Imprimantes"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr ""
+
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr ""
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr "master de domaine"
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr "master de domaine"
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr ""
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr ""
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr "ne pas descendre"
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr ""
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr ""
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr ""
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr ""
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr ""
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr ""
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr ""
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr "Variables Globales"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
msgid "Commit Changes"
msgstr "Sauver les modifications"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
msgid "Reset Values"
msgstr "R駟nitialiser Valeurs"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "Vue D騁aill馥"
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "Vue Basique"
-
-#: web/swat.c:613
+#: ../web/swat.c:844
msgid "Share Parameters"
msgstr "Param鑼res de partage"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
msgstr "Choisir un partage"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
msgstr "Supprimer un partage"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
msgstr "Cr馥r un partage"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr "changement de mot de passe en mode d駑o rejet"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
-msgstr " Le champ \"Nom d'utilisateur\" doit 黎re sp馗ifi饅n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr ""
+
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
+msgstr " Le champ \"Nom d'utilisateur\" doit 黎re sp馗ifi"
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
-msgstr " Le champ \"Ancien mot de passe\" dot 黎re sp馗ifi饅n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
+msgstr " Le champ \"Ancien mot de passe\" dot 黎re sp馗ifi"
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
-msgstr " Le champ \"Machine Distante\" dot 黎re sp馗ifi饅n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
+msgstr " Le champ \"Machine Distante\" dot 黎re sp馗ifi"
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
-msgstr " Les champs \"Nouveau mot de passe\" et \"Confirmation du nouveau mot de passe\" doivent 黎re sp馗ifi駸 \n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
+msgstr "Les champs \"Nouveau mot de passe\" et \"Confirmation du nouveau mot de passe\" doivent 黎re sp馗ifi駸 \n"
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
-msgstr " Echec de la confirmation du nouveau mot de passe\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
+msgstr " Echec de la confirmation du nouveau mot de passe"
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
-msgstr " Le mot de passe de '%s' a 騁 modifi. \n"
+msgid " The passwd for '%s' has been changed."
+msgstr " Le mot de passe de '%s' a 騁 modifi. "
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The password for '%s' has NOT been changed. \n"
+msgid " The passwd for '%s' has NOT been changed."
msgstr " Le mot de passe de '%s' n'a PAS 騁 modifi. \n"
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
msgstr "Gestion des mots de passe serveur"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
msgstr " Nom d'utilisateur : "
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
msgstr " Ancien mot de passe : "
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
msgstr " Nouveau mot de passe : "
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
msgstr " Confirmation du nouveau mot de passe : "
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "Modifier le mot de passe"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "Nouvel Utilisateur"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
msgstr "Supprimer Utilisateur"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
msgstr "D駸activer Utilisateur"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
msgstr "Activer Utilisateur"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
msgstr "Gestion des mots de passe Client/Serveur"
-#: web/swat.c:902
-msgid " Remote Machine : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
msgstr " Machine distante : "
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
msgstr "Param鑼res Imprimantes"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
msgstr "Note Importante:"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "Les Noms d'imprimantes marqu駸 du signe [*] dans le menu d駻oulant Choisir Imprimante"
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
msgstr "d駸ignent des imprimantes automatiquement charg馥s depuis le "
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "Nom Printcap"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
-msgstr "Essayer de supprimer ces imprimantes depuis SWAT n'aura aucun effet.\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
+msgstr "Essayer de supprimer ces imprimantes depuis SWAT n'aura aucun effet."
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
msgstr "Choisir Imprimante"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
msgstr "Supprimer Imprimante"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
msgstr "Cr馥r Imprimante"
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr ""
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr ""
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr ""
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr ""
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr ""
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
msgstr ""
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
msgstr ""
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
msgstr ""
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr ""
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr ""
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr ""
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr ""
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr ""
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
msgstr "Statut du Serveur"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
msgstr "Rafrachissement Automatique"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
msgstr "Intervalle de rafrachissement: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
msgstr "Stopper Rafrachissement"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
msgstr "version:"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
msgstr ""
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
msgstr "actif"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "non actif"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
msgstr "Stopper smbd"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
msgstr "Lancer smbd"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
msgstr "Relancer smbd"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
msgstr ""
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
msgstr "Stopper nmbd"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
msgstr "Lancer nmbd"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
msgstr "Relancer nmbd"
-#: web/statuspage.c:249
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr ""
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "Stopper nmbd"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "Lancer nmbd"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "Relancer nmbd"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr ""
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "Relancer nmbd"
+
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "Lancer nmbd"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
msgstr "Connections Actives"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr ""
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "adresse IP"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "Date"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "Terminer"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
msgstr "Partages Actifs"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "Partager"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "Utilisateur"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "Groupe"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
msgstr "Fichiers Ouverts"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr "Fichier"
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "Options de base"
-
-#: param/loadparm.c:643
-msgid "dos charset"
-msgstr "caract鑽es dos"
-
-#: param/loadparm.c:644
-msgid "unix charset"
-msgstr "caract鑽es unix"
-
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr "caract鑽es display"
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr "commentaire"
-
-#: param/loadparm.c:647
-msgid "path"
-msgstr "chemin"
-
-#: param/loadparm.c:648
-msgid "directory"
-msgstr "r駱ertoire"
-
-#: param/loadparm.c:649
-msgid "workgroup"
-msgstr "groupe de travail"
-
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr "nom netbios"
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr "alias netbios"
-
-#: param/loadparm.c:652
-msgid "netbios scope"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
msgstr ""
-#: param/loadparm.c:653
-msgid "server string"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
msgstr ""
-#: param/loadparm.c:654
-msgid "interfaces"
-msgstr ""
-
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr "lier uniquement les interfaces"
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "Options de base"
-#: param/loadparm.c:657
+#: ../param/loadparm.c:775
msgid "Security Options"
msgstr "Options de S馗urit"
-#: param/loadparm.c:659
-msgid "security"
-msgstr "s馗urit"
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr "crypter les mots de passe"
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr "mise jour crypt駸"
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr "autoriser les domaines de confiance"
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr "permissions alternatives"
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr ""
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr "taille minimale des mots de passe"
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr "taille minimale des mots de passe"
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr "associer un invit"
-
-#: param/loadparm.c:668
-msgid "null passwords"
-msgstr "mots de passe null"
-
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
-msgstr "utiliser les restrictions pam"
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr "serveur de mots de passe"
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr "fichier passwd de smb"
-
-#: param/loadparm.c:672
-msgid "private dir"
-msgstr "r駱ertoire priv"
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr "chemin du module passdb"
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr "r駱ertoire root"
-
-#: param/loadparm.c:675
-msgid "root dir"
-msgstr "r駱ertoire root"
-
-#: param/loadparm.c:676
-msgid "root"
-msgstr ""
-
-#: param/loadparm.c:678
-msgid "pam password change"
-msgstr "modification de mot de passe pam"
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr "programme passwd"
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr ""
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr ""
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr ""
-
-#: param/loadparm.c:683
-msgid "password level"
-msgstr "niveau mot de passe"
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr "niveau nom d'utilisateur"
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr "synchroniser avec mots de passe unix"
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr "limiter anonyme"
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr ""
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr ""
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr "texte brut vers smbpasswd"
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr "utiliser rhosts"
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr "nom d'utilisateur"
-
-#: param/loadparm.c:693
-msgid "user"
-msgstr "utilisateur"
-
-#: param/loadparm.c:694
-msgid "users"
-msgstr "utilisateurs"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr "compte invit"
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr "utilisateurs non-valides"
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr "utilisateurs valides"
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr "utilisateurs administrateurs"
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr ""
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr ""
-
-#: param/loadparm.c:702
-msgid "printer admin"
-msgstr "administrateur d'imprimante"
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr "forcer utilisateur"
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr "forcer le groupe"
-
-#: param/loadparm.c:705
-msgid "group"
-msgstr "groupe"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr "lecture seule"
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr "馗riture ok"
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr "馗riture possible"
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr "馗riture possible"
-
-#: param/loadparm.c:712
-msgid "create mask"
-msgstr ""
-
-#: param/loadparm.c:713
-msgid "create mode"
-msgstr "mode cr饌tion"
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr "forcer le mode cr饌tion"
-
-#: param/loadparm.c:715
-msgid "security mask"
-msgstr ""
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr "forcer le mode s馗urit"
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr "masque de r駱ertoire"
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr "mode r駱ertoire"
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr "forcer le mode r駱ertoire"
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr "masque de s馗urit r駱ertoire"
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr "forcer le mode s馗urit r駱ertoire"
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr "h駻itage de permissions"
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr "invit seulement"
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr "invit seulement"
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr "invit ok"
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr "public"
-
-#: param/loadparm.c:729
-msgid "only user"
-msgstr "utilisateur seulement"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr "autoriser hosts"
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr "autoriser hosts"
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr "refuser hosts"
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr "refuser hosts"
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "Options Secure Socket Layer"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr ""
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr ""
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr ""
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr ""
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr ""
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr "certificat ssl serveur"
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr "cl ssl serveur"
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr "certificat ssl client"
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr "cl ssl client"
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr "ssl requiert un certificat client"
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr "ssl requiert un certificat serveur"
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr "chiffres ssl"
-
-#: param/loadparm.c:750
-msgid "ssl version"
-msgstr "ssl version"
-
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr "compatibilit ssl"
-
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "Options de Logging"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr "niveau log"
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr "niveau debug"
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr ""
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr "syslog seulement"
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr "fichier log"
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr "taille maxi de la log"
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr ""
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr ""
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr ""
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr ""
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr ""
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr "Options de Protocole"
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr "protocole"
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
-
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr "protocole maxi"
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr "protocole mini"
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr ""
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr ""
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr ""
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr "support smb nt"
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr "support pipe nt"
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr "support acl nt"
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr "annoncer la version"
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr "annoncer comme"
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr "mux maxi"
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr "xmit maxi"
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr "ordre de r駸olution des noms"
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr "paquet maxi"
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr "taille de paquet"
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr "ttl maxi"
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr "wins ttl maxi"
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr "wins ttl mini"
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr ""
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "Options de r馮lage"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr ""
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr ""
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr ""
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr ""
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr "nombre maxi de processus smbd"
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr "connections maxi"
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr ""
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr "taille maxi de disque"
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr "nombre maxi de fichiers ouverts"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr "espace d'impression mini"
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr ""
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr "options de socket"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr "taille du cache stat"
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr "allocation stricte"
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr "synchronisation stricte"
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr "toujours synchroniser"
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr "utiliser mmap"
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr "taille du cache d'馗riture"
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr "Options d'impression"
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr "total jobs d'impression"
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr "max jobs d'impression"
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr "charger imprimantes"
-
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr "nom printcap"
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr ""
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr "imprimable"
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr "imprimante ok"
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr ""
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr "impression"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr "commande d'impression"
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr "d駸activer spoolss"
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr "commande lpq"
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr "commande lprm"
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr "commande lppause"
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr "commande lpresume"
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr "commande queuepause"
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr "commande queueresume"
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr "commande enumports"
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr "commande addprinter"
-
-#: param/loadparm.c:842
-msgid "deleteprinter command"
-msgstr "commande deleteprinter"
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr "Voir l'assistant d'ajout d'imprimante"
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr ""
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr "nom d'imprimante"
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr "imprimante"
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr "utiliser le pilote client"
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr "pilote d'imprimante"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr "fichier de pilote d'imprimante"
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr "adresse du pilote d'imprimante"
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "Gestion des noms de fichier"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr ""
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr ""
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr "casse par d馭aut"
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr "sensible la casse"
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr ""
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr "garder la casse"
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr ""
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr ""
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr ""
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr ""
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr "supprimer les fichiers veto"
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr "fichiers veto"
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr "cacher les fichiers"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr ""
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr "map syst鑪e"
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr "map cach"
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr ""
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr ""
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr ""
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr "cache stat"
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "Options de Domaine"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr "groupe d'administration du domaine"
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr "groupe invit du domaine"
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr "map noms de groupe"
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr ""
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "Options de Logon"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr "ajouter script utilisateur"
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr "supprimer script utilisateur"
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr "ajouter script de groupe"
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr "supprimer script de groupe"
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr "ajouter un utilisateur un script de groupe"
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr "supprimer un utilisateur d'un script de groupe"
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr "ajouter un script machine"
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr "script shutdown"
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr "annuler script shutdown"
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr "script de logon"
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr ""
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr ""
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr ""
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr ""
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr "Options de Navigation"
-#: param/loadparm.c:908
-msgid "os level"
-msgstr "niveau os"
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr "annonce lm"
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr "intervalle lm"
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr "master pr馭駻"
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr "master pr馭駻"
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr "master local"
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr "master de domaine"
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr "parcourir la liste"
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr "navigable"
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr "navigable"
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr "navigation am駘ior馥"
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr "Options WINS"
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr ""
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr ""
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr ""
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr ""
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr ""
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "Options de Verrouillage"
-#: param/loadparm.c:930
-msgid "blocking locks"
-msgstr "verrous bloquants"
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr ""
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr ""
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr "verrouillage"
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr ""
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr ""
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr ""
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr ""
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr "verrouillage posix"
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr "verrouillage strict"
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr "modes de partage"
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr "Options Ldap"
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr "serveur ldap"
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr "port ldap"
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr "suffixe ldap"
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr "filtre ldap"
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr ""
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr ""
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "Options Diverses"
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr "ajouter une commande de partage"
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr "modifier une commande de partage"
-
-#: param/loadparm.c:957
-msgid "delete share command"
-msgstr "supprimer une commande de partage"
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr "fichier de configuration"
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr "pr-chargement"
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr ""
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr ""
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr ""
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr ""
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr ""
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr ""
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr "service par d馭aut"
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr "par d馭aut"
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr "commande message"
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr "commande dfree"
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr "annonce distante"
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr "synchronisation de navigation distante"
-
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr "adresse de socket"
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr ""
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr ""
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr ""
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr ""
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr ""
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr ""
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr ""
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr ""
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr ""
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr ""
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr ""
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr ""
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr ""
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr "disponible"
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr ""
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr ""
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr ""
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr ""
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr ""
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr "ne pas descendre"
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr ""
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr ""
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr "supprimer lecture seule"
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr ""
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr ""
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr ""
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr ""
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr ""
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr "cacher les utilisateurs locaux"
-
-#: param/loadparm.c:1012
-msgid "VFS options"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr "Options VFS"
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-msgid "vfs options"
-msgstr ""
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr ""
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr ""
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr "Options Winbind"
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr ""
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr ""
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr ""
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr ""
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr ""
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
-
-
diff --git a/source/po/it.msg b/source/po/it.msg
index 708f2165ee3..be447a84d47 100644
--- a/source/po/it.msg
+++ b/source/po/it.msg
@@ -1,1707 +1,593 @@
# Italian messages for international release of SWAT.
# Copyright (C) 2001 Simo Sorce <idra@samba.org>
-
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
msgid ""
msgstr ""
"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-09-20 14:05+0100\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2000-02-08 14:45+0100\n"
"Last-Translator: Simo Sorce <idra@samba.org>\n"
"Language-Team: (Samba Team) <samba-technical@samba.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: \n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "ERRORE: Impossibile aprire %s\n"
+msgid "ERROR: Can't open %s"
+msgstr ""
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr "Aiuto"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr "Imposta Default"
-#: web/swat.c:502
+#: ../web/swat.c:408
+#, c-format
+msgid "failed to open %s for writing"
+msgstr ""
+
+#: ../web/swat.c:431
+#, c-format
+msgid "Can't reload %s"
+msgstr ""
+
+#: ../web/swat.c:501
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
+msgid "Logged in as <b>%s</b>"
msgstr "Connesso come <b>%s</b><p>\n"
-#: web/swat.c:505
+#: ../web/swat.c:505
msgid "Home"
msgstr "Home"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
msgstr "Globali"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
msgstr "Condivisioni"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
msgstr "Stampanti"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr ""
+
+#: ../web/swat.c:513
msgid "Status"
msgstr "Stato"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
msgstr "Visualizza Configurazione"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
msgstr "Gestione Password"
-#: web/swat.c:539
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "Configurazione Attuale"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "Vista Semplice"
+
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "Vista Avanzata"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "Cambia Password"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "Configurazione Attuale"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "Vista Normale"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "Vista Completa"
-#: web/swat.c:561
-msgid "Global Variables"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr ""
+
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr ""
+
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr ""
+
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr ""
+
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr ""
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr ""
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "commento"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "Parametri Stampante"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr ""
+
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr ""
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr "master dominio"
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr "master dominio"
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr ""
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr ""
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr "non discendere"
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr ""
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr ""
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr ""
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr ""
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr ""
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr ""
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr ""
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr "Variabili Globali"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
msgid "Commit Changes"
msgstr "Salva Modifiche"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
msgid "Reset Values"
msgstr "Resetta Valori"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "Vista Avanzata"
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "Vista Semplice"
-
-#: web/swat.c:613
+#: ../web/swat.c:844
msgid "Share Parameters"
msgstr "Parametri Condivisioni"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
msgstr "Scegli Condivisione"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
msgstr "Cancella Condivisione"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
msgstr "Crea Condivisione"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr "cambio password in modalita' demo rigettata"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
-msgstr " \"Nome Utente\" deve essere specificato \n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr ""
+
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
+msgstr " \"Nome Utente\" deve essere specificato "
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
-msgstr " \"Vecchia Password\" deve essere specificato \n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
+msgstr " \"Vecchia Password\" deve essere specificato "
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
-msgstr " \"Macchina Remota\" deve essere specificato \n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
+msgstr " \"Macchina Remota\" deve essere specificato "
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
-msgstr " "Nuova/Conferma Password" devono essere specificati \n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
+msgstr " \"Nuova/Conferma Password\" devono essere specificati "
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
-msgstr " la password di conferma non e' uguale alla nuova password\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
+msgstr " la password di conferma non e' uguale alla nuova password "
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
-msgstr " La password per '%s' e' stata cambiata. \n"
+msgid " The passwd for '%s' has been changed."
+msgstr " La password per '%s' e' stata cambiata."
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
-msgstr " La password per '%s' non e' stata cambianta. \n"
+msgid " The passwd for '%s' has NOT been changed."
+msgstr " La password per '%s' non e' stata cambianta."
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
msgstr "Gestione Password del Server"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr " Nome Utente : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
+msgstr " Nome Utente"
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
-msgstr " Vecchia Password : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
+msgstr " Vecchia Password"
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr " Nuova Password : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
+msgstr " Nuova Password"
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr " Conferma nuova Password : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
+msgstr " Conferma nuova Password"
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "Cambia Password"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "Aggiungi Nuovo Utente"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
msgstr "Cancella Utente"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
msgstr "Disabilita Utente"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
msgstr "Abilita Utente"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
msgstr "Gestione Password Client/Server"
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr " Macchina Remota : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
+msgstr " Macchina Remota"
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
msgstr "Parametri Stampante"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
msgstr "Nota Importante:"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "nomi di stampante marcati con [*] nel riquadro a scomparsa Scegli Stampante"
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
msgstr "sono stampanti caricate automaticamente da "
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "Nome Printcap"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
msgstr "Il tentativo di cancellare queste stampanti da sWAT non avara' effetto.\n"
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
msgstr "Scegli Stampante"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
msgstr "Cancella Stampante"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
msgstr "Crea Stampante"
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr ""
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr ""
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr ""
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr ""
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr ""
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
msgstr ""
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
msgstr ""
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
msgstr ""
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr ""
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr ""
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr ""
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr ""
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr ""
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
msgstr "Stato del Server"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
msgstr "Rinfresco Automatico"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
msgstr "Intervallo Rinfresco: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
msgstr "Ferma Rinfresco"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
msgstr "versione:"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
msgstr ""
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
msgstr "attivo"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "non attivo"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
msgstr "Ferma smbd"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
msgstr "Lancia smbd"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
msgstr "Rilancia smbd"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
msgstr ""
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
msgstr "Ferma nmbd"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
msgstr "Lancia nmbd"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
msgstr "Rilancia nmbd"
-#: web/statuspage.c:249
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr ""
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "Ferma nmbd"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "Lancia nmbd"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "Rilancia nmbd"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr ""
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "Rilancia nmbd"
+
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "Lancia nmbd"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
msgstr "Connessioni Attive"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr ""
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "indirizzo IP"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "Data"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "Termina"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
msgstr "Condivisioni Attive"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "Condivisione"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "Utente"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "Gruppo"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
msgstr "File Aperti"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr ""
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "Opzioni Basilari"
-
-#: param/loadparm.c:643
-msgid "dos charset"
-msgstr "set caratteri dos"
-
-#: param/loadparm.c:644
-msgid "unix charset"
-msgstr "set caratteri unix"
-
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr "set caratteri display"
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr "commento"
-
-#: param/loadparm.c:647
-msgid "path"
-msgstr "percorso"
-
-#: param/loadparm.c:648
-msgid "directory"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
msgstr ""
-#: param/loadparm.c:649
-msgid "workgroup"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
msgstr ""
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr "nome netbios"
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr "alias netbios"
-
-#: param/loadparm.c:652
-msgid "netbios scope"
-msgstr "scope netbios"
-
-#: param/loadparm.c:653
-msgid "server string"
-msgstr "stringa server"
-
-#: param/loadparm.c:654
-msgid "interfaces"
-msgstr "interfacce"
-
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr "usa solo interfacce definite"
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "Opzioni Basilari"
-#: param/loadparm.c:657
+#: ../param/loadparm.c:775
msgid "Security Options"
msgstr "Opzioni di Sicurezza"
-#: param/loadparm.c:659
-msgid "security"
-msgstr "sicurezza"
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr "password cryptate"
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr "aggiorna criptate"
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr "permetti domini trusted"
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr "permessi alternativi"
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr ""
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr "minima lunghezza passwd"
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr "minima lunghezza password"
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr "mappa su ospite"
-
-#: param/loadparm.c:668
-msgid "null passwords"
-msgstr "password nulle"
-
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
-msgstr "usa restrizioni pam"
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr ""
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr ""
-
-#: param/loadparm.c:672
-msgid "private dir"
-msgstr "directory privata"
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr "percorso modulo passdb"
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr ""
-
-#: param/loadparm.c:675
-msgid "root dir"
-msgstr ""
-
-#: param/loadparm.c:676
-msgid "root"
-msgstr ""
-
-#: param/loadparm.c:678
-msgid "pam password change"
-msgstr ""
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr ""
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr ""
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr ""
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr "mappa nomi utenti"
-
-#: param/loadparm.c:683
-msgid "password level"
-msgstr "livello password"
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr "livello nome utente"
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr "sincronizza password unix"
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr "limita anonimo"
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr ""
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr ""
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr "da plaintext a smbpasswd"
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr "usa rhosts"
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr "nome utente"
-
-#: param/loadparm.c:693
-msgid "user"
-msgstr "utente"
-
-#: param/loadparm.c:694
-msgid "users"
-msgstr "utenti"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr "account ospite"
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr "utenti non validi"
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr "utenti validi"
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr "utenti amministratori"
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr ""
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr ""
-
-#: param/loadparm.c:702
-msgid "printer admin"
-msgstr "amministratore stmapnati"
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr "forza utente"
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr "forza gruppo"
-
-#: param/loadparm.c:705
-msgid "group"
-msgstr "gruppo"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr "sola lettura"
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr "ok scrittura"
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr "scrivibile"
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr "scrivibile"
-
-#: param/loadparm.c:712
-msgid "create mask"
-msgstr ""
-
-#: param/loadparm.c:713
-msgid "create mode"
-msgstr ""
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr "forza create mode"
-
-#: param/loadparm.c:715
-msgid "security mask"
-msgstr ""
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr "forza security mode"
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr ""
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr ""
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr "forza directory mode"
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr ""
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr "forza directory security mode"
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr "eredita permessi"
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr "solo ospite"
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr "solo ospite"
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr "ok ospite"
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr "pubblico"
-
-#: param/loadparm.c:729
-msgid "only user"
-msgstr "solo utente"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr "permetti hosts"
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr "permetti hosts"
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr "vieta hosts"
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr "vieta hosts"
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "Opzioni Secure Socket Layer"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr ""
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr ""
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr ""
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr ""
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr ""
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr ""
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr ""
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr ""
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr ""
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr "ssl richiede certificato client"
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr "ssl richiede certificato server"
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr ""
-
-#: param/loadparm.c:750
-msgid "ssl version"
-msgstr "ssl versione"
-
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr ""
-
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "Opzioni di Log"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr "livello log"
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr "livello debug"
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr ""
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr "solo syslog"
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr "file di log"
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr "massima dimensione log"
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr ""
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr ""
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr ""
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr ""
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr ""
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr "Opzioni Protocollo"
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr "protocollo"
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
-
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr "protocollo massimo"
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr "protocollo minimo"
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr ""
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr ""
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr ""
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr "supporto smb nt"
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr "supporto pipe nt"
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr "supporto acl nt"
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr "annuncia versione"
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr "annuncia come"
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr "mux massimo"
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr "xmit massimo"
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr "ordine risoluzione nomi"
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr "pacchetto massimo"
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr "dimensione pacchetto"
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr "ttl massimo"
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr "wins ttl massimo"
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr "wins ttl minimo"
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr ""
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "Opzioni Tuning"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr ""
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr ""
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr ""
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr ""
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr "massimo n. processi smbd"
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr "massimo n. connessioni"
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr ""
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr "massima dimensione disco"
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr "massimo n. file aperti"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr "spazio stampa minimo"
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr ""
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr "opzioni socket"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr "dimensione stat cache"
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr "allocazione stretta"
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr "sincronizzazione stretta"
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr "sincronizza sempre"
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr "usa mmap"
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr "dimensione write cache"
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr "Opzioni di Stampa"
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr "job stampa totali"
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr "massimo n. job stampa"
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr "carica stampanti"
-
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr "nome printcap"
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr ""
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr "stmpabile"
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr "ok stampa"
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr ""
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr "stampa"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr "comando stampa"
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr "disabilita spoolss"
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr "comando lpq"
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr "comando lprm"
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr "comando lppause"
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr "comando lpresume"
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr "comando queuepause"
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr "comando queueresume"
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr "cmando enumports"
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr "comando addprinter"
-
-#: param/loadparm.c:842
-msgid "deleteprinter command"
-msgstr "comando deleteprinter"
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr "mostra wizard aggiungi stampanti"
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr "mappa driver os2"
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr "nome stampante"
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr "stampante"
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr "usa client driver"
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr "driver stampante"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr "file driver stampante"
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr "posizione driver stampante"
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "Gestione Nomi File"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr "togli il punto"
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr ""
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr ""
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr ""
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr ""
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr ""
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr ""
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr ""
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr ""
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr ""
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr ""
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr ""
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr "nascondi file"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr ""
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr "mappa system"
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr "mappa hidden"
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr "mappa archive"
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr ""
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr ""
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr ""
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "Opzioni Dominio"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr "gruppo amministratori dominio"
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr "gruppo ospiti dominio"
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr "mappa nome gruppo"
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr ""
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "Opzioni di Logon"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr ""
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr ""
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr ""
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr ""
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr ""
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr ""
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr ""
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr ""
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr ""
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr ""
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr ""
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr ""
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr ""
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr ""
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr "Opzioni Browsing"
-#: param/loadparm.c:908
-msgid "os level"
-msgstr "livello os"
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr "annuncio lm"
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr "intervallo lm"
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr "master preferito"
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr "master preferito"
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr "master locale"
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr "master dominio"
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr "lista browsing"
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr ""
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr ""
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr ""
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr "opzioni WINS"
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr ""
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr ""
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr ""
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr ""
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr ""
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "Opzioni Locking"
-#: param/loadparm.c:930
-msgid "blocking locks"
-msgstr ""
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr ""
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr ""
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr ""
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr ""
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr ""
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr ""
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr ""
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr ""
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr ""
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr ""
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr "Opzioni Ldap"
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr ""
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr ""
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr ""
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr ""
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr ""
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr ""
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "Opzioni Generiche"
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr ""
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr ""
-
-#: param/loadparm.c:957
-msgid "delete share command"
-msgstr ""
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr "file configurazione"
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr "precarica"
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr ""
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr ""
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr ""
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr ""
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr ""
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr ""
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr ""
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr ""
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr "comando message"
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr "comando dfree"
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr "annuncio remoto"
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr ""
-
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr ""
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr ""
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr ""
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr ""
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr ""
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr "copia"
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr "includi"
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr "esegui"
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr "pre-esegui"
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr "pre-esegui e chiudi"
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr "post-esegui"
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr "root pre-esegui"
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr "root pre-esegui e chiudi"
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr "root post-esegui"
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr "disponibile"
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr ""
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr "tipo file system"
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr ""
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr ""
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr ""
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr "non discendere"
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr ""
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr ""
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr "cancella sola-lettura"
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr ""
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr ""
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr ""
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr ""
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr ""
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr "nascondi utenti locali"
-
-#: param/loadparm.c:1012
-msgid "VFS options"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr "Opzioni VFS"
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-msgid "vfs options"
-msgstr ""
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr ""
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr ""
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr "Opzioni Winbind"
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr ""
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr ""
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr ""
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr ""
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr ""
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
diff --git a/source/po/ja.msg b/source/po/ja.msg
index e77f34e3c44..affb2764141 100644
--- a/source/po/ja.msg
+++ b/source/po/ja.msg
@@ -1,5 +1,6 @@
# Japanese messages for international release of SWAT.
-# Copyright (C) 2001 Ryo Kawahara <rkawa@lbe.co.jp>, 2000.
+# Copyright (C) 2003 TAKAHASHI Motonobu <monyo@samba.org>
+# Copyright (C) 2000 Ryo Kawahara <rkawa@lbe.co.jp>
#
# 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
@@ -17,1805 +18,578 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: i18n-swatE VERSION\n"
-"POT-Creation-Date: 2001-09-20 20:29+0900\n"
-"PO-Revision-Date: 2000-04-03 17:55+09:00\n"
-"Last-Translator: TAKAHASHI Motonobu <monyo@samba.gr.jp>\n"
-"Language-Team: Samba Team <samba-technical@samba.org>\n"
+"Project-Id-Version: i18n-swat\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
+"PO-Revision-Date: 2003-09-23 04:38+900\n"
+"Last-Translator: TAKAHASHI Motonobu <monyo@samba.org>\n"
+"Language-Team: Samba Users Group Japan <sugj-tech@samba.gr.jp>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=Shift_JIS\n"
-"Content-Transfer-Encoding: \n"
+"Content-Type: text/plain; charset=CP932\n"
+"Content-Transfer-Encoding: 8bit\n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "%s をオープンできません\n"
+msgid "ERROR: Can't open %s"
+msgstr "%s をオープンできません"
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
-msgstr "説明"
+msgstr "ヘルプ"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
-msgstr "既定値に戻す"
+msgstr "デフォルト値"
+
+#: ../web/swat.c:408
+#, c-format
+msgid "failed to open %s for writing"
+msgstr "%s を書き込み用にオープンできません"
+
+#: ../web/swat.c:431
+#, c-format
+msgid "Can't reload %s"
+msgstr "%s を再読み込みできません\n"
-#: web/swat.c:502
+# msgid "Logged in as <b>%s</b><p>\n"
+#: ../web/swat.c:501
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
-msgstr "<b>%s</b>としてログイン<p>\n"
+msgid "Logged in as <b>%s</b>"
+msgstr "<b>%s</b>としてログイン"
-#: web/swat.c:505
+#: ../web/swat.c:505
msgid "Home"
msgstr "ホーム"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
-msgstr "全体設定"
+msgstr "グローバル"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
-msgstr "共有設定"
+msgstr "ファイル共有"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
-msgstr "プリンタ設定"
+msgstr "印刷共有"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr "ウィザード"
+
+#: ../web/swat.c:513
msgid "Status"
-msgstr "動作状況"
+msgstr "サーバの状態"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
-msgstr "設定表\示"
+msgstr "現在の設定"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
-msgstr "パスワード管理・ユーザ管理"
+msgstr "パスワード管理"
+
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "現在の表示モード"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "標準表示"
-#: web/swat.c:539
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "詳細表示"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "表示モードの変更"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "現在の設定"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "標準表示"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "完全表示"
-#: web/swat.c:561
-msgid "Global Variables"
-msgstr "全体設定"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr "ウィザードによるパラメータ編集ページ"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
-msgid "Commit Changes"
-msgstr "設定変更"
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr "smb.conf ファイルが書き換えられました。"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
-msgid "Reset Values"
-msgstr "リセット"
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr "Samba 設定ウィザード"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "詳細表示"
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr "「smb.conf の書換」ボタンを押すと smb.conf ファイル中のすべてのデフォルト値やコメントは削除されます。"
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "標準表示"
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr "「commit」ボタンを押した場合にも同様の変更が行なわれます。"
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr "smb.conf の書換"
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "設定を反映"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "各パラメータの編集"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr "サーバタイプ"
-#: web/swat.c:613
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr "スタンドアロン"
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr "ドメインメンバ"
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr "ドメインコントローラ"
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr "通常の形式ではない - 新しいモードを選択のこと"
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr "WINS"
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr "使わない"
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr "サーバとして構成"
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr "別の WINS サーバのクライアントとして構成"
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr "別の WINS サーバ"
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr "エラー: wins server と wins support の両パラメータが smb.conf で指定されています"
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr "いずれかの WINS モードを選択してください。"
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr "ホームディレクトリの公開"
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr "上記の設定オプションにより、複数のパラメータが同期して設定されるため、 Samba の運用を迅速に開始する上での助けとなるでしょう。"
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
+msgstr "Global パラメータ"
+
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
+msgid "Commit Changes"
+msgstr "変更を反映"
+
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
+msgid "Reset Values"
+msgstr "変更を取消"
+
+#: ../web/swat.c:844
msgid "Share Parameters"
-msgstr "共有設定"
+msgstr "ファイル共有 パラメータ"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
-msgstr "共有選択"
+msgstr "ファイル共有の選択"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
-msgstr "共有削除"
+msgstr "ファイル共有の削除"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
-msgstr "新規共有作成"
+msgstr "ファイル共有の作成"
+
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
+msgstr "デモ・モードでのパスワード変更はできません"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
-msgstr "デモ・モードでのパスワード変更はできません\n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr "パスワード・データベースが見つけられません"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
-msgstr "「ユーザ名」を入力ください\n"
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
+msgstr "「ユーザ名」欄に入力してください"
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
-msgstr "「旧パスワード」を入力してください\n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
+msgstr "「旧パスワード」欄に入力してください"
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
-msgstr "「リモート マシン」を入力してください\n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
+msgstr "「リモートマシン」欄に入力してください"
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
-msgstr "「新パスワード」を入力し、再入力もしてください\n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
+msgstr "「新パスワード」欄と「新パスワードの再入力」欄に入力してください"
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
-msgstr "新パスワードの再入力が間違っています\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
+msgstr "「新パスワードの再入力」欄の入力内容が「新パスワード」欄の入力と一致していません。"
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
-msgstr " '%s' のパスワードは変更されました \n"
+msgid " The passwd for '%s' has been changed."
+msgstr " %s のパスワードは変更されました。"
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
-msgstr " '%s' のパスワードは変更されませんでした \n"
+msgid " The passwd for '%s' has NOT been changed."
+msgstr " '%s' のパスワードは変更されませんでした。"
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
-msgstr "ローカル マシンのパスワード管理"
+msgstr "ローカルマシンのパスワード管理"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr "ユーザ名 : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
+msgstr "ユーザ名"
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
-msgstr "旧パスワード : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
+msgstr "旧パスワード"
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr "新パスワード : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
+msgstr "新パスワード"
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr "新パスワード再入力 : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
+msgstr "新パスワードの再入力"
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "パスワード変更"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "新規ユーザ追加"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
-msgstr "ユーザを削除する"
+msgstr "ユーザの削除"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
-msgstr "使用不可にする"
+msgstr "ユーザの無効化"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
-msgstr "使用可能にする"
+msgstr "ユーザの有効化"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
-msgstr "リモート マシンのパスワード管理"
+msgstr "リモートマシンのパスワード管理"
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr " リモート マシン : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
+msgstr "リモートマシン"
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
-msgstr "プリンタ設定 [Printer]"
+msgstr "印刷共有 パラメータ"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
-msgstr "*注:"
+msgstr "*注"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "名前の先頭に [*] がついたプリンタ"
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
-msgstr "は、"
+msgstr "は"
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "printcap name パラメータ"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
-msgstr "から自動設定されたものですから、削除することはできません。\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
+msgstr "から自動設定されたものですから、削除することはできません。"
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
-msgstr "プリンタ選択"
+msgstr "印刷共有の選択"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
-msgstr "プリンタ削除"
+msgstr "印刷共有の削除"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
-msgstr "プリンタ新規作成"
-
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr "拒否なし"
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr "すべて拒否"
+msgstr "印刷共有の作成"
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr "DOSを拒否"
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr "参照を拒否"
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr "更新を拒否"
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
-msgstr "参照のみ"
+msgstr "参照のみ "
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
-msgstr "挿入のみ"
+msgstr "更新のみ "
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
-msgstr "更新 "
-
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr "専有+バッチ "
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr "専有 "
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr "バッチ "
+msgstr "参照/更新 "
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr "レベル_II "
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr "なし "
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
-msgstr "サーバー動作状況"
+msgstr "サーバの状態"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
-msgstr "自動再表示"
+msgstr "自動更新の開始"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
-msgstr "再表示間隔(秒): "
+msgstr "更新間隔: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
-msgstr "自動表示停止"
+msgstr "自動更新の停止"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
-msgstr "バージョン:"
+msgstr "バージョン"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
-msgstr "ファイル共有デーモン(smbd):"
+msgstr ""
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
-msgstr "動作中"
+msgstr "実行中"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "停止中"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
-msgstr "smbd停止"
+msgstr "smbd の停止"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
-msgstr "smbd起動"
+msgstr "smbd の起動"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
-msgstr "smbd再起動"
+msgstr "smbd の再起動"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
-msgstr "ネーム サービス デーモン(nmbd)"
+msgstr ""
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
-msgstr "nmbd停止"
+msgstr "nmbd の停止"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
-msgstr "nmbd起動"
+msgstr "nmbd の起動"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
-msgstr "nmbd再起動"
+msgstr "nmbd の再起動"
+
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr ""
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "winbindd の停止"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "winbindd の起動"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "winbindd の再起動"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr "すべて停止"
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "すべて再起動"
-#: web/statuspage.c:249
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "すべて起動"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
-msgstr "接続中クライアント"
+msgstr "接続中のクライアント"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
-msgstr "プロセスID"
+msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr "クライアント"
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "IPアドレス"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "日付"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "切断"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
-msgstr "接続中共有"
+msgstr "接続中の共有"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "共有名"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "ユーザ"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "グループ"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
-msgstr "使用中ファイル"
+msgstr "使用中のファイル"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr "排他モード"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr "参照/更新"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
-msgstr "便宜ロック(Oplock)"
+msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr "ファイル名"
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "基本オプション"
-
-#: param/loadparm.c:643
-#, fuzzy
-msgid "dos charset"
-msgstr "有効な文字"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
+msgstr "クライアント名を先頭に表示"
-#: param/loadparm.c:644
-#, fuzzy
-msgid "unix charset"
-msgstr "有効な文字"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
+msgstr "PIDを先頭に表示"
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr ""
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr "コメント"
-
-#: param/loadparm.c:647
-msgid "path"
-msgstr "パス"
-
-#: param/loadparm.c:648
-msgid "directory"
-msgstr "ディレクトリ"
-
-#: param/loadparm.c:649
-msgid "workgroup"
-msgstr "ワークグループ"
-
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr "netbios 名"
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr "netbios エイリアス"
-
-#: param/loadparm.c:652
-msgid "netbios scope"
-msgstr "netbios スコープ"
-
-#: param/loadparm.c:653
-msgid "server string"
-msgstr "サーバ文字列"
-
-#: param/loadparm.c:654
-msgid "interfaces"
-msgstr "インターフェース"
-
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr "このインターフェースのみ使用"
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "基本 オプション"
-#: param/loadparm.c:657
+#: ../param/loadparm.c:775
msgid "Security Options"
msgstr "セキュリティ オプション"
-#: param/loadparm.c:659
-msgid "security"
-msgstr "セキュリティ"
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr "パスワードを暗号化"
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr "暗号化パスワードに更新"
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr "信頼できるドメインを許可"
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr "代行パーミッション"
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr "同等のホスト"
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr "最小パスワード長"
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr "最小パスワード長"
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr "ゲストにマップ"
-
-#: param/loadparm.c:668
-msgid "null passwords"
-msgstr "空パスワード"
-
-#: param/loadparm.c:669
-#, fuzzy
-msgid "obey pam restrictions"
-msgstr "先読み"
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr "パスワード サーバ"
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr "smb passwd ファイル"
-
-#: param/loadparm.c:672
-#, fuzzy
-msgid "private dir"
-msgstr "プリンタ ドライバ"
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr ""
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr "ルート ディレクトリ"
-
-#: param/loadparm.c:675
-msgid "root dir"
-msgstr "ルート ディレクトリ"
-
-#: param/loadparm.c:676
-msgid "root"
-msgstr "ルート"
-
-#: param/loadparm.c:678
-#, fuzzy
-msgid "pam password change"
-msgstr "最小パスワード長"
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr "パスワード プログラム"
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr "パスワード チャット"
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr "パスワード チャット デバッグ"
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr "ユーザ名マップ"
-
-#: param/loadparm.c:683
-msgid "password level"
-msgstr "パスワード レベル"
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr "ユーザ名レベル"
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr "unix パスワードを同期させる"
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr "匿名アクセスの制限"
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr ""
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr ""
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr ""
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr "rhosts を使う"
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr "ユーザ名"
-
-#: param/loadparm.c:693
-msgid "user"
-msgstr "ユーザ"
-
-#: param/loadparm.c:694
-msgid "users"
-msgstr "ユーザ"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr "ゲスト アカウント"
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr "無効なユーザ"
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr "有効なユーザ"
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr "管理ユーザ"
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr "読み取りリスト"
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr "書き込みリスト"
-
-#: param/loadparm.c:702
-#, fuzzy
-msgid "printer admin"
-msgstr "プリンタ名"
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr "強制するユーザ"
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr "強制するグループ"
-
-#: param/loadparm.c:705
-msgid "group"
-msgstr "グループ"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr "読み取りのみ"
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr "書き込み可"
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr "書き込み可"
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr "書き込み可"
-
-#: param/loadparm.c:712
-msgid "create mask"
-msgstr "作成時にマスク"
-
-#: param/loadparm.c:713
-msgid "create mode"
-msgstr "作成時のモード"
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr "強制する作成時のモード"
-
-#: param/loadparm.c:715
-msgid "security mask"
-msgstr "セキュリティ マスク"
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr "強制するセキュリティ モード"
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr "ディレクトリ マスク"
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr "ディレクトリ モード"
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr "強制するディレクトリ モード"
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr "ディレクトリのセキュリティ マスク"
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr "強制するディレクトリのセキュリティ モード"
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr "パーミッションを継承"
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr "ゲストのみ"
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr "ゲストのみ"
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr "ゲスト可"
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr "パブリック"
-
-#: param/loadparm.c:729
-msgid "only user"
-msgstr "ユーザのみ"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr "許可するホスト"
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr "許可するホスト"
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr "拒否するホスト"
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr "拒否するホスト"
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "セキュア ソケット レイアー オプション"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr "ssl"
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr "ssl ホスト"
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr "ssl 未使用ホスト"
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr "ssl CA 認証ディレクトリ"
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr "ssl CA 認証ファイル"
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr "ssl サーバ認証"
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr "ssl サーバ鍵"
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr "ssl クライアント認証"
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr "ssl クライアント鍵"
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr "ssl クライアント認証を要求"
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr "ssl サーバ認証を要求"
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr "ssl 暗号"
-
-#: param/loadparm.c:750
-msgid "ssl version"
-msgstr "ssl バージョン"
-
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr "ssl 互換性"
-
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "ロギング オプション"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr "ログ レベル"
-
-#: param/loadparm.c:756
-#, fuzzy
-msgid "debuglevel"
-msgstr "デバッグレベル"
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr "syslog"
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr "syslog のみ"
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr "ログ ファイル"
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr "最大ログ サイズ"
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr "タイムスタンプ ログ"
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr "デバッグ タイムスタンプ"
-
-#: param/loadparm.c:764
-#, fuzzy
-msgid "debug hires timestamp"
-msgstr "デバッグ タイムスタンプ"
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr "デバッグ pid"
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr "デバッグ uid"
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr "プロトコル オプション"
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr "プロトコル"
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
-
-#: param/loadparm.c:772
-#, fuzzy
-msgid "max protocol"
-msgstr "プロトコル"
-
-#: param/loadparm.c:773
-#, fuzzy
-msgid "min protocol"
-msgstr "プロトコル"
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr "bmpx 読み出し"
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr "raw 読み出し"
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr "raw 書き込み"
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr "nt smb サポート"
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr "nt pipe サポート"
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr "nt acl サポート"
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr "アナウンス バージョン"
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr "アナウンスする種類"
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr "最大 mux"
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr "最大 xmit"
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr "名前解決の順番"
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr "最大パケット"
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr "パケット サイズ"
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr "最大 ttl"
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr "最大 wins ttl"
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr "最小 wins ttl"
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr "タイム サーバ"
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "チューニング オプション"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr "更新通知の間隔"
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr "切断までの時間"
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr "getwd キャッシュ"
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr "lpq キャッシュ時間"
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr ""
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr "最大接続数"
-
-#: param/loadparm.c:805
-#, fuzzy
-msgid "paranoid server security"
-msgstr "ユーザ追加スクリプト"
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr "最大ディスク サイズ"
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr "最大ファイル オープン数"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr "最小印刷スペース"
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr "読み取りサイズ"
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr "ソ\ケット オプション"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr "stat キャッシュ サイズ"
-
-#: param/loadparm.c:813
-#, fuzzy
-msgid "strict allocate"
-msgstr "厳密なロック"
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr "厳密な sync"
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr "常に sync"
-
-#: param/loadparm.c:816
-#, fuzzy
-msgid "use mmap"
-msgstr "ユーザ名マップ"
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr "書き込みキャッシュ サイズ"
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
-msgstr "印刷オプション"
-
-#: param/loadparm.c:822
-#, fuzzy
-msgid "total print jobs"
-msgstr "プリンタをロード"
-
-#: param/loadparm.c:823
-#, fuzzy
-msgid "max print jobs"
-msgstr "印刷可"
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr "プリンタをロード"
+msgstr "印刷 オプション"
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr "printcap 名"
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr "printcap"
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr "印刷可"
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr "印刷可"
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr "ポストスクリプト"
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr "印刷方法"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr "印刷コマンド"
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr ""
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr "lpq コマンド"
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr "lprm コマンド"
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr "lppause コマンド"
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr "lpresume コマンド"
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr "キュー停止コマンド"
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr "キュー再開コマンド"
-
-#: param/loadparm.c:840
-#, fuzzy
-msgid "enumports command"
-msgstr "印刷コマンド"
-
-#: param/loadparm.c:841
-#, fuzzy
-msgid "addprinter command"
-msgstr "印刷コマンド"
-
-#: param/loadparm.c:842
-#, fuzzy
-msgid "deleteprinter command"
-msgstr "印刷コマンド"
-
-#: param/loadparm.c:843
-#, fuzzy
-msgid "show add printer wizard"
-msgstr "プリンタをロード"
-
-#: param/loadparm.c:844
-#, fuzzy
-msgid "os2 driver map"
-msgstr "ホームディレクトリ マップ"
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr "プリンタ名"
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr "プリンタ"
-
-#: param/loadparm.c:848
-#, fuzzy
-msgid "use client driver"
-msgstr "ssl クライアント認証"
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr "プリンタ ドライバ"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr "プリンタ ドライバ ファイル"
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr "プリンタ ドライバの場所"
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "ファイル名の取扱"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr "ドットを削る"
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr "名前変換用スタック"
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr "既定の文字の大小"
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr "大/小文字の区別"
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr "大/小文字の区別"
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr "文字の大小を保存"
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr "短形式で文字の大小を保存"
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr "大/小文字の変換"
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr "変換用文字"
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr "ドットファイルを隠す"
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr "拒否ファイルを削除"
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr "拒否ファイル"
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr "隠しファイル"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr "oplock を禁止するファイル"
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr "システム属性にマップ"
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr "隠し属性にマップ"
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr "アーカイブ属性にマップ"
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr "変換した名前で表示"
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr "変換マップ"
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr "stat キャッシュ"
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "ドメイン オプション"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr "ドメイン管理グループ"
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr "ドメイン ゲスト グループ"
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr "グループ名マップ"
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr "マシン パスワード タイムアウト"
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "ログオン オプション"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr "ユーザ追加スクリプト"
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr "ユーザ削除スクリプト"
-
-#: param/loadparm.c:892
-#, fuzzy
-msgid "add group script"
-msgstr "ユーザ追加スクリプト"
-
-#: param/loadparm.c:893
-#, fuzzy
-msgid "delete group script"
-msgstr "ユーザ削除スクリプト"
-
-#: param/loadparm.c:894
-#, fuzzy
-msgid "add user to group script"
-msgstr "ユーザ追加スクリプト"
-
-#: param/loadparm.c:895
-#, fuzzy
-msgid "delete user from group script"
-msgstr "ユーザ削除スクリプト"
-
-#: param/loadparm.c:896
-#, fuzzy
-msgid "add machine script"
-msgstr "ユーザ追加スクリプト"
-
-#: param/loadparm.c:897
-#, fuzzy
-msgid "shutdown script"
-msgstr "ログオン スクリプト"
-
-#: param/loadparm.c:898
-#, fuzzy
-msgid "abort shutdown script"
-msgstr "ログオン スクリプト"
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr "ログオン スクリプト"
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr "ログオン パス"
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr "ログオン ドライブ"
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr "ログオン ホーム"
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr "ドメイン ログオン"
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
-msgstr "コンピュータ一覧表示オプション"
-
-#: param/loadparm.c:908
-msgid "os level"
-msgstr "os レベル"
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr "lm アナウンス"
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr "lm 間隔"
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr "優先するマスタ"
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr "優先するマスタ"
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr "ローカル マスタ"
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr "ドメイン マスタ"
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr "ブラウズ リスト"
+msgstr "ブラウジング オプション"
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr "ブラウズ可"
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr "ブラウズ可"
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr ""
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
-msgstr "WINSオプション"
-
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr "dns プロキシ"
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr "wins プロキシ"
+msgstr "WINS オプション"
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr "wins サーバ"
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr "wins サポート"
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr "wins フック"
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "ロッキング オプション"
-#: param/loadparm.c:930
-#, fuzzy
-msgid "blocking locks"
-msgstr "ロック"
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr "偽装 oplock"
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr "カーネル oplock"
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr "ロック"
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr "便宜的ロック"
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr "level2 oplocks"
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr "oplock 中断の待ち時間"
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr "oplock 競合の限度"
-
-#: param/loadparm.c:939
-#, fuzzy
-msgid "posix locking"
-msgstr "厳密なロック"
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr "厳密なロック"
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr "共有モード"
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
-msgstr "Ldap オプション"
-
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr "ldap サーバ"
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr "ldap ポート"
+msgstr "LDAP オプション"
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr "lpad サフィックス"
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr "ldap フィルター"
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr "ldap ルート"
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr "ldap ルート パスワード"
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "その他のオプション"
-#: param/loadparm.c:955
-#, fuzzy
-msgid "add share command"
-msgstr "dfree コマンド"
-
-#: param/loadparm.c:956
-#, fuzzy
-msgid "change share command"
-msgstr "メッセージ コマンド"
-
-#: param/loadparm.c:957
-#, fuzzy
-msgid "delete share command"
-msgstr "メッセージ コマンド"
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr "設定ファイル"
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr "プリロード"
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr "自動サービス"
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr "ロック ディレクトリ"
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr "ロック ディレクトリ"
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr "utmp ディレクトリ"
-
-#: param/loadparm.c:966
-#, fuzzy
-msgid "wtmp directory"
-msgstr "utmp ディレクトリ"
-
-#: param/loadparm.c:967
-#, fuzzy
-msgid "utmp"
-msgstr "utmp ディレクトリ"
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr "既定サービス"
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr "既定"
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr "メッセージ コマンド"
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr "dfree コマンド"
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr "リモート アナウンス"
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr "リモートのブラウズリストを同期"
-
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr "ソ\ケット アドレス"
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr "ホームディレクトリ マップ"
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr "時間オフセット"
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr "NIS ホームディレクトリ"
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr "-valid"
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr "コピー"
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr "インクルード"
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr "実行"
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr "接続時に実行"
-
-#: param/loadparm.c:987
-#, fuzzy
-msgid "preexec close"
-msgstr "接続時に実行"
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr "切断時に実行"
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr "ルートで接続時実行"
-
-#: param/loadparm.c:990
-#, fuzzy
-msgid "root preexec close"
-msgstr "ルートで接続時実行"
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr "ルートで切断時実行"
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr "利用可能"
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr "ボリューム"
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr "ファイル システム タイプ"
-
-#: param/loadparm.c:995
-#, fuzzy
-msgid "set directory"
-msgstr "ディレクトリ"
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr "広くリンク"
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr "symlink 先を参照"
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr "下に降りないディレクトリ"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
+msgstr "VFS オプション"
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr "マジック スクリプト"
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr "マジック 出力"
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr "読み取りのみのファイルを削除"
-
-#: param/loadparm.c:1003
-#, fuzzy
-msgid "dos filemode"
-msgstr "dos のファイル時刻"
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr "dos のファイル時刻"
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr "dos のファイル時刻の分解能"
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr "偽のディレクトリ作成時刻"
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr "パニック アクション"
-
-#: param/loadparm.c:1009
-#, fuzzy
-msgid "hide local users"
-msgstr "ローカル マスタ"
-
-#: param/loadparm.c:1012
-msgid "VFS options"
-msgstr "VFSオプション"
-
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-#, fuzzy
-msgid "vfs options"
-msgstr "VFSオプション"
-
-#: param/loadparm.c:1018
-#, fuzzy
-msgid "msdfs root"
-msgstr "ldap ルート"
-
-#: param/loadparm.c:1019
-#, fuzzy
-msgid "host msdfs"
-msgstr "拒否するホスト"
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
-msgstr "Winbindオプション"
-
-#: param/loadparm.c:1023
-#, fuzzy
-msgid "winbind uid"
-msgstr "Winbindオプション"
-
-#: param/loadparm.c:1024
-#, fuzzy
-msgid "winbind gid"
-msgstr "Winbindオプション"
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-#, fuzzy
-msgid "winbind separator"
-msgstr "Winbindオプション"
-
-#: param/loadparm.c:1028
-#, fuzzy
-msgid "winbind cache time"
-msgstr "lpq キャッシュ時間"
-
-#: param/loadparm.c:1029
-#, fuzzy
-msgid "winbind enum users"
-msgstr "無効なユーザ"
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
-
-#~ msgid "failed to open %s for writing\n"
-#~ msgstr "%s を書き込み用にオープンできません\n"
-
-#~ msgid "Can't reload %s\n"
-#~ msgstr "%s を再読み込みできません\n"
-
-#~ msgid "Can't setup password database vectors.\n"
-#~ msgstr "パスワード・データベースが見つけられません\n"
-
-#~ msgid "You need to have status=yes in your smb config file\n"
-#~ msgstr "smb.conf で status=yes を設定してください\n"
-
-#~ msgid "coding system"
-#~ msgstr "コーディング システム"
-
-#~ msgid "client code page"
-#~ msgstr "クライアント コードページ"
-
-#~ msgid "revalidate"
-#~ msgstr "再認証"
-
-#~ msgid "status"
-#~ msgstr "ステータス"
-
-#~ msgid "shared mem size"
-#~ msgstr "共有メモリ サイズ"
-
-#~ msgid "character set"
-#~ msgstr "文字セット"
-
-#~ msgid "domain groups"
-#~ msgstr "ドメイン グループ"
-
-#~ msgid "domain admin users"
-#~ msgstr "ドメイン管理ユーザ"
-
-#~ msgid "domain guest users"
-#~ msgstr "ドメイン ゲスト ユーザ"
-
-#~ msgid "ole locking compatibility"
-#~ msgstr "ole ロックの互換性"
-
-#~ msgid "smbrun"
-#~ msgstr "smbrun"
-
-#, fuzzy
-#~ msgid "wtmp dir"
-#~ msgstr "utmp ディレクトリ"
-
-#~ msgid "unix realname"
-#~ msgstr "unix の本名"
+msgstr "Winbind オプション"
diff --git a/source/po/pl.msg b/source/po/pl.msg
index c547a94c936..a7e56453bfc 100644
--- a/source/po/pl.msg
+++ b/source/po/pl.msg
@@ -18,7 +18,7 @@
msgid ""
msgstr ""
"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-09-20 20:29+0900\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2001-08-15 22:45+02:00\n"
"Last-Translator: Rafal Szczesniak <mimir@spin.ict.pwr.wroc.pl>\n"
"Language-Team: pl\n"
@@ -26,1748 +26,568 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: \n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "B」。D: Nie moソna otworzy %s\n"
+msgid "ERROR: Can't open %s"
+msgstr ""
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr "Pomoc"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr "Ustaw domyカlnie"
-#: web/swat.c:502
+#: ../web/swat.c:408
+#, c-format
+msgid "failed to open %s for writing"
+msgstr ""
+
+#: ../web/swat.c:431
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
+msgid "Can't reload %s"
+msgstr ""
+
+#: ../web/swat.c:501
+#, c-format
+msgid "Logged in as <b>%s</b>"
msgstr "Zalogowany jako <b>%s</b><p>\n"
-#: web/swat.c:505
+#: ../web/swat.c:505
msgid "Home"
msgstr "Strona domowa"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
msgstr "Ustawienia globalne"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
msgstr "Wspウudziaウy"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
msgstr "Drukarki"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr ""
+
+#: ../web/swat.c:513
msgid "Status"
msgstr "Status"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
msgstr "Przejrzyj Konfiguracj"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
msgstr "Zarzアdzanie Hasウami"
-#: web/swat.c:539
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "Bieソアca Konfiguracja"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "Widok Podstawowy"
+
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "Widok Zaawansowany"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "Zmie Hasウo"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "Bieソアca Konfiguracja"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "Normalny Widok"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "Peウny Widok"
-#: web/swat.c:561
-msgid "Global Variables"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr ""
+
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr ""
+
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr ""
+
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr ""
+
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr ""
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr ""
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "Potwierdシ Zmiany"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "Parametry Drukarki"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr ""
+
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr "Uruchom nmbd"
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr ""
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr ""
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr ""
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr ""
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr ""
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr ""
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr ""
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr ""
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr ""
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr ""
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr ""
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr ""
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr "Zmienne Globalne"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
msgid "Commit Changes"
msgstr "Potwierdシ Zmiany"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
msgid "Reset Values"
msgstr "Zresetuj Wartoカci"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "Widok Zaawansowany"
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "Widok Podstawowy"
-
-#: web/swat.c:613
+#: ../web/swat.c:844
msgid "Share Parameters"
msgstr "Parametry Wspウudziaウu"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
msgstr "Wybierz Wspウudziaウ"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
msgstr "Usu Wspウudziaウ"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
msgstr "Utwrz Wspウudziaウ"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr "zmiana hasウa w trybie demo odrzucona\n"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr ""
+
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
msgstr " Musisz poda \"Nazw Uソytkownika\" \n"
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
msgstr " Musisz poda \"Stare Hasウo\" \n"
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
msgstr " Musisz poda \"Zdalnア Maszyn鷭" \n"
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
msgstr " Musisz poda \"Nowe Hasウo, i ponownie wpisane Nowe Hasウo\" \n"
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
msgstr " Ponownie wpisane hasウo nie pasuje do nowego hasウa\n"
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
+msgid " The passwd for '%s' has been changed."
msgstr " Hasウo dla '%s' zostaウo zmienione. \n"
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
+msgid " The passwd for '%s' has NOT been changed."
msgstr " Hasウo dla '%s' NIE zostaウo zmienione. \n"
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
msgstr "Zarzアdzanie Hasウami na Serwerze"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr " Nazwa Uソytkownika : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
+msgstr " Nazwa Uソytkownika"
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
-msgstr " Stare Hasウo : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
+msgstr " Stare Hasウo"
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr " Nowe Hasウo : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
+msgstr " Nowe Hasウo"
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr " Ponownie wpisz Nowe Hasウo : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
+msgstr " Ponownie wpisz Nowe Hasウo"
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "Zmie Hasウo"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "Dodaj Nowego Uソytkownika"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
msgstr "Usu Uソytkownika"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
msgstr "Zablokuj Uソytkownika"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
msgstr "Odblokuj Uソytkownika"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
msgstr "Zarzアdzanie Hasウami Klient/Serwer"
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr " Zdalna Maszyna : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
+msgstr " Zdalna Maszyna"
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
msgstr "Parametry Drukarki"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
msgstr "Waソna Informacja:"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "Nazwy Drukarek zaznaczone [*] w rozwijanym polu Wybierz Drukark "
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
msgstr "sア drukarkami automatycznie ウadowanymi z "
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "Nazwa Printcap"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
msgstr "Prby usuni鹹ia tych drukarek ze SWAT nie przyniosア efektu.\n"
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
msgstr "Wybierz Drukark"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
msgstr "Usu Drukark"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
msgstr "Utwrz Drukark"
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr ""
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr ""
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr ""
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr ""
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr ""
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
msgstr ""
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
msgstr ""
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
msgstr ""
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr ""
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr ""
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr ""
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr ""
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr ""
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
msgstr "Status Serwera"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
msgstr "Automatyczne Odカwieソanie"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
msgstr "Interwaウ Odカwieソania: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
msgstr "Zatrzymaj Odカwieソanie"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
msgstr "wersja:"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
msgstr ""
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
msgstr "dziaウa"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "nie dziaウa"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
msgstr "Zatrzymaj smbd"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
msgstr "Uruchom smbd"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
msgstr "Zrestartuj smbd"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
msgstr ""
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
msgstr "Zatrzymaj nmbd"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
msgstr "Uruchom nmbd"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
msgstr "Zrestartuj nmbd"
-#: web/statuspage.c:249
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr ""
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "Zatrzymaj nmbd"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "Uruchom nmbd"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "Zrestartuj nmbd"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr ""
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "Zrestartuj nmbd"
+
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "Uruchom nmbd"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
msgstr "Aktywne Poウアczenia"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
msgstr ""
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr "Klient"
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "adres IP"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "Data"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "Zatrzymaj"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
msgstr "Aktywne Wspウudziaウy"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "Wspウudziaウ"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "Uソytkownik"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "Grupa"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
msgstr "Otwarte Pliki"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr "Wspウdzielenie"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
msgstr ""
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr "Plik"
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "Bazowe Opcje"
-
-#: param/loadparm.c:643
-#, fuzzy
-msgid "dos charset"
-msgstr "Wybierz Wspウudziaウ"
-
-#: param/loadparm.c:644
-msgid "unix charset"
-msgstr ""
-
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr ""
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr ""
-
-#: param/loadparm.c:647
-msgid "path"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
msgstr ""
-#: param/loadparm.c:648
-msgid "directory"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
msgstr ""
-#: param/loadparm.c:649
-msgid "workgroup"
-msgstr ""
-
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr ""
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr ""
-
-#: param/loadparm.c:652
-msgid "netbios scope"
-msgstr ""
-
-#: param/loadparm.c:653
-msgid "server string"
-msgstr ""
-
-#: param/loadparm.c:654
-#, fuzzy
-msgid "interfaces"
-msgstr "Drukarki"
-
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr ""
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "Bazowe Opcje"
-#: param/loadparm.c:657
+#: ../param/loadparm.c:775
msgid "Security Options"
msgstr "Opcje Zabezpiecze"
-#: param/loadparm.c:659
-msgid "security"
-msgstr ""
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr ""
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr ""
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr ""
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr ""
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr ""
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr ""
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr ""
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr ""
-
-#: param/loadparm.c:668
-#, fuzzy
-msgid "null passwords"
-msgstr "Zmie Hasウo"
-
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
-msgstr ""
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr ""
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr ""
-
-#: param/loadparm.c:672
-msgid "private dir"
-msgstr ""
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr ""
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr ""
-
-#: param/loadparm.c:675
-msgid "root dir"
-msgstr ""
-
-#: param/loadparm.c:676
-msgid "root"
-msgstr ""
-
-#: param/loadparm.c:678
-#, fuzzy
-msgid "pam password change"
-msgstr "Zarzアdzanie Hasウami"
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr ""
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr ""
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr ""
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr ""
-
-#: param/loadparm.c:683
-#, fuzzy
-msgid "password level"
-msgstr "Zarzアdzanie Hasウami"
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr ""
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr ""
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr ""
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr ""
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr ""
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr ""
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr ""
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr ""
-
-#: param/loadparm.c:693
-#, fuzzy
-msgid "user"
-msgstr "Uソytkownik"
-
-#: param/loadparm.c:694
-#, fuzzy
-msgid "users"
-msgstr "Uソytkownik"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr ""
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr ""
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr ""
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr ""
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr ""
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr ""
-
-#: param/loadparm.c:702
-msgid "printer admin"
-msgstr ""
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr ""
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr ""
-
-#: param/loadparm.c:705
-#, fuzzy
-msgid "group"
-msgstr "Grupa"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr ""
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr ""
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr ""
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr ""
-
-#: param/loadparm.c:712
-#, fuzzy
-msgid "create mask"
-msgstr "Utwrz Wspウudziaウ"
-
-#: param/loadparm.c:713
-#, fuzzy
-msgid "create mode"
-msgstr "Utwrz Wspウudziaウ"
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr ""
-
-#: param/loadparm.c:715
-#, fuzzy
-msgid "security mask"
-msgstr "Opcje Zabezpiecze"
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr ""
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr ""
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr ""
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr ""
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr ""
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr ""
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr ""
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr ""
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr ""
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr ""
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr ""
-
-#: param/loadparm.c:729
-#, fuzzy
-msgid "only user"
-msgstr "Odblokuj Uソytkownika"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr ""
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr ""
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr ""
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr ""
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "Opcje SSL"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr ""
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr ""
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr ""
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr ""
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr ""
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr ""
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr ""
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr ""
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr ""
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr ""
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr ""
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr ""
-
-#: param/loadparm.c:750
-#, fuzzy
-msgid "ssl version"
-msgstr "wersja:"
-
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr ""
-
-#: param/loadparm.c:754
-#, fuzzy
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "Opcje Blokowania"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr ""
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr ""
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr ""
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr ""
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr ""
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr ""
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr ""
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr ""
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr ""
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr ""
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr ""
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr "Opcje Protokoウu"
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr ""
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr ""
-
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr ""
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr ""
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr ""
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr ""
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr ""
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr ""
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr ""
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr ""
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr ""
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr ""
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr ""
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr ""
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr ""
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr ""
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr ""
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr ""
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr ""
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr ""
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr ""
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr ""
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "Opcje Dostrajajアce"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr ""
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr ""
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr ""
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr ""
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr ""
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr ""
-
-#: param/loadparm.c:804
-#, fuzzy
-msgid "max connections"
-msgstr "Aktywne Poウアczenia"
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr ""
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr ""
-
-#: param/loadparm.c:807
-#, fuzzy
-msgid "max open files"
-msgstr "Otwarte Pliki"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr ""
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr ""
-
-#: param/loadparm.c:811
-#, fuzzy
-msgid "socket options"
-msgstr "Bazowe Opcje"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr ""
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr ""
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr ""
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr ""
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr ""
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr ""
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr ""
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr "Opcje Drukowania"
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr ""
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr ""
-
-#: param/loadparm.c:824
-#, fuzzy
-msgid "load printers"
-msgstr "Drukarki"
-
-#: param/loadparm.c:825
-#, fuzzy
-msgid "printcap name"
-msgstr "Nazwa Printcap"
-
-#: param/loadparm.c:826
-#, fuzzy
-msgid "printcap"
-msgstr "Nazwa Printcap"
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr ""
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr ""
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr ""
-
-#: param/loadparm.c:830
-#, fuzzy
-msgid "printing"
-msgstr "dziaウa"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr ""
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr ""
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr ""
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr ""
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr ""
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr ""
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr ""
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr ""
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr ""
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr ""
-
-#: param/loadparm.c:842
-#, fuzzy
-msgid "deleteprinter command"
-msgstr "Usu Drukark"
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr ""
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr ""
-
-#: param/loadparm.c:846
-#, fuzzy
-msgid "printer name"
-msgstr "Parametry Drukarki"
-
-#: param/loadparm.c:847
-#, fuzzy
-msgid "printer"
-msgstr "Drukarki"
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr ""
-
-#: param/loadparm.c:849
-#, fuzzy
-msgid "printer driver"
-msgstr "Parametry Drukarki"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr ""
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr ""
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "Obsウuga Nazw Plikw"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr ""
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr ""
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr ""
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr ""
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr ""
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr ""
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr ""
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr ""
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr ""
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr ""
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr ""
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr ""
-
-#: param/loadparm.c:867
-#, fuzzy
-msgid "veto files"
-msgstr "Otwarte Pliki"
-
-#: param/loadparm.c:868
-#, fuzzy
-msgid "hide files"
-msgstr "Otwarte Pliki"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr ""
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr ""
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr ""
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr ""
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr ""
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr ""
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr ""
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "Opcje Domeny"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr ""
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr ""
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr ""
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr ""
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "Opcje Logowania"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr ""
-
-#: param/loadparm.c:891
-#, fuzzy
-msgid "delete user script"
-msgstr "Usu Uソytkownika"
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr ""
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr ""
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr ""
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr ""
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr ""
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr ""
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr ""
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr ""
-
-#: param/loadparm.c:901
-#, fuzzy
-msgid "logon path"
-msgstr "Opcje Logowania"
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr ""
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr ""
-
-#: param/loadparm.c:904
-#, fuzzy
-msgid "domain logons"
-msgstr "Opcje Domeny"
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr "Opcje Przeglアdania"
-#: param/loadparm.c:908
-msgid "os level"
-msgstr ""
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr ""
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr ""
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr ""
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr ""
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr ""
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr ""
-
-#: param/loadparm.c:915
-#, fuzzy
-msgid "browse list"
-msgstr "Opcje Przeglアdania"
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr ""
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr ""
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr ""
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr "Opcje WINS"
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr ""
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr ""
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr ""
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr ""
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr ""
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "Opcje Blokowania"
-#: param/loadparm.c:930
-#, fuzzy
-msgid "blocking locks"
-msgstr "Opcje Blokowania"
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr ""
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr ""
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr ""
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr ""
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr ""
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr ""
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr ""
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr ""
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr ""
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr ""
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr "Opcje Ldap"
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr ""
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr ""
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr ""
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr ""
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr ""
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr ""
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "Pozostaウe Opcje"
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr ""
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr ""
-
-#: param/loadparm.c:957
-#, fuzzy
-msgid "delete share command"
-msgstr "Usu Wspウudziaウ"
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr ""
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr ""
-
-#: param/loadparm.c:961
-#, fuzzy
-msgid "auto services"
-msgstr "Automatyczne Odカwieソanie"
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr ""
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr ""
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr ""
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr ""
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr ""
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr ""
-
-#: param/loadparm.c:971
-#, fuzzy
-msgid "default"
-msgstr "Ustaw domyカlnie"
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr ""
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr ""
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr ""
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr ""
-
-#: param/loadparm.c:976
-#, fuzzy
-msgid "socket address"
-msgstr "adres IP"
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr ""
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr ""
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr ""
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr ""
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr ""
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr ""
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr ""
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr ""
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr ""
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr ""
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr ""
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr ""
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr ""
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr ""
-
-#: param/loadparm.c:993
-#, fuzzy
-msgid "volume"
-msgstr "Strona domowa"
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr ""
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr ""
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr ""
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr ""
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr ""
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr ""
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr ""
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr ""
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr ""
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr ""
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr ""
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr ""
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr ""
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr ""
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr ""
-
-#: param/loadparm.c:1012
-#, fuzzy
-msgid "VFS options"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr "Opcje WINS"
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr ""
-
-#: param/loadparm.c:1015
-#, fuzzy
-msgid "vfs options"
-msgstr "Bazowe Opcje"
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr ""
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr ""
-
-#: param/loadparm.c:1021
-#, fuzzy
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr "Opcje Drukowania"
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr ""
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr ""
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr ""
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr ""
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr ""
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr ""
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr ""
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr ""
-
-#~ msgid "failed to open %s for writing\n"
-#~ msgstr "nie udaウo si otworzy %s do zapisu\n"
-
-#~ msgid "Can't reload %s\n"
-#~ msgstr "Nie mog przeウadowa %s\n"
-
-#~ msgid "Can't setup password database vectors.\n"
-#~ msgstr "Nie moソna ustawi wektorw bazy haseウ.\n"
-
-#~ msgid "You need to have status=yes in your smb config file\n"
-#~ msgstr "Musisz mie status=yes w swoim pliku konfiguracyjnym smb\n"
diff --git a/source/po/tr.msg b/source/po/tr.msg
index 6c2bc1f93d8..8ef551da46a 100644
--- a/source/po/tr.msg
+++ b/source/po/tr.msg
@@ -1,6 +1,5 @@
-# Swat Turkish Translation
-# Copyright (C) 2001 Deniz Akkus Kanca
-# Deniz Akkus Kanca <deniz@arayan.com>, 2001.
+# Turkish messages for international release of SWAT.
+# Copyright (C) 2001 Deniz Akkus Kanca <deniz@arayan.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -15,10 +14,11 @@
# 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.
+#
msgid ""
msgstr ""
"Project-Id-Version: i18n_swat \n"
-"POT-Creation-Date: 2001-09-20 20:29+0900\n"
+"POT-Creation-Date: 2003-10-06 05:30+0900\n"
"PO-Revision-Date: 2001-09-20 22:51EEST\n"
"Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -27,1697 +27,568 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 0.9.1\n"
-#: web/swat.c:120
+#: ../web/swat.c:117
#, c-format
-msgid "ERROR: Can't open %s\n"
-msgstr "HATA: %s alamad\n"
+msgid "ERROR: Can't open %s"
+msgstr ""
-#.
-#. str = stripspace(parm->label);
-#. strlower (str); //monyo
-#. d_printf("<tr><td><A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\">%s</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s</td><td>",
-#. str, _("Help"), parm->label);
-#.
-#: web/swat.c:211
+#: ../web/swat.c:200
msgid "Help"
msgstr "Yardm"
-#: web/swat.c:217 web/swat.c:231 web/swat.c:246 web/swat.c:254 web/swat.c:263
-#: web/swat.c:272 web/swat.c:278 web/swat.c:284 web/swat.c:297
+#: ../web/swat.c:206 ../web/swat.c:220 ../web/swat.c:235 ../web/swat.c:243 ../web/swat.c:252 ../web/swat.c:261 ../web/swat.c:267 ../web/swat.c:273 ../web/swat.c:286
msgid "Set Default"
msgstr "ヨntanmlya Ayarla"
-#: web/swat.c:502
+#: ../web/swat.c:408
#, c-format
-msgid "Logged in as <b>%s</b><p>\n"
-msgstr "<b>%s</b> kimlii ile oturum alm<p>\n"
+msgid "failed to open %s for writing"
+msgstr ""
-#: web/swat.c:505
+#: ../web/swat.c:431
+#, c-format
+msgid "Can't reload %s"
+msgstr ""
+
+#: ../web/swat.c:501
+#, c-format
+msgid "Logged in as <b>%s</b>"
+msgstr "<b>%s</b> kimlii ile oturum alm"
+
+#: ../web/swat.c:505
msgid "Home"
msgstr "Ev"
-#: web/swat.c:507
+#: ../web/swat.c:507
msgid "Globals"
msgstr "Evrenseller"
-#: web/swat.c:508
+#: ../web/swat.c:508
msgid "Shares"
msgstr "Paylamlar"
-#: web/swat.c:509
+#: ../web/swat.c:509
msgid "Printers"
msgstr "Yazclar"
-#: web/swat.c:512
+#: ../web/swat.c:510
+msgid "Wizard"
+msgstr ""
+
+#: ../web/swat.c:513
msgid "Status"
msgstr "Durum"
-#: web/swat.c:513
+#: ../web/swat.c:514
msgid "View Config"
msgstr "Ayarlara Gzat"
-#: web/swat.c:515
+#: ../web/swat.c:516
msgid "Password Management"
msgstr "゙ifre Ynetimi"
-#: web/swat.c:539
+#: ../web/swat.c:526
+msgid "Current View Is"
+msgstr "゙imdiki Ayarlar"
+
+#: ../web/swat.c:527 ../web/swat.c:530
+msgid "Basic"
+msgstr "Temel Grnm"
+
+#: ../web/swat.c:528 ../web/swat.c:531
+msgid "Advanced"
+msgstr "Gelimi Grnm"
+
+#: ../web/swat.c:529
+msgid "Change View To"
+msgstr "゙ifre Deitir"
+
+#: ../web/swat.c:554
msgid "Current Config"
msgstr "゙imdiki Ayarlar"
-#: web/swat.c:543
+#: ../web/swat.c:558
msgid "Normal View"
msgstr "Normal Grnm"
-#: web/swat.c:545
+#: ../web/swat.c:560
msgid "Full View"
msgstr "Tam Grnm"
-#: web/swat.c:561
-msgid "Global Variables"
+#. Here we first set and commit all the parameters that were selected
+#. in the previous screen.
+#: ../web/swat.c:579
+msgid "Wizard Parameter Edit Page"
+msgstr ""
+
+#: ../web/swat.c:608
+msgid "Note: smb.conf file has been read and rewritten"
+msgstr ""
+
+#. Here we go ...
+#: ../web/swat.c:716
+msgid "Samba Configuration Wizard"
+msgstr ""
+
+#: ../web/swat.c:720
+msgid "The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."
+msgstr ""
+
+#: ../web/swat.c:721
+msgid "The same will happen if you press the commit button."
+msgstr ""
+
+#: ../web/swat.c:724
+msgid "Rewrite smb.conf file"
+msgstr ""
+
+#: ../web/swat.c:725
+msgid "Commit"
+msgstr "aklama"
+
+#: ../web/swat.c:726
+msgid "Edit Parameter Values"
+msgstr "Yazc Bilgileri"
+
+#: ../web/swat.c:732
+msgid "Server Type"
+msgstr ""
+
+#: ../web/swat.c:733
+msgid "Stand Alone"
+msgstr "Nmbd'yi 軋ltr"
+
+#: ../web/swat.c:734
+msgid "Domain Member"
+msgstr "alan sunucusu"
+
+#: ../web/swat.c:735
+msgid "Domain Controller"
+msgstr "alan sunucusu"
+
+#: ../web/swat.c:738
+msgid "Unusual Type in smb.conf - Please Select New Mode"
+msgstr ""
+
+#: ../web/swat.c:740
+msgid "Configure WINS As"
+msgstr ""
+
+#: ../web/swat.c:741
+msgid "Not Used"
+msgstr "dont descend"
+
+#: ../web/swat.c:742
+msgid "Server for client use"
+msgstr ""
+
+#: ../web/swat.c:743
+msgid "Client of another WINS server"
+msgstr ""
+
+#: ../web/swat.c:745
+msgid "Remote WINS Server"
+msgstr ""
+
+#: ../web/swat.c:756
+msgid "Error: WINS Server Mode and WINS Support both set in smb.conf"
+msgstr ""
+
+#: ../web/swat.c:757
+msgid "Please Select desired WINS mode above."
+msgstr ""
+
+#: ../web/swat.c:759
+msgid "Expose Home Directories"
+msgstr ""
+
+#: ../web/swat.c:774
+msgid "The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."
+msgstr ""
+
+#: ../web/swat.c:787
+msgid "Global Parameters"
msgstr "Genel Deikenler"
-#: web/swat.c:575 web/swat.c:671 web/swat.c:1014
+#: ../web/swat.c:815 ../web/swat.c:916 ../web/swat.c:1265
msgid "Commit Changes"
msgstr "Deiiklikleri Kaydet"
-#: web/swat.c:579 web/swat.c:674 web/swat.c:1016
+#: ../web/swat.c:819 ../web/swat.c:919 ../web/swat.c:1267
msgid "Reset Values"
msgstr "Deerleri ンlk Haline Getir"
-#: web/swat.c:581 web/swat.c:676 web/swat.c:1018
-msgid "Advanced View"
-msgstr "Gelimi Grnm"
-
-#: web/swat.c:583 web/swat.c:678 web/swat.c:1020
-msgid "Basic View"
-msgstr "Temel Grnm"
-
-#: web/swat.c:613
+#: ../web/swat.c:844
msgid "Share Parameters"
msgstr "Paylam Parametreleri"
-#: web/swat.c:642
+#: ../web/swat.c:887
msgid "Choose Share"
msgstr "Paylam Se輅n"
-#: web/swat.c:656
+#: ../web/swat.c:901
msgid "Delete Share"
msgstr "Paylam Kaldr"
-#: web/swat.c:663
+#: ../web/swat.c:908
msgid "Create Share"
msgstr "Paylam Olutur"
-#: web/swat.c:708
-msgid "password change in demo mode rejected\n"
+#: ../web/swat.c:944
+msgid "password change in demo mode rejected"
msgstr "demo kipinde ifre deiiklii kabul edilmedi\n"
-#: web/swat.c:747
-msgid " Must specify \"User Name\" \n"
+#: ../web/swat.c:957
+msgid "Can't setup password database vectors."
+msgstr ""
+
+#: ../web/swat.c:983
+msgid " Must specify \"User Name\" "
msgstr " \"Kullanc Ad\" belirtilmeli \n"
-#: web/swat.c:763
-msgid " Must specify \"Old Password\" \n"
+#: ../web/swat.c:999
+msgid " Must specify \"Old Password\" "
msgstr " \"Eski ゙ifre\" belirtilmeli \n"
-#: web/swat.c:769
-msgid " Must specify \"Remote Machine\" \n"
+#: ../web/swat.c:1005
+msgid " Must specify \"Remote Machine\" "
msgstr " \"Uzak Makina\" belirtilmeli \n"
-#: web/swat.c:776
-msgid " Must specify \"New, and Re-typed Passwords\" \n"
+#: ../web/swat.c:1012
+msgid " Must specify \"New, and Re-typed Passwords\" "
msgstr " \"Yeni ve Tekrar Girilmi ゙ifreler\" belirtilmeli \n"
-#: web/swat.c:782
-msgid " Re-typed password didn't match new password\n"
+#: ../web/swat.c:1018
+msgid " Re-typed password didn't match new password "
msgstr " Tekrar girilen ifre yeni ifre ile elemedi\n"
-#: web/swat.c:812
+#: ../web/swat.c:1048
#, c-format
-msgid " The passwd for '%s' has been changed. \n"
-msgstr " '%s' i輅n ifre deitirildi. \n"
+msgid " The passwd for '%s' has been changed."
+msgstr " '%s' i輅n ifre deitirildi."
-#: web/swat.c:814
+#: ../web/swat.c:1051
#, c-format
-msgid " The passwd for '%s' has NOT been changed. \n"
-msgstr " '%s' i輅n ifre DEミン゙TンRンLMEDン. \n"
+msgid " The passwd for '%s' has NOT been changed."
+msgstr " '%s' i輅n ifre DEミン゙TンRンLMEDン."
-#: web/swat.c:838
+#: ../web/swat.c:1076
msgid "Server Password Management"
msgstr "Sunucu ゙ifre Ynetimi"
#.
#. * Create all the dialog boxes for data collection
#.
-#: web/swat.c:847 web/swat.c:894
-msgid " User Name : "
-msgstr " Kullanc Ad : "
+#: ../web/swat.c:1085 ../web/swat.c:1132
+msgid "User Name"
+msgstr " Kullanc Ad"
-#: web/swat.c:850 web/swat.c:896
-msgid " Old Password : "
-msgstr " Eski ゙ifre : "
+#: ../web/swat.c:1088 ../web/swat.c:1134
+msgid "Old Password"
+msgstr " Eski ゙ifre"
-#: web/swat.c:853 web/swat.c:898
-msgid " New Password : "
-msgstr " Yeni ゙ifre : "
+#: ../web/swat.c:1091 ../web/swat.c:1136
+msgid "New Password"
+msgstr " Yeni ゙ifre"
-#: web/swat.c:855 web/swat.c:900
-msgid " Re-type New Password : "
-msgstr " Yeni ゙ifre Tekrar : "
+#: ../web/swat.c:1093 ../web/swat.c:1138
+msgid "Re-type New Password"
+msgstr " Yeni ゙ifre Tekrar"
-#: web/swat.c:863 web/swat.c:911
+#: ../web/swat.c:1101 ../web/swat.c:1149
msgid "Change Password"
msgstr "゙ifre Deitir"
-#: web/swat.c:866
+#: ../web/swat.c:1104
msgid "Add New User"
msgstr "Kull. Ekle"
-#: web/swat.c:868
+#: ../web/swat.c:1106
msgid "Delete User"
msgstr "Kull. Sil"
-#: web/swat.c:870
+#: ../web/swat.c:1108
msgid "Disable User"
msgstr "Kull. Etkisizletir"
-#: web/swat.c:872
+#: ../web/swat.c:1110
msgid "Enable User"
msgstr "Kull. Etkinletir"
-#: web/swat.c:885
+#: ../web/swat.c:1123
msgid "Client/Server Password Management"
msgstr "ンstemci/Sunucu ゙ifre Ynetimi"
-#: web/swat.c:902
-msgid " Remote Machine : "
-msgstr " Uzak Makina : "
+#: ../web/swat.c:1140
+msgid "Remote Machine"
+msgstr " Uzak Makina"
-#: web/swat.c:940
+#: ../web/swat.c:1179
msgid "Printer Parameters"
msgstr "Yazc Bilgileri"
-#: web/swat.c:942
+#: ../web/swat.c:1181
msgid "Important Note:"
-msgstr "ヨnemli Not: "
+msgstr "ヨnemli Not:"
-#: web/swat.c:943
+#: ../web/swat.c:1182
msgid "Printer names marked with [*] in the Choose Printer drop-down box "
msgstr "Yazc Se kutusunda [*] ile iaretlenmi yazc isimleri "
-#: web/swat.c:944
+#: ../web/swat.c:1183
msgid "are autoloaded printers from "
msgstr "otomatik yklenen yazclar "
-#: web/swat.c:945
+#: ../web/swat.c:1184
msgid "Printcap Name"
msgstr "Printcap Ad"
-#: web/swat.c:946
-msgid "Attempting to delete these printers from SWAT will have no effect.\n"
+#: ../web/swat.c:1185
+msgid "Attempting to delete these printers from SWAT will have no effect."
msgstr "Bu yazclar SWAT'dan silmek etkisiz olacaktr.\n"
-#: web/swat.c:980
+#: ../web/swat.c:1231
msgid "Choose Printer"
msgstr "Yazc Se"
-#: web/swat.c:999
+#: ../web/swat.c:1250
msgid "Delete Printer"
msgstr "Yazc Sil"
-#: web/swat.c:1006
+#: ../web/swat.c:1257
msgid "Create Printer"
msgstr "Yazc Olutur"
-#: web/statuspage.c:40
-msgid "DENY_NONE"
-msgstr "HERKESE_AヌIK"
-
-#: web/statuspage.c:41
-msgid "DENY_ALL "
-msgstr "HERKESン_REDDET "
-
-#: web/statuspage.c:42
-msgid "DENY_DOS "
-msgstr "DOSU_REDDET "
-
-#: web/statuspage.c:43
-msgid "DENY_READ "
-msgstr "OKU_REDDET "
-
-#: web/statuspage.c:44
-msgid "DENY_WRITE "
-msgstr "YAZ_REDDET "
-
-#: web/statuspage.c:50
+#: ../web/statuspage.c:123
msgid "RDONLY "
msgstr "SALTOKUNUR "
-#: web/statuspage.c:51
+#: ../web/statuspage.c:124
msgid "WRONLY "
msgstr "SALTYAZILIR "
-#: web/statuspage.c:52
+#: ../web/statuspage.c:125
msgid "RDWR "
msgstr "O/Y "
-#: web/statuspage.c:60
-msgid "EXCLUSIVE+BATCH "
-msgstr "゙AHSン+TOPTAN "
-
-#: web/statuspage.c:62
-msgid "EXCLUSIVE "
-msgstr "゙AHSン "
-
-#: web/statuspage.c:64
-msgid "BATCH "
-msgstr "TOPTAN "
-
-#: web/statuspage.c:66
-msgid "LEVEL_II "
-msgstr "SEVンYE_II "
-
-#: web/statuspage.c:68
-msgid "NONE "
-msgstr "Hンヌ "
-
-#: web/statuspage.c:195
+#: ../web/statuspage.c:309
msgid "Server Status"
msgstr "Sunucu Durumu"
-#: web/statuspage.c:200
+#: ../web/statuspage.c:314
msgid "Auto Refresh"
msgstr "Oto Tazele"
-#: web/statuspage.c:201 web/statuspage.c:206
+#: ../web/statuspage.c:315 ../web/statuspage.c:320
msgid "Refresh Interval: "
msgstr "Tazeleme Aral: "
-#: web/statuspage.c:205
+#: ../web/statuspage.c:319
msgid "Stop Refreshing"
msgstr "Tazelemeyi Durdur"
-#: web/statuspage.c:220
+#: ../web/statuspage.c:334
msgid "version:"
msgstr "srm:"
-#: web/statuspage.c:223
+#: ../web/statuspage.c:337
msgid "smbd:"
msgstr "smbd:"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "running"
msgstr "軋lyor"
-#: web/statuspage.c:223 web/statuspage.c:235
+#: ../web/statuspage.c:337 ../web/statuspage.c:350 ../web/statuspage.c:364
msgid "not running"
msgstr "軋lmyor"
-#: web/statuspage.c:226
+#: ../web/statuspage.c:341
msgid "Stop smbd"
msgstr "Smbd'yi durdur"
-#: web/statuspage.c:228
+#: ../web/statuspage.c:343
msgid "Start smbd"
msgstr "Smbd'yi 軋ltr"
-#: web/statuspage.c:230
+#: ../web/statuspage.c:345
msgid "Restart smbd"
msgstr "Smbd'yi yeniden 軋ltr"
-#: web/statuspage.c:235
+#: ../web/statuspage.c:350
msgid "nmbd:"
msgstr "nmbd:"
-#: web/statuspage.c:238
+#: ../web/statuspage.c:354
msgid "Stop nmbd"
msgstr "Nmbd'yi durdur"
-#: web/statuspage.c:240
+#: ../web/statuspage.c:356
msgid "Start nmbd"
msgstr "Nmbd'yi 軋ltr"
-#: web/statuspage.c:242
+#: ../web/statuspage.c:358
msgid "Restart nmbd"
msgstr "Nmbd'yi yeniden 軋ltr"
-#: web/statuspage.c:249
+#: ../web/statuspage.c:364
+msgid "winbindd:"
+msgstr "winbind uid"
+
+#: ../web/statuspage.c:368
+msgid "Stop winbindd"
+msgstr "Nmbd'yi durdur"
+
+#: ../web/statuspage.c:370
+msgid "Start winbindd"
+msgstr "Nmbd'yi 軋ltr"
+
+#: ../web/statuspage.c:372
+msgid "Restart winbindd"
+msgstr "Nmbd'yi yeniden 軋ltr"
+
+#. stop, restart all
+#: ../web/statuspage.c:381
+msgid "Stop All"
+msgstr ""
+
+#: ../web/statuspage.c:382
+msgid "Restart All"
+msgstr "Nmbd'yi yeniden 軋ltr"
+
+#. start all
+#: ../web/statuspage.c:386
+msgid "Start All"
+msgstr "Nmbd'yi 軋ltr"
+
+#: ../web/statuspage.c:393
msgid "Active Connections"
msgstr "Aktif Balantlar"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "PID"
msgstr "PID"
-#: web/statuspage.c:251 web/statuspage.c:264
+#: ../web/statuspage.c:395 ../web/statuspage.c:408
msgid "Client"
msgstr "ンstemci"
-#: web/statuspage.c:251
+#: ../web/statuspage.c:395
msgid "IP address"
msgstr "IP numaras"
-#: web/statuspage.c:251 web/statuspage.c:264 web/statuspage.c:272
+#: ../web/statuspage.c:395 ../web/statuspage.c:408 ../web/statuspage.c:416
msgid "Date"
msgstr "Tarih"
-#: web/statuspage.c:253
+#: ../web/statuspage.c:397
msgid "Kill"
msgstr "Kapat"
-#: web/statuspage.c:261
+#: ../web/statuspage.c:405
msgid "Active Shares"
msgstr "Aktif Paylamlar"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Share"
msgstr "Paylam"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "User"
msgstr "Kullanc"
-#: web/statuspage.c:264
+#: ../web/statuspage.c:408
msgid "Group"
msgstr "Grup"
-#: web/statuspage.c:270
+#: ../web/statuspage.c:414
msgid "Open Files"
msgstr "Ak Dosyalar"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Sharing"
msgstr "Paylalyor"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "R/W"
msgstr "O/Y"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "Oplock"
msgstr "Oplock"
-#: web/statuspage.c:272
+#: ../web/statuspage.c:416
msgid "File"
msgstr "Dosya"
-#: param/loadparm.c:641
-msgid "Base Options"
-msgstr "Temel Se軻nekler"
-
-#: param/loadparm.c:643
-msgid "dos charset"
-msgstr "dos karakter kmesi"
-
-#: param/loadparm.c:644
-msgid "unix charset"
-msgstr "unix karakter kmesi"
-
-#: param/loadparm.c:645
-msgid "display charset"
-msgstr "karakter kmesini gster"
-
-#: param/loadparm.c:646
-msgid "comment"
-msgstr "aklama"
-
-#: param/loadparm.c:647
-msgid "path"
-msgstr "yol"
-
-#: param/loadparm.c:648
-msgid "directory"
-msgstr "dizin"
-
-#: param/loadparm.c:649
-msgid "workgroup"
-msgstr "軋lma grubu"
-
-#: param/loadparm.c:650
-msgid "netbios name"
-msgstr "netbios ad"
-
-#: param/loadparm.c:651
-msgid "netbios aliases"
-msgstr "netbios rumuzlar"
-
-#: param/loadparm.c:652
-msgid "netbios scope"
-msgstr "netbios kapsam"
-
-#: param/loadparm.c:653
-msgid "server string"
-msgstr "sunucu dizgesi"
+#: ../web/statuspage.c:425
+msgid "Show Client in col 1"
+msgstr ""
-#: param/loadparm.c:654
-msgid "interfaces"
-msgstr "arayzler"
+#: ../web/statuspage.c:426
+msgid "Show PID in col 1"
+msgstr ""
-#: param/loadparm.c:655
-msgid "bind interfaces only"
-msgstr "yalnzca arayzleri bala"
+#: ../param/loadparm.c:755
+msgid "Base Options"
+msgstr "Temel Se軻nekler"
-#: param/loadparm.c:657
+#: ../param/loadparm.c:775
msgid "Security Options"
msgstr "Gvenlik Se軻nekleri"
-#: param/loadparm.c:659
-msgid "security"
-msgstr "gvenlik"
-
-#: param/loadparm.c:660
-msgid "encrypt passwords"
-msgstr "ifreyi ifrele "
-
-#: param/loadparm.c:661
-msgid "update encrypted"
-msgstr "ifrelenmi gncelle"
-
-#: param/loadparm.c:662
-msgid "allow trusted domains"
-msgstr "gvenli alanlara izin ver"
-
-#: param/loadparm.c:663
-msgid "alternate permissions"
-msgstr "baka izinler"
-
-#: param/loadparm.c:664
-msgid "hosts equiv"
-msgstr "hosts edeerlisi"
-
-#: param/loadparm.c:665
-msgid "min passwd length"
-msgstr "en ksa ifre uzunluu"
-
-#: param/loadparm.c:666
-msgid "min password length"
-msgstr "en ksa ifre uzunluu"
-
-#: param/loadparm.c:667
-msgid "map to guest"
-msgstr "guest (misafir) kullancya ele"
-
-#: param/loadparm.c:668
-msgid "null passwords"
-msgstr "bo ifreler"
-
-#: param/loadparm.c:669
-msgid "obey pam restrictions"
-msgstr "pam kstlamalarna uy"
-
-#: param/loadparm.c:670
-msgid "password server"
-msgstr "ifre sunucusu"
-
-#: param/loadparm.c:671
-msgid "smb passwd file"
-msgstr "smb ifre dosyas"
-
-#: param/loadparm.c:672
-msgid "private dir"
-msgstr "zel dizin"
-
-#: param/loadparm.c:673
-msgid "passdb module path"
-msgstr "ifre veritaban modl yolu"
-
-#: param/loadparm.c:674
-msgid "root directory"
-msgstr "kk dizin"
-
-#: param/loadparm.c:675
-msgid "root dir"
-msgstr "kk dizin"
-
-#: param/loadparm.c:676
-msgid "root"
-msgstr "kk"
-
-#: param/loadparm.c:678
-msgid "pam password change"
-msgstr "pam ifre deiiklii"
-
-#: param/loadparm.c:679
-msgid "passwd program"
-msgstr "ifre yazlm"
-
-#: param/loadparm.c:680
-msgid "passwd chat"
-msgstr "ifre diyalou"
-
-#: param/loadparm.c:681
-msgid "passwd chat debug"
-msgstr "ifre diyalog hata ayklamas"
-
-#: param/loadparm.c:682
-msgid "username map"
-msgstr "kullanc ad elemesi"
-
-#: param/loadparm.c:683
-msgid "password level"
-msgstr "ifre seviyesi"
-
-#: param/loadparm.c:684
-msgid "username level"
-msgstr "kullanc kimlii seviyesi"
-
-#: param/loadparm.c:685
-msgid "unix password sync"
-msgstr "unix ifre senkronizasyonu"
-
-#: param/loadparm.c:686
-msgid "restrict anonymous"
-msgstr "anonim eriimi kstla"
-
-#: param/loadparm.c:687
-msgid "lanman auth"
-msgstr "lanman auth"
-
-#: param/loadparm.c:688
-msgid "ntlm auth"
-msgstr "ntlm auth"
-
-#: param/loadparm.c:689
-msgid "plaintext to smbpasswd"
-msgstr "dz metinden smbpasswd'e"
-
-#: param/loadparm.c:690
-msgid "use rhosts"
-msgstr "rhosts kullan"
-
-#: param/loadparm.c:692
-msgid "username"
-msgstr "kullanc ad"
-
-#: param/loadparm.c:693
-msgid "user"
-msgstr "kullanc"
-
-#: param/loadparm.c:694
-msgid "users"
-msgstr "kullanclar"
-
-#: param/loadparm.c:696
-msgid "guest account"
-msgstr "misafir hesap"
-
-#: param/loadparm.c:697
-msgid "invalid users"
-msgstr "ge軻rsiz kullanclar"
-
-#: param/loadparm.c:698
-msgid "valid users"
-msgstr "ge軻rli kullanclar"
-
-#: param/loadparm.c:699
-msgid "admin users"
-msgstr "ynetici kullanclar"
-
-#: param/loadparm.c:700
-msgid "read list"
-msgstr "okuma listesi"
-
-#: param/loadparm.c:701
-msgid "write list"
-msgstr "yazma listesi"
-
-#: param/loadparm.c:702
-msgid "printer admin"
-msgstr "yazc ynetimi"
-
-#: param/loadparm.c:703
-msgid "force user"
-msgstr "kullancy zorla"
-
-#: param/loadparm.c:704
-msgid "force group"
-msgstr "grubu zorla"
-
-#: param/loadparm.c:705
-msgid "group"
-msgstr "grup"
-
-#: param/loadparm.c:707
-msgid "read only"
-msgstr "salt okunur"
-
-#: param/loadparm.c:708
-msgid "write ok"
-msgstr "yazma tamam"
-
-#: param/loadparm.c:709
-msgid "writeable"
-msgstr "yazlabilir"
-
-#: param/loadparm.c:710
-msgid "writable"
-msgstr "yazlabilir"
-
-#: param/loadparm.c:712
-msgid "create mask"
-msgstr "oluturma izinleri"
-
-#: param/loadparm.c:713
-msgid "create mode"
-msgstr "oluturma kipi"
-
-#: param/loadparm.c:714
-msgid "force create mode"
-msgstr "oluturma kipini zorla"
-
-#: param/loadparm.c:715
-msgid "security mask"
-msgstr "gvenlik izinleri"
-
-#: param/loadparm.c:716
-msgid "force security mode"
-msgstr "gvenlik kipini zorla"
-
-#: param/loadparm.c:717
-msgid "directory mask"
-msgstr "dizin izinleri"
-
-#: param/loadparm.c:718
-msgid "directory mode"
-msgstr "dizin kipi"
-
-#: param/loadparm.c:719
-msgid "force directory mode"
-msgstr "dizin kipini zorla"
-
-#: param/loadparm.c:720
-msgid "directory security mask"
-msgstr "dizin gvenlik izinleri"
-
-#: param/loadparm.c:721
-msgid "force directory security mode"
-msgstr "dizin gvenlik kipini zorla"
-
-#: param/loadparm.c:722
-msgid "inherit permissions"
-msgstr "izinleri ebeveynden al"
-
-#: param/loadparm.c:723
-msgid "guest only"
-msgstr "yalnz misafir"
-
-#: param/loadparm.c:724
-msgid "only guest"
-msgstr "yalnz misafir"
-
-#: param/loadparm.c:726
-msgid "guest ok"
-msgstr "misafir tamam"
-
-#: param/loadparm.c:727
-msgid "public"
-msgstr "genel"
-
-#: param/loadparm.c:729
-msgid "only user"
-msgstr "salt kullanc"
-
-#: param/loadparm.c:730
-msgid "hosts allow"
-msgstr "hosts izinli"
-
-#: param/loadparm.c:731
-msgid "allow hosts"
-msgstr "hosts izinli"
-
-#: param/loadparm.c:732
-msgid "hosts deny"
-msgstr "hosts izinsiz"
-
-#: param/loadparm.c:733
-msgid "deny hosts"
-msgstr "hosts izinsiz"
-
-#: param/loadparm.c:736
-msgid "Secure Socket Layer Options"
-msgstr "Gvenli Soket Katman Se軻nekleri"
-
-#: param/loadparm.c:737
-msgid "ssl"
-msgstr "ssl"
-
-#: param/loadparm.c:739
-msgid "ssl hosts"
-msgstr "ssl hosts"
-
-#: param/loadparm.c:740
-msgid "ssl hosts resign"
-msgstr "ssl hosts istifa"
-
-#: param/loadparm.c:741
-msgid "ssl CA certDir"
-msgstr "ssl CA sertifika dizini"
-
-#: param/loadparm.c:742
-msgid "ssl CA certFile"
-msgstr "ssl CA sertifika dosyas"
-
-#: param/loadparm.c:743
-msgid "ssl server cert"
-msgstr "ssl sunucu sertifikas"
-
-#: param/loadparm.c:744
-msgid "ssl server key"
-msgstr "ssl sunucu anahtar"
-
-#: param/loadparm.c:745
-msgid "ssl client cert"
-msgstr "ssl istemci sertifikas"
-
-#: param/loadparm.c:746
-msgid "ssl client key"
-msgstr "ssl istemci anahtar"
-
-#: param/loadparm.c:747
-msgid "ssl require clientcert"
-msgstr "ssl istemci sertifikas iste"
-
-#: param/loadparm.c:748
-msgid "ssl require servercert"
-msgstr "ssl sunucu sertifikas iste"
-
-#: param/loadparm.c:749
-msgid "ssl ciphers"
-msgstr "ssl ifreleri"
-
-#: param/loadparm.c:750
-msgid "ssl version"
-msgstr "ssl srm"
-
-#: param/loadparm.c:751
-msgid "ssl compatibility"
-msgstr "ssl uyumluluu"
-
-#: param/loadparm.c:754
+#: ../param/loadparm.c:859
msgid "Logging Options"
msgstr "Gnlk Kayd Se軻nekleri"
-#: param/loadparm.c:755
-msgid "log level"
-msgstr "gnlk seviyesi"
-
-#: param/loadparm.c:756
-msgid "debuglevel"
-msgstr "hata ayklama seviyesi"
-
-#: param/loadparm.c:757
-msgid "syslog"
-msgstr "sistem gnl"
-
-#: param/loadparm.c:758
-msgid "syslog only"
-msgstr "salt sistem gnl"
-
-#: param/loadparm.c:759
-msgid "log file"
-msgstr "gnlk dosyas"
-
-#: param/loadparm.c:761
-msgid "max log size"
-msgstr "maksimum gnlk bykl"
-
-#: param/loadparm.c:762
-msgid "timestamp logs"
-msgstr "zaman damgas gnlkleri"
-
-#: param/loadparm.c:763
-msgid "debug timestamp"
-msgstr "hata ayklama zaman damgas"
-
-#: param/loadparm.c:764
-msgid "debug hires timestamp"
-msgstr "hata ayklama yksek 銹znrlkl zaman damgas"
-
-#: param/loadparm.c:765
-msgid "debug pid"
-msgstr "hata ayklama pid"
-
-#: param/loadparm.c:766
-msgid "debug uid"
-msgstr "hata ayklama uid"
-
-#: param/loadparm.c:768
+#: ../param/loadparm.c:874
msgid "Protocol Options"
msgstr "Protokol Se軻nekleri"
-#: param/loadparm.c:770
-msgid "protocol"
-msgstr "protokol"
-
-#: param/loadparm.c:771
-msgid "large readwrite"
-msgstr "byk oku/yaz"
-
-#: param/loadparm.c:772
-msgid "max protocol"
-msgstr "max protokol"
-
-#: param/loadparm.c:773
-msgid "min protocol"
-msgstr "min protokol"
-
-#: param/loadparm.c:774
-msgid "unicode"
-msgstr "unicode"
-
-#: param/loadparm.c:775
-msgid "read bmpx"
-msgstr "bmpx oku"
-
-#: param/loadparm.c:776
-msgid "read raw"
-msgstr "ham oku"
-
-#: param/loadparm.c:777
-msgid "write raw"
-msgstr "ham yaz"
-
-#: param/loadparm.c:779
-msgid "nt smb support"
-msgstr "nt smb destei"
-
-#: param/loadparm.c:780
-msgid "nt pipe support"
-msgstr "nt verihatt destei"
-
-#: param/loadparm.c:781
-msgid "nt acl support"
-msgstr "nt acl destei"
-
-#: param/loadparm.c:782
-msgid "announce version"
-msgstr "srm bildir"
-
-#: param/loadparm.c:783
-msgid "announce as"
-msgstr "bildir"
-
-#: param/loadparm.c:784
-msgid "max mux"
-msgstr "maksimum mux"
-
-#: param/loadparm.c:785
-msgid "max xmit"
-msgstr "maksimum xmit"
-
-#: param/loadparm.c:787
-msgid "name resolve order"
-msgstr "ad 銹zmleme sras"
-
-#: param/loadparm.c:788
-msgid "max packet"
-msgstr "maksimum paket"
-
-#: param/loadparm.c:789
-msgid "packet size"
-msgstr "paket bykl"
-
-#: param/loadparm.c:790
-msgid "max ttl"
-msgstr "maksimum ttl"
-
-#: param/loadparm.c:791
-msgid "max wins ttl"
-msgstr "maksimum wins ttl"
-
-#: param/loadparm.c:792
-msgid "min wins ttl"
-msgstr "minimum wins ttl"
-
-#: param/loadparm.c:793
-msgid "time server"
-msgstr "zaman sunucusu"
-
-#: param/loadparm.c:795
+#: ../param/loadparm.c:911
msgid "Tuning Options"
msgstr "Ayar Se軻nekleri"
-#: param/loadparm.c:797
-msgid "change notify timeout"
-msgstr "zamanam bildirmesini deitir"
-
-#: param/loadparm.c:798
-msgid "deadtime"
-msgstr "lzaman"
-
-#: param/loadparm.c:799
-msgid "getwd cache"
-msgstr "getwd arabellei"
-
-#: param/loadparm.c:800
-msgid "keepalive"
-msgstr "hayattatut"
-
-#: param/loadparm.c:802
-msgid "lpq cache time"
-msgstr "lpq arabellek zaman"
-
-#: param/loadparm.c:803
-msgid "max smbd processes"
-msgstr "maksimum smbd sreci"
-
-#: param/loadparm.c:804
-msgid "max connections"
-msgstr "maksimum balant"
-
-#: param/loadparm.c:805
-msgid "paranoid server security"
-msgstr "yksek dereceli sunucu gvenlii"
-
-#: param/loadparm.c:806
-msgid "max disk size"
-msgstr "maksimum disk bykl"
-
-#: param/loadparm.c:807
-msgid "max open files"
-msgstr "maksimum ak dosya"
-
-#: param/loadparm.c:808
-msgid "min print space"
-msgstr "minimum yazma alan"
-
-#: param/loadparm.c:809
-msgid "read size"
-msgstr "okuma boyu"
-
-#: param/loadparm.c:811
-msgid "socket options"
-msgstr "soket se軻nekleri"
-
-#: param/loadparm.c:812
-msgid "stat cache size"
-msgstr "durum arabellei boyu"
-
-#: param/loadparm.c:813
-msgid "strict allocate"
-msgstr "sk ayrma"
-
-#: param/loadparm.c:814
-msgid "strict sync"
-msgstr "sk senkronizasyon"
-
-#: param/loadparm.c:815
-msgid "sync always"
-msgstr "herzaman senkronize"
-
-#: param/loadparm.c:816
-msgid "use mmap"
-msgstr "bellek elemesi kullan"
-
-#: param/loadparm.c:817
-msgid "hostname lookups"
-msgstr "sunucu ad arama"
-
-#: param/loadparm.c:818
-msgid "write cache size"
-msgstr "yazma arabellek boyu"
-
-#: param/loadparm.c:820
+#: ../param/loadparm.c:940
msgid "Printing Options"
msgstr "Yazdrma Se軻nekleri"
-#: param/loadparm.c:822
-msgid "total print jobs"
-msgstr "toplam yazdrma ileri"
-
-#: param/loadparm.c:823
-msgid "max print jobs"
-msgstr "maksimum yazdrma ii"
-
-#: param/loadparm.c:824
-msgid "load printers"
-msgstr "yazclar ykle"
-
-#: param/loadparm.c:825
-msgid "printcap name"
-msgstr "printcap ad"
-
-#: param/loadparm.c:826
-msgid "printcap"
-msgstr "printcap"
-
-#: param/loadparm.c:827
-msgid "printable"
-msgstr "yazdrlabilir"
-
-#: param/loadparm.c:828
-msgid "print ok"
-msgstr "yazdrma tamam"
-
-#: param/loadparm.c:829
-msgid "postscript"
-msgstr "postscript"
-
-#: param/loadparm.c:830
-msgid "printing"
-msgstr "yazdryor"
-
-#: param/loadparm.c:831
-msgid "print command"
-msgstr "yazdrma komutu"
-
-#: param/loadparm.c:832
-msgid "disable spoolss"
-msgstr "kuyruu etkisizletir"
-
-#: param/loadparm.c:833
-msgid "lpq command"
-msgstr "lpq komutu"
-
-#: param/loadparm.c:834
-msgid "lprm command"
-msgstr "lprm komutu"
-
-#: param/loadparm.c:835
-msgid "lppause command"
-msgstr "lppause komutu"
-
-#: param/loadparm.c:836
-msgid "lpresume command"
-msgstr "lpresume komutu"
-
-#: param/loadparm.c:837
-msgid "queuepause command"
-msgstr "queuepause komutu"
-
-#: param/loadparm.c:838
-msgid "queueresume command"
-msgstr "queueresume komutu"
-
-#: param/loadparm.c:840
-msgid "enumports command"
-msgstr "port listele komutu"
-
-#: param/loadparm.c:841
-msgid "addprinter command"
-msgstr "yazc ekle komutu"
-
-#: param/loadparm.c:842
-msgid "deleteprinter command"
-msgstr "yazc sil komutu"
-
-#: param/loadparm.c:843
-msgid "show add printer wizard"
-msgstr "yazc ekleme sihirbazn gster"
-
-#: param/loadparm.c:844
-msgid "os2 driver map"
-msgstr "os2 src elemesi"
-
-#: param/loadparm.c:846
-msgid "printer name"
-msgstr "yazc ad"
-
-#: param/loadparm.c:847
-msgid "printer"
-msgstr "yazc"
-
-#: param/loadparm.c:848
-msgid "use client driver"
-msgstr "istemci srcs kullan"
-
-#: param/loadparm.c:849
-msgid "printer driver"
-msgstr "yazc srcs"
-
-#: param/loadparm.c:850
-msgid "printer driver file"
-msgstr "yazc src dosyas"
-
-#: param/loadparm.c:851
-msgid "printer driver location"
-msgstr "yazc srcs yeri"
-
-#: param/loadparm.c:853
+#: ../param/loadparm.c:970
msgid "Filename Handling"
msgstr "Dosyaad ンlenmesi"
-#: param/loadparm.c:854
-msgid "strip dot"
-msgstr "noktalar bastr"
-
-#: param/loadparm.c:856
-msgid "mangled stack"
-msgstr "kartrlm yt"
-
-#: param/loadparm.c:857
-msgid "default case"
-msgstr "ntanml byk/k錮k harf"
-
-#: param/loadparm.c:858
-msgid "case sensitive"
-msgstr "byk k錮k harfe duyarl"
-
-#: param/loadparm.c:859
-msgid "casesignames"
-msgstr "casesignames"
-
-#: param/loadparm.c:860
-msgid "preserve case"
-msgstr "byk k錮k harf ayrmn tut"
-
-#: param/loadparm.c:861
-msgid "short preserve case"
-msgstr "ksa byk k錮k harf ayrmn tut"
-
-#: param/loadparm.c:862
-msgid "mangle case"
-msgstr "byk k錮k harf harmanla"
-
-#: param/loadparm.c:863
-msgid "mangling char"
-msgstr "karakter harmanlanyor"
-
-#: param/loadparm.c:864
-msgid "hide dot files"
-msgstr "nokta ile balayan dosyalar gizle"
-
-#: param/loadparm.c:865
-msgid "hide unreadable"
-msgstr "okunamazlar sakla"
-
-#: param/loadparm.c:866
-msgid "delete veto files"
-msgstr "veto dosyalarn sil"
-
-#: param/loadparm.c:867
-msgid "veto files"
-msgstr "veto dosyalar"
-
-#: param/loadparm.c:868
-msgid "hide files"
-msgstr "dosyalar gizle"
-
-#: param/loadparm.c:869
-msgid "veto oplock files"
-msgstr "veto oplock dosyalar"
-
-#: param/loadparm.c:870
-msgid "map system"
-msgstr "sistemi ele"
-
-#: param/loadparm.c:871
-msgid "map hidden"
-msgstr "gizlileri ele"
-
-#: param/loadparm.c:872
-msgid "map archive"
-msgstr "arivi ele"
-
-#: param/loadparm.c:873
-msgid "mangled names"
-msgstr "harmanlanm isimler"
-
-#: param/loadparm.c:874
-msgid "mangled map"
-msgstr "harmanlanm eleme"
-
-#: param/loadparm.c:875
-msgid "stat cache"
-msgstr "durum arabellei"
-
-#: param/loadparm.c:877
+#: ../param/loadparm.c:996
msgid "Domain Options"
msgstr "Alan Se軻nekleri"
-#: param/loadparm.c:879
-msgid "domain admin group"
-msgstr "alan ynetici grubu"
-
-#: param/loadparm.c:880
-msgid "domain guest group"
-msgstr "alan misafir grubu"
-
-#: param/loadparm.c:883
-msgid "groupname map"
-msgstr "grup ad elemesi"
-
-#: param/loadparm.c:886
-msgid "machine password timeout"
-msgstr "makina ifresi zamanam"
-
-#: param/loadparm.c:888
+#: ../param/loadparm.c:1000
msgid "Logon Options"
msgstr "Sistem Giri Se軻nekleri"
-#: param/loadparm.c:890
-msgid "add user script"
-msgstr "kullanc ekleme betii"
-
-#: param/loadparm.c:891
-msgid "delete user script"
-msgstr "kullanc silme betii"
-
-#: param/loadparm.c:892
-msgid "add group script"
-msgstr "grup ekleme betii"
-
-#: param/loadparm.c:893
-msgid "delete group script"
-msgstr "grup silme betii"
-
-#: param/loadparm.c:894
-msgid "add user to group script"
-msgstr "gruba kullanc ekleme betii"
-
-#: param/loadparm.c:895
-msgid "delete user from group script"
-msgstr "gruptan kullanc silme betii"
-
-#: param/loadparm.c:896
-msgid "add machine script"
-msgstr "makina ekleme betii"
-
-#: param/loadparm.c:897
-msgid "shutdown script"
-msgstr "sistem kapan betii"
-
-#: param/loadparm.c:898
-msgid "abort shutdown script"
-msgstr "sistem kapan betiini durdur"
-
-#: param/loadparm.c:900
-msgid "logon script"
-msgstr "sistem giri betii"
-
-#: param/loadparm.c:901
-msgid "logon path"
-msgstr "sistem giri yolu"
-
-#: param/loadparm.c:902
-msgid "logon drive"
-msgstr "sistem giri aygt"
-
-#: param/loadparm.c:903
-msgid "logon home"
-msgstr "sistem giri kk"
-
-#: param/loadparm.c:904
-msgid "domain logons"
-msgstr "alan girileri"
-
-#: param/loadparm.c:906
+#: ../param/loadparm.c:1019
msgid "Browse Options"
msgstr "Gzatma Se軻nekleri"
-#: param/loadparm.c:908
-msgid "os level"
-msgstr "iletim sistem seviyesi"
-
-#: param/loadparm.c:909
-msgid "lm announce"
-msgstr "lm bildirimi"
-
-#: param/loadparm.c:910
-msgid "lm interval"
-msgstr "lm aral"
-
-#: param/loadparm.c:911
-msgid "preferred master"
-msgstr "tercih edilen ana alan sunucusu"
-
-#: param/loadparm.c:912
-msgid "prefered master"
-msgstr "tercih edilen ana alan sunucusu"
-
-#: param/loadparm.c:913
-msgid "local master"
-msgstr "yerel alan sunucusu"
-
-#: param/loadparm.c:914
-msgid "domain master"
-msgstr "alan sunucusu"
-
-#: param/loadparm.c:915
-msgid "browse list"
-msgstr "gzatma listesi"
-
-#: param/loadparm.c:916
-msgid "browseable"
-msgstr "gzatlabilir"
-
-#: param/loadparm.c:917
-msgid "browsable"
-msgstr "gzatlabilir"
-
-#: param/loadparm.c:918
-msgid "enhanced browsing"
-msgstr "gelikin gzatma"
-
-#: param/loadparm.c:920
+#: ../param/loadparm.c:1033
msgid "WINS Options"
msgstr "WINS Se軻nekleri"
-#: param/loadparm.c:921
-msgid "dns proxy"
-msgstr "dns proxy"
-
-#: param/loadparm.c:922
-msgid "wins proxy"
-msgstr "wins proxy"
-
-#: param/loadparm.c:924
-msgid "wins server"
-msgstr "wins sunucusu"
-
-#: param/loadparm.c:925
-msgid "wins support"
-msgstr "wins destei"
-
-#: param/loadparm.c:926
-msgid "wins hook"
-msgstr "wins girii"
-
-#: param/loadparm.c:928
+#: ../param/loadparm.c:1043
msgid "Locking Options"
msgstr "Kilitleme Se軻nekleri"
-#: param/loadparm.c:930
-msgid "blocking locks"
-msgstr "engelleyen kilitler"
-
-#: param/loadparm.c:931
-msgid "fake oplocks"
-msgstr "sahte oplocklar"
-
-#: param/loadparm.c:932
-msgid "kernel oplocks"
-msgstr "軻kirdek oplocklar"
-
-#: param/loadparm.c:933
-msgid "locking"
-msgstr "kilitliyor"
-
-#: param/loadparm.c:935
-msgid "oplocks"
-msgstr "oplocklar"
-
-#: param/loadparm.c:936
-msgid "level2 oplocks"
-msgstr "Seviye 2 oplocklar"
-
-#: param/loadparm.c:937
-msgid "oplock break wait time"
-msgstr "oplock krma bekleme sresi"
-
-#: param/loadparm.c:938
-msgid "oplock contention limit"
-msgstr "oplock ihtilaf limiti"
-
-#: param/loadparm.c:939
-msgid "posix locking"
-msgstr "posix kilitlemesi"
-
-#: param/loadparm.c:940
-msgid "strict locking"
-msgstr "sk kilitleme"
-
-#: param/loadparm.c:941
-msgid "share modes"
-msgstr "paylam kipleri"
-
-#: param/loadparm.c:944
+#: ../param/loadparm.c:1061
msgid "Ldap Options"
msgstr "Ldap Se軻nekleri"
-#: param/loadparm.c:946
-msgid "ldap server"
-msgstr "ldap sunucusu"
-
-#: param/loadparm.c:947
-msgid "ldap port"
-msgstr "ldap portu"
-
-#: param/loadparm.c:948
-msgid "ldap suffix"
-msgstr "ldap soneki"
-
-#: param/loadparm.c:949
-msgid "ldap filter"
-msgstr "ldap filtresi"
-
-#: param/loadparm.c:950
-msgid "ldap root"
-msgstr "ldap kk"
-
-#: param/loadparm.c:951
-msgid "ldap root passwd"
-msgstr "ldap kk ifresi"
-
-#: param/loadparm.c:954
+#: ../param/loadparm.c:1078
msgid "Miscellaneous Options"
msgstr "Dier Se軻nekler"
-#: param/loadparm.c:955
-msgid "add share command"
-msgstr "paylam ekle komutu"
-
-#: param/loadparm.c:956
-msgid "change share command"
-msgstr "paylam deitir komutu"
-
-#: param/loadparm.c:957
-msgid "delete share command"
-msgstr "paylam sil komutu"
-
-#: param/loadparm.c:959
-msgid "config file"
-msgstr "ayar dosyas"
-
-#: param/loadparm.c:960
-msgid "preload"
-msgstr "nykle"
-
-#: param/loadparm.c:961
-msgid "auto services"
-msgstr "otomatik servisler"
-
-#: param/loadparm.c:962
-msgid "lock dir"
-msgstr "kilit dizini"
-
-#: param/loadparm.c:963
-msgid "lock directory"
-msgstr "kilit dizini"
-
-#: param/loadparm.c:965
-msgid "utmp directory"
-msgstr "utmp dizini"
-
-#: param/loadparm.c:966
-msgid "wtmp directory"
-msgstr "wtmp dizini"
-
-#: param/loadparm.c:967
-msgid "utmp"
-msgstr "utmp"
-
-#: param/loadparm.c:970
-msgid "default service"
-msgstr "ntanml servis"
-
-#: param/loadparm.c:971
-msgid "default"
-msgstr "ntanml"
-
-#: param/loadparm.c:972
-msgid "message command"
-msgstr "ileti komutu"
-
-#: param/loadparm.c:973
-msgid "dfree command"
-msgstr "dfree komutu"
-
-#: param/loadparm.c:974
-msgid "remote announce"
-msgstr "uzak bildirim"
-
-#: param/loadparm.c:975
-msgid "remote browse sync"
-msgstr "uzak gzatma senkronizasyonu"
-
-#: param/loadparm.c:976
-msgid "socket address"
-msgstr "soket adresi"
-
-#: param/loadparm.c:977
-msgid "homedir map"
-msgstr "evdizini elemesi"
-
-#: param/loadparm.c:978
-msgid "time offset"
-msgstr "zaman kaydrmas"
-
-#: param/loadparm.c:979
-msgid "NIS homedir"
-msgstr "NIS evdizini"
-
-#: param/loadparm.c:980
-msgid "-valid"
-msgstr "-ge軻rli"
-
-#: param/loadparm.c:982
-msgid "copy"
-msgstr "kopyala"
-
-#: param/loadparm.c:983
-msgid "include"
-msgstr "ekle"
-
-#: param/loadparm.c:984
-msgid "exec"
-msgstr "軋ltr"
-
-#: param/loadparm.c:985
-msgid "preexec"
-msgstr "preexec"
-
-#: param/loadparm.c:987
-msgid "preexec close"
-msgstr "preexec close"
-
-#: param/loadparm.c:988
-msgid "postexec"
-msgstr "postexec"
-
-#: param/loadparm.c:989
-msgid "root preexec"
-msgstr "root preexec"
-
-#: param/loadparm.c:990
-msgid "root preexec close"
-msgstr "root preexec close"
-
-#: param/loadparm.c:991
-msgid "root postexec"
-msgstr "root postexec"
-
-#: param/loadparm.c:992
-msgid "available"
-msgstr "mevcut"
-
-#: param/loadparm.c:993
-msgid "volume"
-msgstr "volume"
-
-#: param/loadparm.c:994
-msgid "fstype"
-msgstr "dosya sistem tipi"
-
-#: param/loadparm.c:995
-msgid "set directory"
-msgstr "dizini belirle"
-
-#: param/loadparm.c:996
-msgid "source environment"
-msgstr "source environment"
-
-#: param/loadparm.c:997
-msgid "wide links"
-msgstr "wide links"
-
-#: param/loadparm.c:998
-msgid "follow symlinks"
-msgstr "sembolik balar izle"
-
-#: param/loadparm.c:999
-msgid "dont descend"
-msgstr "dont descend"
-
-#: param/loadparm.c:1000
-msgid "magic script"
-msgstr "magic script"
-
-#: param/loadparm.c:1001
-msgid "magic output"
-msgstr "magic output"
-
-#: param/loadparm.c:1002
-msgid "delete readonly"
-msgstr "salt okunurlar sil"
-
-#: param/loadparm.c:1003
-msgid "dos filemode"
-msgstr "dos dosya kipi"
-
-#: param/loadparm.c:1004
-msgid "dos filetimes"
-msgstr "dos dosya zamanlar"
-
-#: param/loadparm.c:1005
-msgid "dos filetime resolution"
-msgstr "dos dosya zaman 銹znrl"
-
-#: param/loadparm.c:1007
-msgid "fake directory create times"
-msgstr "dizin oluma zamanlarn taklit et"
-
-#: param/loadparm.c:1008
-msgid "panic action"
-msgstr "panik ilemi"
-
-#: param/loadparm.c:1009
-msgid "hide local users"
-msgstr "yerel kullanclar sakla"
-
-#: param/loadparm.c:1012
-msgid "VFS options"
+#: ../param/loadparm.c:1138
+msgid "VFS module options"
msgstr "VFS Se軻nekleri"
-#: param/loadparm.c:1014
-msgid "vfs object"
-msgstr "vfs nesnesi"
-
-#: param/loadparm.c:1015
-msgid "vfs options"
-msgstr "vfs se軻nekleri"
-
-#: param/loadparm.c:1018
-msgid "msdfs root"
-msgstr "msdfs kk"
-
-#: param/loadparm.c:1019
-msgid "host msdfs"
-msgstr "host msdfs"
-
-#: param/loadparm.c:1021
+#: ../param/loadparm.c:1148
msgid "Winbind options"
msgstr "Winbind se軻nekleri"
-
-#: param/loadparm.c:1023
-msgid "winbind uid"
-msgstr "winbind uid"
-
-#: param/loadparm.c:1024
-msgid "winbind gid"
-msgstr "winbind gid"
-
-#: param/loadparm.c:1025
-msgid "template homedir"
-msgstr "rnek ev dizini"
-
-#: param/loadparm.c:1026
-msgid "template shell"
-msgstr "rnek kabuk"
-
-#: param/loadparm.c:1027
-msgid "winbind separator"
-msgstr "winbind ayrac"
-
-#: param/loadparm.c:1028
-msgid "winbind cache time"
-msgstr "winbind arabellek zaman"
-
-#: param/loadparm.c:1029
-msgid "winbind enum users"
-msgstr "winbind kullanc listele"
-
-#: param/loadparm.c:1030
-msgid "winbind enum groups"
-msgstr "winbind grup listele"
-
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c
index 868f68c0798..9c95cf90856 100644
--- a/source/printing/nt_printing.c
+++ b/source/printing/nt_printing.c
@@ -4572,7 +4572,7 @@ WERROR nt_printing_setsec(const char *printername, SEC_DESC_BUF *secdesc_ctr)
/* Make a deep copy of the security descriptor */
- psd = make_sec_desc(mem_ctx, secdesc_ctr->sec->revision,
+ psd = make_sec_desc(mem_ctx, secdesc_ctr->sec->revision, secdesc_ctr->sec->type,
owner_sid, group_sid,
sacl,
dacl,
@@ -4665,7 +4665,7 @@ static SEC_DESC_BUF *construct_default_printer_sdb(TALLOC_CTX *ctx)
NT5 machine. */
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) != NULL) {
- psd = make_sec_desc(ctx, SEC_DESC_REVISION,
+ psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE,
&owner_sid, NULL,
NULL, psa, &sd_size);
}
@@ -4741,7 +4741,7 @@ BOOL nt_printing_getsec(TALLOC_CTX *ctx, const char *printername, SEC_DESC_BUF *
sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN);
- psd = make_sec_desc(ctx, (*secdesc_ctr)->sec->revision,
+ psd = make_sec_desc(ctx, (*secdesc_ctr)->sec->revision, (*secdesc_ctr)->sec->type,
&owner_sid,
(*secdesc_ctr)->sec->grp_sid,
(*secdesc_ctr)->sec->sacl,
diff --git a/source/python/py_ntsec.c b/source/python/py_ntsec.c
index 3d408e0bda2..5ce5e8fc1be 100644
--- a/source/python/py_ntsec.c
+++ b/source/python/py_ntsec.c
@@ -276,7 +276,7 @@ BOOL py_to_SECDESC(SEC_DESC **sd, PyObject *dict, TALLOC_CTX *mem_ctx)
{
size_t sd_size;
- *sd = make_sec_desc(mem_ctx, revision,
+ *sd = make_sec_desc(mem_ctx, revision, SEC_DESC_SELF_RELATIVE,
got_owner_sid ? &owner_sid : NULL,
got_group_sid ? &group_sid : NULL,
got_sacl ? &sacl : NULL,
diff --git a/source/python/py_spoolss_forms.c b/source/python/py_spoolss_forms.c
index ef9ed94533a..66a6540e074 100644
--- a/source/python/py_spoolss_forms.c
+++ b/source/python/py_spoolss_forms.c
@@ -59,7 +59,7 @@ PyObject *spoolss_hnd_addform(PyObject *self, PyObject *args, PyObject *kw)
PyObject *obj = PyDict_GetItemString(info, "name");
char *form_name = PyString_AsString(obj);
- init_unistr2(&form.name, form_name, strlen(form_name) + 1);
+ init_unistr2(&form.name, form_name, UNI_STR_TERMINATE);
break;
}
default:
diff --git a/source/python/py_spoolss_forms_conv.c b/source/python/py_spoolss_forms_conv.c
index 095a318fd24..ede729cad33 100644
--- a/source/python/py_spoolss_forms_conv.c
+++ b/source/python/py_spoolss_forms_conv.c
@@ -81,7 +81,7 @@ BOOL py_to_FORM(FORM *form, PyObject *dict)
obj = PyDict_GetItemString(dict, "name");
name = PyString_AsString(obj);
- init_unistr2(&form->name, name, strlen(name) + 1);
+ init_unistr2(&form->name, name, UNI_STR_TERMINATE);
result = True;
diff --git a/source/registry/reg_printing.c b/source/registry/reg_printing.c
index 50ac81dcbb2..e50a5f4d4fd 100644
--- a/source/registry/reg_printing.c
+++ b/source/registry/reg_printing.c
@@ -288,34 +288,32 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
info3 = driver_ctr.info_3;
filename = dos_basename( info3->driverpath );
- init_unistr2( &data, filename, strlen(filename)+1 );
+ init_unistr2( &data, filename, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Driver", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
filename = dos_basename( info3->configfile );
- init_unistr2( &data, filename, strlen(filename)+1 );
+ init_unistr2( &data, filename, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Configuration File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
filename = dos_basename( info3->datafile );
- init_unistr2( &data, filename, strlen(filename)+1 );
+ init_unistr2( &data, filename, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Data File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
filename = dos_basename( info3->helpfile );
- init_unistr2( &data, filename, strlen(filename)+1 );
+ init_unistr2( &data, filename, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Help File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info3->defaultdatatype, strlen(info3->defaultdatatype)+1 );
+ init_unistr2( &data, info3->defaultdatatype, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Data Type", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
regval_ctr_addvalue( val, "Version", REG_DWORD, (char*)&info3->cversion, sizeof(info3->cversion) );
- if ( info3->dependentfiles )
- {
+ if ( info3->dependentfiles ) {
/* place the list of dependent files in a single
character buffer, separating each file name by
a NULL */
- for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ )
- {
+ for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ ) {
/* strip the path to only the file's base name */
filename = dos_basename( info3->dependentfiles[i] );
@@ -327,7 +325,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
break;
buffer = buffer2;
- init_unistr2( &data, filename, length+1 );
+ init_unistr2( &data, filename, UNI_STR_TERMINATE);
memcpy( buffer+buffer_size, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
buffer_size += (length + 1)*sizeof(uint16);
@@ -339,8 +337,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
if ( !buffer2 ) {
SAFE_FREE( buffer );
buffer_size = 0;
- }
- else {
+ } else {
buffer = buffer2;
buffer[buffer_size++] = '\0';
buffer[buffer_size++] = '\0';
@@ -573,25 +570,25 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
regval_ctr_addvalue( val, "cjobs", REG_DWORD, (char*)&info2->cjobs, sizeof(info2->cjobs) );
regval_ctr_addvalue( val, "AveragePPM", REG_DWORD, (char*)&info2->averageppm, sizeof(info2->averageppm) );
- init_unistr2( &data, info2->printername, strlen(info2->printername)+1 );
+ init_unistr2( &data, info2->printername, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Name", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->location, strlen(info2->location)+1 );
+ init_unistr2( &data, info2->location, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Location", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->comment, strlen(info2->comment)+1 );
+ init_unistr2( &data, info2->comment, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Comment", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->parameters, strlen(info2->parameters)+1 );
+ init_unistr2( &data, info2->parameters, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Parameters", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->portname, strlen(info2->portname)+1 );
+ init_unistr2( &data, info2->portname, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Port", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->servername, strlen(info2->servername)+1 );
+ init_unistr2( &data, info2->servername, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Server", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->sharename, strlen(info2->sharename)+1 );
+ init_unistr2( &data, info2->sharename, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Share", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->drivername, strlen(info2->drivername)+1 );
+ init_unistr2( &data, info2->drivername, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Driver", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->sepfile, strlen(info2->sepfile)+1 );
+ init_unistr2( &data, info2->sepfile, UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Separator File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, "winprint", strlen("winprint")+1 );
+ init_unistr2( &data, "winprint", UNI_STR_TERMINATE);
regval_ctr_addvalue( val, "Print Processor", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index db873236e46..65115419b47 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -1035,9 +1035,9 @@ NTSTATUS cli_lsa_enum_privsaccount(struct cli_state *cli, TALLOC_CTX *mem_ctx,
}
for (i=0; i<r.count; i++) {
- (*set)[i].luid.low = r.set.set[i].luid.low;
- (*set)[i].luid.high = r.set.set[i].luid.high;
- (*set)[i].attr = r.set.set[i].attr;
+ (*set)[i].luid.low = r.set->set[i].luid.low;
+ (*set)[i].luid.high = r.set->set[i].luid.high;
+ (*set)[i].attr = r.set->set[i].attr;
}
*count=r.count;
diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c
index dedbf017a93..9ce10202dbe 100644
--- a/source/rpc_client/cli_pipe.c
+++ b/source/rpc_client/cli_pipe.c
@@ -29,7 +29,9 @@
extern struct pipe_id_info pipe_names[];
-static void get_auth_type_level(int pipe_auth_flags, int *auth_type, int *auth_level)
+/* convert pipe auth flags into the RPC auth type and level */
+
+void get_auth_type_level(int pipe_auth_flags, int *auth_type, int *auth_level)
{
*auth_type = 0;
*auth_level = 0;
@@ -938,7 +940,6 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
uint32 data_len, send_size;
uint8 flags = 0;
uint32 auth_padding = 0;
- RPC_AUTH_NETSEC_CHK verf;
DATA_BLOB sign_blob;
/*
@@ -1022,14 +1023,10 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
}
else if (cli->pipe_auth_flags & AUTH_PIPE_NETSEC) {
- static const uchar netsec_sig[8] = NETSEC_SIGNATURE;
- static const uchar nullbytes[8] = { 0,0,0,0,0,0,0,0 };
size_t parse_offset_marker;
+ RPC_AUTH_NETSEC_CHK verf;
DEBUG(10,("SCHANNEL seq_num=%d\n", cli->auth_info.seq_num));
- init_rpc_auth_netsec_chk(&verf, netsec_sig, nullbytes,
- nullbytes, nullbytes);
-
netsec_encode(&cli->auth_info,
cli->pipe_auth_flags,
SENDER_IS_INITIATOR,
@@ -1277,8 +1274,10 @@ static BOOL rpc_send_auth_reply(struct cli_state *cli, prs_struct *rdata, uint32
prs_init(&rpc_out, RPC_HEADER_LEN + RPC_HDR_AUTHA_LEN, /* need at least this much */
cli->mem_ctx, MARSHALL);
- create_rpc_bind_resp(cli, rpc_call_id,
- &rpc_out);
+ if (!NT_STATUS_IS_OK(create_rpc_bind_resp(cli, rpc_call_id,
+ &rpc_out))) {
+ return False;
+ }
if ((ret = cli_write(cli, cli->nt_pipe_fnum, 0x8, prs_data_p(&rpc_out),
0, (size_t)prs_offset(&rpc_out))) != (ssize_t)prs_offset(&rpc_out)) {
@@ -1493,9 +1492,7 @@ NTSTATUS cli_nt_establish_netlogon(struct cli_state *cli, int sec_chan,
const uchar trust_password[16])
{
NTSTATUS result;
- /* The 7 here seems to be required to get Win2k not to downgrade us
- to NT4. Actually, anything other than 1ff would seem to do... */
- uint32 neg_flags = 0x000701ff;
+ uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS;
int fnum;
cli_nt_netlogon_netsec_session_close(cli);
@@ -1584,13 +1581,11 @@ NTSTATUS cli_nt_establish_netlogon(struct cli_state *cli, int sec_chan,
}
-NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan,
+NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan, int auth_flags,
const uchar trust_password[16])
{
NTSTATUS result;
- /* The 7 here seems to be required to get Win2k not to downgrade us
- to NT4. Actually, anything other than 1ff would seem to do... */
- uint32 neg_flags = 0x000701ff;
+ uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS;
cli->pipe_auth_flags = 0;
if (lp_client_schannel() == False) {
@@ -1632,7 +1627,7 @@ NTSTATUS cli_nt_setup_netsec(struct cli_state *cli, int sec_chan,
cli->nt_pipe_fnum = 0;
/* doing schannel, not per-user auth */
- cli->pipe_auth_flags = AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN | AUTH_PIPE_SEAL;
+ cli->pipe_auth_flags = auth_flags;
return NT_STATUS_OK;
}
diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c
index 27349b72957..555703cf4d8 100644
--- a/source/rpc_client/cli_srvsvc.c
+++ b/source/rpc_client/cli_srvsvc.c
@@ -138,11 +138,11 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname);
if (s)
- init_unistr2(&info1->info_1_str.uni_netname, s, strlen(s) + 1);
+ init_unistr2(&info1->info_1_str.uni_netname, s, UNI_STR_TERMINATE);
s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark);
if (s)
- init_unistr2(&info1->info_1_str.uni_remark, s, strlen(s) + 1);
+ init_unistr2(&info1->info_1_str.uni_remark, s, UNI_STR_TERMINATE);
}
@@ -166,19 +166,19 @@ WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname);
if (s)
- init_unistr2(&info2->info_2_str.uni_netname, s, strlen(s) + 1);
+ init_unistr2(&info2->info_2_str.uni_netname, s, UNI_STR_TERMINATE);
s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark);
if (s)
- init_unistr2(&info2->info_2_str.uni_remark, s, strlen(s) + 1);
+ init_unistr2(&info2->info_2_str.uni_remark, s, UNI_STR_TERMINATE);
s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path);
if (s)
- init_unistr2(&info2->info_2_str.uni_path, s, strlen(s) + 1);
+ init_unistr2(&info2->info_2_str.uni_path, s, UNI_STR_TERMINATE);
s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd);
if (s)
- init_unistr2(&info2->info_2_str.uni_passwd, s, strlen(s) + 1);
+ init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE);
}
break;
}
@@ -385,11 +385,11 @@ WERROR cli_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_path_name);
if (s)
- init_unistr2(&info3->info_3_str.uni_path_name, s, strlen(s) + 1);
+ init_unistr2(&info3->info_3_str.uni_path_name, s, UNI_STR_TERMINATE);
s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_user_name);
if (s)
- init_unistr2(&info3->info_3_str.uni_user_name, s, strlen(s) + 1);
+ init_unistr2(&info3->info_3_str.uni_user_name, s, UNI_STR_TERMINATE);
}
diff --git a/source/rpc_parse/parse_dfs.c b/source/rpc_parse/parse_dfs.c
index 6f13500359f..0d0ce557b22 100644
--- a/source/rpc_parse/parse_dfs.c
+++ b/source/rpc_parse/parse_dfs.c
@@ -80,9 +80,9 @@ BOOL init_dfs_q_dfs_remove(DFS_Q_DFS_REMOVE *q_d, const char *entrypath,
const char *servername, const char *sharename)
{
DEBUG(5,("init_dfs_q_dfs_remove\n"));
- init_unistr2(&q_d->DfsEntryPath, entrypath, strlen(entrypath)+1);
- init_unistr2(&q_d->ServerName, servername, strlen(servername)+1);
- init_unistr2(&q_d->ShareName, sharename, strlen(sharename)+1);
+ init_unistr2(&q_d->DfsEntryPath, entrypath, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->ServerName, servername, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->ShareName, sharename, UNI_STR_TERMINATE);
q_d->ptr_ServerName = q_d->ptr_ShareName = 1;
return True;
}
@@ -155,11 +155,11 @@ BOOL init_dfs_q_dfs_add(DFS_Q_DFS_ADD *q_d, const char *entrypath,
{
DEBUG(5,("init_dfs_q_dfs_add\n"));
q_d->ptr_DfsEntryPath = q_d->ptr_ServerName = q_d->ptr_ShareName = 1;
- init_unistr2(&q_d->DfsEntryPath, entrypath, strlen(entrypath)+1);
- init_unistr2(&q_d->ServerName, servername, strlen(servername)+1);
- init_unistr2(&q_d->ShareName, sharename, strlen(sharename)+1);
+ init_unistr2(&q_d->DfsEntryPath, entrypath, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->ServerName, servername, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->ShareName, sharename, UNI_STR_TERMINATE);
if(comment != NULL) {
- init_unistr2(&q_d->Comment, comment, strlen(comment)+1);
+ init_unistr2(&q_d->Comment, comment,UNI_STR_TERMINATE);
q_d->ptr_Comment = 1;
} else {
q_d->ptr_Comment = 0;
@@ -237,9 +237,9 @@ BOOL init_dfs_q_dfs_get_info(DFS_Q_DFS_GET_INFO *q_d, const char *entrypath,
uint32 info_level)
{
DEBUG(5,("init_dfs_q2_get_info\n"));
- init_unistr2(&q_d->uni_path, entrypath, strlen(entrypath)+1);
- init_unistr2(&q_d->uni_server, servername, strlen(servername)+1);
- init_unistr2(&q_d->uni_share, sharename, strlen(sharename)+1);
+ init_unistr2(&q_d->uni_path, entrypath, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->uni_server, servername, UNI_STR_TERMINATE);
+ init_unistr2(&q_d->uni_share, sharename, UNI_STR_TERMINATE);
q_d->level = info_level;
q_d->ptr_server = q_d->ptr_share = 1;
return True;
diff --git a/source/rpc_parse/parse_ds.c b/source/rpc_parse/parse_ds.c
index f954806036b..26dcdb34b8b 100644
--- a/source/rpc_parse/parse_ds.c
+++ b/source/rpc_parse/parse_ds.c
@@ -138,8 +138,6 @@ BOOL ds_io_r_getprimdominfo( const char *desc, prs_struct *ps, int depth, DS_R_G
BOOL init_q_ds_enum_domain_trusts( DS_Q_ENUM_DOM_TRUSTS *q, const char *server,
uint32 flags )
{
- int len;
-
q->flags = flags;
if ( server && *server )
@@ -147,9 +145,7 @@ BOOL init_q_ds_enum_domain_trusts( DS_Q_ENUM_DOM_TRUSTS *q, const char *server,
else
q->server_ptr = 0;
- len = q->server_ptr ? strlen(server)+1 : 0;
-
- init_unistr2( &q->server, server, len );
+ init_unistr2( &q->server, server, UNI_STR_TERMINATE);
return True;
}
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index 07b0da7e9c2..f960345fe74 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -36,14 +36,9 @@ static BOOL lsa_io_trans_names(const char *desc, LSA_TRANS_NAME_ENUM *trn, prs_s
void init_lsa_trans_name(LSA_TRANS_NAME *trn, UNISTR2 *uni_name,
uint16 sid_name_use, const char *name, uint32 idx)
{
- int len_name = strlen(name);
-
- if(len_name == 0)
- len_name = 1;
-
trn->sid_name_use = sid_name_use;
- init_uni_hdr(&trn->hdr_name, len_name);
- init_unistr2(uni_name, name, len_name);
+ init_unistr2(uni_name, name, UNI_FLAGS_NONE);
+ init_uni_hdr(&trn->hdr_name, uni_name);
trn->domain_idx = idx;
}
@@ -346,8 +341,7 @@ void init_q_open_pol2(LSA_Q_OPEN_POL2 *r_q, const char *server_name,
r_q->des_access = desired_access;
- init_unistr2(&r_q->uni_server_name, server_name,
- strlen(server_name) + 1);
+ init_unistr2(&r_q->uni_server_name, server_name, UNI_STR_TERMINATE);
init_lsa_obj_attr(&r_q->attr, attributes, qos);
}
@@ -566,10 +560,10 @@ void init_r_enum_trust_dom(TALLOC_CTX *ctx, LSA_R_ENUM_TRUST_DOM *r_e, uint32 en
/* don't know what actually is this for */
r_e->ptr_enum_domains = 1;
- init_uni_hdr2(&r_e->hdr_domain_name[i], strlen_w((td[i])->name));
init_dom_sid2(&r_e->domain_sid[i], &(td[i])->sid);
init_unistr2_w(ctx, &r_e->uni_domain_name[i], (td[i])->name);
+ init_uni_hdr2(&r_e->hdr_domain_name[i], &r_e->uni_domain_name[i]);
};
}
@@ -1087,11 +1081,8 @@ 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]);
-
- 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], names[i], UNI_FLAGS_NONE);
+ init_uni_hdr(&q_l->hdr_name[i], &q_l->uni_name[i]);
}
}
@@ -1436,15 +1427,10 @@ BOOL lsa_io_r_enum_privs(const char *desc, LSA_R_ENUM_PRIVS *r_q, prs_struct *ps
void init_lsa_priv_get_dispname(LSA_Q_PRIV_GET_DISPNAME *trn, POLICY_HND *hnd, const char *name, uint16 lang_id, uint16 lang_id_sys)
{
- int len_name = strlen(name);
-
- if(len_name == 0)
- len_name = 1;
-
memcpy(&trn->pol, hnd, sizeof(trn->pol));
- init_uni_hdr(&trn->hdr_name, len_name);
- init_unistr2(&trn->name, name, len_name);
+ init_unistr2(&trn->name, name, UNI_FLAGS_NONE);
+ init_uni_hdr(&trn->hdr_name, &trn->name);
trn->lang_id = lang_id;
trn->lang_id_sys = lang_id_sys;
}
@@ -1823,14 +1809,22 @@ static BOOL lsa_io_privilege_set(const char *desc, PRIVILEGE_SET *r_c, prs_struc
return True;
}
-void init_lsa_r_enum_privsaccount(LSA_R_ENUMPRIVSACCOUNT *r_u, LUID_ATTR *set, uint32 count, uint32 control)
+NTSTATUS init_lsa_r_enum_privsaccount(TALLOC_CTX *mem_ctx, LSA_R_ENUMPRIVSACCOUNT *r_u, LUID_ATTR *set, uint32 count, uint32 control)
{
- r_u->ptr=1;
- r_u->count=count;
- r_u->set.set=set;
- r_u->set.count=count;
- r_u->set.control=control;
- DEBUG(10,("init_lsa_r_enum_privsaccount: %d %d privileges\n", r_u->count, r_u->set.count));
+ NTSTATUS ret = NT_STATUS_OK;
+
+ r_u->ptr = 1;
+ r_u->count = count;
+
+ if (!NT_STATUS_IS_OK(ret = init_priv_with_ctx(mem_ctx, &(r_u->set))))
+ return ret;
+
+ if (!NT_STATUS_IS_OK(ret = dupalloc_luid_attr(r_u->set->mem_ctx, &(r_u->set->set), set)))
+ return ret;
+
+ DEBUG(10,("init_lsa_r_enum_privsaccount: %d %d privileges\n", r_u->count, r_u->set->count));
+
+ return ret;
}
/*******************************************************************
@@ -1854,13 +1848,16 @@ BOOL lsa_io_r_enum_privsaccount(const char *desc, LSA_R_ENUMPRIVSACCOUNT *r_c, p
/* malloc memory if unmarshalling here */
- if (UNMARSHALLING(ps) && r_c->count!=0) {
- if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count)))
+ if (UNMARSHALLING(ps) && r_c->count != 0) {
+ if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
+ return False;
+
+ if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count)))
return False;
}
- if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth))
+ if(!lsa_io_privilege_set(desc, r_c->set, ps, depth))
return False;
}
@@ -1954,14 +1951,9 @@ BOOL lsa_io_r_setsystemaccount(const char *desc, LSA_R_SETSYSTEMACCOUNT *r_c, p
void init_lsa_q_lookupprivvalue(LSA_Q_LOOKUPPRIVVALUE *trn, POLICY_HND *hnd, const char *name)
{
- int len_name = strlen(name);
memcpy(&trn->pol, hnd, sizeof(trn->pol));
-
- if(len_name == 0)
- len_name = 1;
-
- init_uni_hdr(&trn->hdr_right, len_name);
- init_unistr2(&trn->uni2_right, name, len_name);
+ init_unistr2(&trn->uni2_right, name, UNI_FLAGS_NONE);
+ init_uni_hdr(&trn->hdr_right, &trn->uni2_right);
}
/*******************************************************************
@@ -2027,11 +2019,14 @@ BOOL lsa_io_q_addprivs(const char *desc, LSA_Q_ADDPRIVS *r_c, prs_struct *ps, in
return False;
if (UNMARSHALLING(ps) && r_c->count!=0) {
- if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count)))
+ if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
+ return False;
+
+ if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count)))
return False;
}
- if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth))
+ if(!lsa_io_privilege_set(desc, r_c->set, ps, depth))
return False;
return True;
@@ -2086,11 +2081,14 @@ BOOL lsa_io_q_removeprivs(const char *desc, LSA_Q_REMOVEPRIVS *r_c, prs_struct *
return False;
if (UNMARSHALLING(ps) && r_c->count!=0) {
- if (!(r_c->set.set = (LUID_ATTR *)prs_alloc_mem(ps,sizeof(LUID_ATTR) * r_c->count)))
+ if (!NT_STATUS_IS_OK(init_priv_with_ctx(ps->mem_ctx, &(r_c->set))))
+ return False;
+
+ if (!(r_c->set->set = (LUID_ATTR *)prs_alloc_mem(ps, sizeof(LUID_ATTR) * r_c->count)))
return False;
}
- if(!lsa_io_privilege_set(desc, &r_c->set, ps, depth))
+ if(!lsa_io_privilege_set(desc, r_c->set, ps, depth))
return False;
}
diff --git a/source/rpc_parse/parse_misc.c b/source/rpc_parse/parse_misc.c
index 17a96fff80c..e1825355320 100644
--- a/source/rpc_parse/parse_misc.c
+++ b/source/rpc_parse/parse_misc.c
@@ -361,11 +361,11 @@ BOOL smb_io_strhdr(const char *desc, STRHDR *hdr, prs_struct *ps, int depth)
Inits a UNIHDR structure.
********************************************************************/
-void init_uni_hdr(UNIHDR *hdr, int len)
+void init_uni_hdr(UNIHDR *hdr, UNISTR2 *str2)
{
- hdr->uni_str_len = 2 * len;
- hdr->uni_max_len = 2 * len;
- hdr->buffer = len != 0 ? 1 : 0;
+ hdr->uni_str_len = 2 * (str2->uni_str_len);
+ hdr->uni_max_len = 2 * (str2->uni_max_len);
+ hdr->buffer = (str2->uni_str_len != 0) ? 1 : 0;
}
/*******************************************************************
@@ -482,10 +482,10 @@ BOOL smb_io_hdrbuf(const char *desc, BUFHDR *hdr, prs_struct *ps, int depth)
creates a UNIHDR2 structure.
********************************************************************/
-void init_uni_hdr2(UNIHDR2 *hdr, int len)
+void init_uni_hdr2(UNIHDR2 *hdr, UNISTR2 *str2)
{
- init_uni_hdr(&hdr->unihdr, len);
- hdr->buffer = (len > 0) ? 1 : 0;
+ init_uni_hdr(&hdr->unihdr, str2);
+ hdr->buffer = (str2->uni_str_len > 0) ? 1 : 0;
}
/*******************************************************************
@@ -703,7 +703,7 @@ void init_buffer2(BUFFER2 *str, const uint8 *buf, size_t len)
/* max buffer size (allocated size) */
str->buf_max_len = len;
- str->undoc = 0;
+ str->offset = 0;
str->buf_len = buf != NULL ? len : 0;
if (buf != NULL) {
@@ -737,7 +737,7 @@ BOOL smb_io_buffer2(const char *desc, BUFFER2 *buf2, uint32 buffer, prs_struct *
if(!prs_uint32("uni_max_len", ps, depth, &buf2->buf_max_len))
return False;
- if(!prs_uint32("undoc ", ps, depth, &buf2->undoc))
+ if(!prs_uint32("offset ", ps, depth, &buf2->offset))
return False;
if(!prs_uint32("buf_len ", ps, depth, &buf2->buf_len))
return False;
@@ -765,14 +765,11 @@ creates a UNISTR2 structure: sets up the buffer, too
void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf)
{
if (buf != NULL) {
-
*ptr = 1;
- init_unistr2(str, buf, strlen(buf)+1);
-
+ init_unistr2(str, buf, UNI_STR_TERMINATE);
} else {
-
*ptr = 0;
- init_unistr2(str, "", 0);
+ init_unistr2(str, NULL, UNI_FLAGS_NONE);
}
}
@@ -783,10 +780,8 @@ void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf)
void copy_unistr2(UNISTR2 *str, const UNISTR2 *from)
{
-
- /* set up string lengths. add one if string is not null-terminated */
str->uni_max_len = from->uni_max_len;
- str->undoc = from->undoc;
+ str->offset = from->offset;
str->uni_str_len = from->uni_str_len;
if (from->buffer == NULL)
@@ -803,8 +798,7 @@ void copy_unistr2(UNISTR2 *str, const UNISTR2 *from)
len *= sizeof(uint16);
str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
- if ((str->buffer == NULL) && (len > 0 ))
- {
+ if ((str->buffer == NULL) && (len > 0 )) {
smb_panic("copy_unistr2: talloc fail\n");
return;
}
@@ -824,7 +818,7 @@ void init_string2(STRING2 *str, const char *buf, int max_len, int str_len)
/* set up string lengths. */
str->str_max_len = max_len;
- str->undoc = 0;
+ str->offset = 0;
str->str_str_len = str_len;
/* store the string */
@@ -835,7 +829,7 @@ void init_string2(STRING2 *str, const char *buf, int max_len, int str_len)
if (str->buffer == NULL)
smb_panic("init_string2: malloc fail\n");
memcpy(str->buffer, buf, str_len);
- }
+ }
}
/*******************************************************************
@@ -860,7 +854,7 @@ BOOL smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct *
if(!prs_uint32("str_max_len", ps, depth, &str2->str_max_len))
return False;
- if(!prs_uint32("undoc ", ps, depth, &str2->undoc))
+ if(!prs_uint32("offset ", ps, depth, &str2->offset))
return False;
if(!prs_uint32("str_str_len", ps, depth, &str2->str_str_len))
return False;
@@ -885,34 +879,43 @@ BOOL smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct *
Inits a UNISTR2 structure.
********************************************************************/
-void init_unistr2(UNISTR2 *str, const char *buf, size_t len)
+void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags)
{
- ZERO_STRUCTP(str);
+ size_t len = 0;
+ uint32 num_chars = 0;
- /* set up string lengths. */
- str->uni_max_len = (uint32)len;
- str->undoc = 0;
- str->uni_str_len = (uint32)len;
+ if (buf) {
+ /* We always null terminate the copy. */
+ len = strlen(buf) + 1;
+ }
if (len < MAX_UNISTRLEN)
len = MAX_UNISTRLEN;
len *= sizeof(uint16);
str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len);
- if ((str->buffer == NULL) && (len > 0))
- {
+ if ((str->buffer == NULL) && (len > 0)) {
smb_panic("init_unistr2: malloc fail\n");
return;
}
/*
- * don't move this test above ! The UNISTR2 must be initialized !!!
+ * The UNISTR2 must be initialized !!!
* jfm, 7/7/2001.
*/
- if (buf==NULL)
- return;
+ if (buf) {
+ rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE);
+ num_chars = strlen_w(str->buffer);
+ if (flags == STR_TERMINATE || flags == UNI_MAXLEN_TERMINATE) {
+ num_chars++;
+ }
+ }
- rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE);
+ str->uni_max_len = num_chars;
+ str->offset = 0;
+ str->uni_str_len = num_chars;
+ if (num_chars && (flags == UNI_MAXLEN_TERMINATE))
+ str->uni_max_len++;
}
/**
@@ -932,7 +935,7 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
/* set up string lengths. */
str->uni_max_len = len;
- str->undoc = 0;
+ str->offset = 0;
str->uni_str_len = len;
if (max_len < MAX_UNISTRLEN)
@@ -941,8 +944,7 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
alloc_len = (max_len + 1) * sizeof(uint16);
str->buffer = (uint16 *)talloc_zero(ctx, alloc_len);
- if ((str->buffer == NULL) && (alloc_len > 0))
- {
+ if ((str->buffer == NULL) && (alloc_len > 0)) {
smb_panic("init_unistr2_w: malloc fail\n");
return;
}
@@ -963,9 +965,9 @@ void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
/*******************************************************************
Inits a UNISTR2 structure from a UNISTR
********************************************************************/
-void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from)
-{
+void init_unistr2_from_unistr(UNISTR2 *to, const UNISTR *from)
+{
uint32 i;
/* the destination UNISTR2 should never be NULL.
@@ -987,7 +989,7 @@ void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from)
/* set up string lengths; uni_max_len is set to i+1
because we need to account for the final NULL termination */
to->uni_max_len = i;
- to->undoc = 0;
+ to->offset = 0;
to->uni_str_len = i;
/* allocate the space and copy the string buffer */
@@ -995,11 +997,9 @@ void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from)
if (to->buffer == NULL)
smb_panic("init_unistr2_from_unistr: malloc fail\n");
memcpy(to->buffer, from->buffer, to->uni_max_len*sizeof(uint16));
-
return;
}
-
/*******************************************************************
Reads or writes a UNISTR2 structure.
XXXX NOTE: UNISTR2 structures need NOT be null-terminated.
@@ -1022,7 +1022,7 @@ BOOL smb_io_unistr2(const char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct *
if(!prs_uint32("uni_max_len", ps, depth, &uni2->uni_max_len))
return False;
- if(!prs_uint32("undoc ", ps, depth, &uni2->undoc))
+ if(!prs_uint32("offset ", ps, depth, &uni2->offset))
return False;
if(!prs_uint32("uni_str_len", ps, depth, &uni2->uni_str_len))
return False;
@@ -1064,7 +1064,7 @@ BOOL init_unistr2_array(UNISTR2_ARRAY *array,
}
for (i=0;i<count;i++) {
- init_unistr2(&array->strings[i].string, strings[i], strlen(strings[i]));
+ init_unistr2(&array->strings[i].string, strings[i], UNI_FLAGS_NONE);
array->strings[i].size = array->strings[i].string.uni_max_len*2;
array->strings[i].length = array->strings[i].size;
array->strings[i].ref_id = 1;
@@ -1223,14 +1223,14 @@ static void init_clnt_srv(DOM_CLNT_SRV *logcln, const char *logon_srv, const cha
if (logon_srv != NULL) {
logcln->undoc_buffer = 1;
- init_unistr2(&logcln->uni_logon_srv, logon_srv, strlen(logon_srv)+1);
+ init_unistr2(&logcln->uni_logon_srv, logon_srv, UNI_STR_TERMINATE);
} else {
logcln->undoc_buffer = 0;
}
if (comp_name != NULL) {
logcln->undoc_buffer2 = 1;
- init_unistr2(&logcln->uni_comp_name, comp_name, strlen(comp_name)+1);
+ init_unistr2(&logcln->uni_comp_name, comp_name, UNI_STR_TERMINATE);
} else {
logcln->undoc_buffer2 = 0;
}
@@ -1284,12 +1284,12 @@ void init_log_info(DOM_LOG_INFO *loginfo, const char *logon_srv, const char *acc
loginfo->undoc_buffer = 1;
- init_unistr2(&loginfo->uni_logon_srv, logon_srv, strlen(logon_srv)+1);
- init_unistr2(&loginfo->uni_acct_name, acct_name, strlen(acct_name)+1);
+ init_unistr2(&loginfo->uni_logon_srv, logon_srv, UNI_STR_TERMINATE);
+ init_unistr2(&loginfo->uni_acct_name, acct_name, UNI_STR_TERMINATE);
loginfo->sec_chan = sec_chan;
- init_unistr2(&loginfo->uni_comp_name, comp_name, strlen(comp_name)+1);
+ init_unistr2(&loginfo->uni_comp_name, comp_name, UNI_STR_TERMINATE);
}
/*******************************************************************
diff --git a/source/rpc_parse/parse_net.c b/source/rpc_parse/parse_net.c
index dd319df5a0f..3b096e088ab 100644
--- a/source/rpc_parse/parse_net.c
+++ b/source/rpc_parse/parse_net.c
@@ -136,16 +136,15 @@ static BOOL net_io_netinfo_1(const char *desc, NETLOGON_INFO_1 *info, prs_struct
static void init_netinfo_2(NETLOGON_INFO_2 *info, uint32 flags, uint32 pdc_status,
uint32 tc_status, const char *trusted_dc_name)
{
- int len_dc_name = strlen(trusted_dc_name);
info->flags = flags;
info->pdc_status = pdc_status;
info->ptr_trusted_dc_name = 1;
info->tc_status = tc_status;
if (trusted_dc_name != NULL)
- init_unistr2(&info->uni_trusted_dc_name, trusted_dc_name, len_dc_name+1);
+ init_unistr2(&info->uni_trusted_dc_name, trusted_dc_name, UNI_STR_TERMINATE);
else
- init_unistr2(&info->uni_trusted_dc_name, "", 1);
+ init_unistr2(&info->uni_trusted_dc_name, "", UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -230,7 +229,7 @@ void init_net_q_logon_ctrl2(NET_Q_LOGON_CTRL2 *q_l, const char *srv_name,
q_l->query_level = query_level;
q_l->switch_value = 0x01;
- init_unistr2(&q_l->uni_server_name, srv_name, strlen(srv_name) + 1);
+ init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -360,7 +359,7 @@ void init_net_q_logon_ctrl(NET_Q_LOGON_CTRL *q_l, const char *srv_name,
q_l->function_code = 0x01; /* ??? */
q_l->query_level = query_level;
- init_unistr2(&q_l->uni_server_name, srv_name, strlen(srv_name) + 1);
+ init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -447,9 +446,9 @@ void init_r_trust_dom(NET_R_TRUST_DOM_LIST *r_t,
fstring domain_name;
fstrcpy(domain_name, dom_name);
strupper_m(domain_name);
- init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, strlen(domain_name)+1);
+ init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, UNI_STR_TERMINATE);
/* the use of UNISTR2 here is non-standard. */
- r_t->uni_trust_dom_name[i].undoc = 0x1;
+ r_t->uni_trust_dom_name[i].offset = 0x1;
}
r_t->status = NT_STATUS_OK;
@@ -539,8 +538,8 @@ void init_q_req_chal(NET_Q_REQ_CHAL *q_c,
q_c->undoc_buffer = 1; /* don't know what this buffer is */
- init_unistr2(&q_c->uni_logon_srv, logon_srv , strlen(logon_srv )+1);
- init_unistr2(&q_c->uni_logon_clnt, logon_clnt, strlen(logon_clnt)+1);
+ init_unistr2(&q_c->uni_logon_srv, logon_srv , UNI_STR_TERMINATE);
+ init_unistr2(&q_c->uni_logon_clnt, logon_clnt, UNI_STR_TERMINATE);
memcpy(q_c->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data));
@@ -910,10 +909,6 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
const char *sess_key,
unsigned char lm_cypher[16], unsigned char nt_cypher[16])
{
- int len_domain_name = strlen(domain_name);
- int len_user_name = strlen(user_name );
- int len_wksta_name = strlen(wksta_name );
-
unsigned char lm_owf[16];
unsigned char nt_owf[16];
@@ -921,13 +916,9 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
id->ptr_id_info1 = 1;
- init_uni_hdr(&id->hdr_domain_name, len_domain_name);
-
id->param_ctrl = param_ctrl;
init_logon_id(&id->logon_id, log_id_low, log_id_high);
- init_uni_hdr(&id->hdr_user_name, len_user_name);
- init_uni_hdr(&id->hdr_wksta_name, len_wksta_name);
if (lm_cypher && nt_cypher) {
unsigned char key[16];
@@ -962,9 +953,12 @@ void init_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
init_owf_info(&id->lm_owf, lm_cypher);
init_owf_info(&id->nt_owf, nt_cypher);
- init_unistr2(&id->uni_domain_name, domain_name, len_domain_name);
- init_unistr2(&id->uni_user_name, user_name, len_user_name);
- init_unistr2(&id->uni_wksta_name, wksta_name, len_wksta_name);
+ init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name);
+ init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_user_name, &id->uni_user_name);
+ init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name);
}
/*******************************************************************
@@ -1041,9 +1035,6 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name,
const uchar * lm_chal_resp, size_t lm_chal_resp_len,
const uchar * nt_chal_resp, size_t nt_chal_resp_len)
{
- size_t len_domain_name = strlen(domain_name);
- size_t len_user_name = strlen(user_name );
- size_t len_wksta_name = strlen(wksta_name );
unsigned char lm_owf[24];
unsigned char nt_owf[128];
@@ -1051,14 +1042,10 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name,
id->ptr_id_info2 = 1;
- init_uni_hdr(&id->hdr_domain_name, len_domain_name);
id->param_ctrl = param_ctrl;
init_logon_id(&id->logon_id, log_id_low, log_id_high);
- init_uni_hdr(&id->hdr_user_name, len_user_name);
- init_uni_hdr(&id->hdr_wksta_name, len_wksta_name);
-
if (nt_chal_resp) {
/* oops. can only send what-ever-it-is direct */
memcpy(nt_owf, nt_chal_resp, MIN(sizeof(nt_owf), nt_chal_resp_len));
@@ -1074,9 +1061,12 @@ void init_id_info2(NET_ID_INFO_2 * id, const char *domain_name,
init_str_hdr(&id->hdr_nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len, (nt_chal_resp != NULL) ? 1 : 0);
init_str_hdr(&id->hdr_lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len, (lm_chal_resp != NULL) ? 1 : 0);
- init_unistr2(&id->uni_domain_name, domain_name, len_domain_name);
- init_unistr2(&id->uni_user_name, user_name, len_user_name);
- init_unistr2(&id->uni_wksta_name, wksta_name, len_wksta_name);
+ init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name);
+ init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_user_name, &id->uni_user_name);
+ init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name);
init_string2(&id->nt_chal_resp, (const char *)nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len);
init_string2(&id->lm_chal_resp, (const char *)lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len);
@@ -1288,26 +1278,10 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
pass_last_set_time, pass_can_change_time,
pass_must_change_time;
- int len_user_name, len_full_name, len_home_dir,
- len_dir_drive, len_logon_script, len_profile_path;
-
- int len_logon_srv = strlen(logon_srv);
- int len_logon_dom = strlen(logon_dom);
-
- len_user_name = strlen(user_name );
- len_full_name = strlen(full_name );
- len_home_dir = strlen(home_dir );
- len_dir_drive = strlen(dir_drive );
- len_logon_script = strlen(logon_script);
- len_profile_path = strlen(profile_path);
-
-
ZERO_STRUCTP(usr);
usr->ptr_user_info = 1; /* yes, we're bothering to put USER_INFO data here */
-
-
/* Create NTTIME structs */
unix_to_nt_time (&logon_time, unix_logon_time);
unix_to_nt_time (&logoff_time, unix_logoff_time);
@@ -1323,13 +1297,6 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
usr->pass_can_change_time = pass_can_change_time;
usr->pass_must_change_time = pass_must_change_time;
- init_uni_hdr(&usr->hdr_user_name, len_user_name);
- init_uni_hdr(&usr->hdr_full_name, len_full_name);
- init_uni_hdr(&usr->hdr_logon_script, len_logon_script);
- init_uni_hdr(&usr->hdr_profile_path, len_profile_path);
- init_uni_hdr(&usr->hdr_home_dir, len_home_dir);
- init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive);
-
usr->logon_count = logon_count;
usr->bad_pw_count = bad_pw_count;
@@ -1345,9 +1312,6 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
else
memset((char *)usr->user_sess_key, '\0', sizeof(usr->user_sess_key));
- init_uni_hdr(&usr->hdr_logon_srv, len_logon_srv);
- init_uni_hdr(&usr->hdr_logon_dom, len_logon_dom);
-
usr->buffer_dom_id = dom_sid ? 1 : 0; /* yes, we're bothering to put a domain SID in */
memset((char *)usr->padding, '\0', sizeof(usr->padding));
@@ -1357,12 +1321,18 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
usr->num_other_sids = num_other_sids;
usr->buffer_other_sids = (num_other_sids != 0) ? 1 : 0;
- 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_logon_script, logon_script, len_logon_script);
- init_unistr2(&usr->uni_profile_path, profile_path, len_profile_path);
- 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_user_name, user_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
+ init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
+ init_unistr2(&usr->uni_logon_script, logon_script, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
+ init_unistr2(&usr->uni_profile_path, profile_path, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
+ init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
+ init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
usr->num_groups2 = num_groups;
@@ -1373,8 +1343,10 @@ void init_net_user_info3(TALLOC_CTX *ctx, NET_USER_INFO_3 *usr,
for (i = 0; i < num_groups; i++)
usr->gids[i] = gids[i];
- init_unistr2(&usr->uni_logon_srv, logon_srv, len_logon_srv);
- init_unistr2(&usr->uni_logon_dom, logon_dom, len_logon_dom);
+ init_unistr2(&usr->uni_logon_srv, logon_srv, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_logon_srv, &usr->uni_logon_srv);
+ init_unistr2(&usr->uni_logon_dom, logon_dom, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_logon_dom, &usr->uni_logon_dom);
init_dom_sid2(&usr->dom_sid, dom_sid);
/* "other" sids are set up above */
@@ -1670,8 +1642,8 @@ BOOL init_net_q_sam_sync(NET_Q_SAM_SYNC * q_s, const char *srv_name,
{
DEBUG(5, ("init_q_sam_sync\n"));
- init_unistr2(&q_s->uni_srv_name, srv_name, strlen(srv_name) + 1);
- init_unistr2(&q_s->uni_cli_name, cli_name, strlen(cli_name) + 1);
+ init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE);
+ init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE);
if (cli_creds)
memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds));
@@ -2858,8 +2830,8 @@ BOOL init_net_q_sam_deltas(NET_Q_SAM_DELTAS *q_s, const char *srv_name,
{
DEBUG(5, ("init_net_q_sam_deltas\n"));
- init_unistr2(&q_s->uni_srv_name, srv_name, strlen(srv_name) + 1);
- init_unistr2(&q_s->uni_cli_name, cli_name, strlen(cli_name) + 1);
+ init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE);
+ init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE);
memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds));
memset(&q_s->ret_creds, 0, sizeof(q_s->ret_creds));
diff --git a/source/rpc_parse/parse_prs.c b/source/rpc_parse/parse_prs.c
index 81a95730778..b30c41c0903 100644
--- a/source/rpc_parse/parse_prs.c
+++ b/source/rpc_parse/parse_prs.c
@@ -3,7 +3,8 @@
Samba memory buffer functions
Copyright (C) Andrew Tridgell 1992-1997
Copyright (C) Luke Kenneth Casson Leighton 1996-1997
- Copyright (C) Jeremy Allison 1999.
+ Copyright (C) Jeremy Allison 1999
+ Copyright (C) Andrew Bartlett 2003.
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
@@ -1337,47 +1338,6 @@ BOOL prs_hash1(prs_struct *ps, uint32 offset, uint8 sess_key[16], int len)
return True;
}
-static void netsechash(uchar * key, uchar * data, int data_len)
-{
- uchar hash[256];
- uchar index_i = 0;
- uchar index_j = 0;
- uchar j = 0;
- int ind;
-
- for (ind = 0; ind < 256; ind++)
- {
- hash[ind] = (uchar) ind;
- }
-
- for (ind = 0; ind < 256; ind++)
- {
- uchar tc;
-
- j += (hash[ind] + key[ind % 16]);
-
- tc = hash[ind];
- hash[ind] = hash[j];
- hash[j] = tc;
- }
-
- for (ind = 0; ind < data_len; ind++)
- {
- uchar tc;
- uchar t;
-
- index_i++;
- index_j += hash[index_i];
-
- tc = hash[index_i];
- hash[index_i] = hash[index_j];
- hash[index_j] = tc;
-
- t = hash[index_i] + hash[index_j];
- data[ind] ^= hash[t];
- }
-}
-
/*******************************************************************
Create a digest over the entire packet (including the data), and
@@ -1400,7 +1360,7 @@ static void netsec_digest(struct netsec_auth_struct *a,
MD5Update(&ctx3, zeros, sizeof(zeros));
MD5Update(&ctx3, verf->sig, sizeof(verf->sig));
if (auth_flags & AUTH_PIPE_SEAL) {
- MD5Update(&ctx3, verf->data8, sizeof(verf->data8));
+ MD5Update(&ctx3, verf->confounder, sizeof(verf->confounder));
}
MD5Update(&ctx3, (const unsigned char *)data, data_len);
MD5Final(whole_packet_digest, &ctx3);
@@ -1456,10 +1416,29 @@ static void netsec_deal_with_seq_num(struct netsec_auth_struct *a,
dump_data_pw("sequence_key:\n", sequence_key, sizeof(sequence_key));
dump_data_pw("seq_num (before):\n", verf->seq_num, sizeof(verf->seq_num));
- netsechash(sequence_key, verf->seq_num, 8);
+ SamOEMhash(verf->seq_num, sequence_key, 8);
dump_data_pw("seq_num (after):\n", verf->seq_num, sizeof(verf->seq_num));
}
+/*******************************************************************
+creates an RPC_AUTH_NETSEC_CHK structure.
+********************************************************************/
+static BOOL init_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk,
+ const uchar sig[8],
+ const uchar packet_digest[8],
+ const uchar seq_num[8], const uchar confounder[8])
+{
+ if (chk == NULL)
+ return False;
+
+ memcpy(chk->sig, sig, sizeof(chk->sig));
+ memcpy(chk->packet_digest, packet_digest, sizeof(chk->packet_digest));
+ memcpy(chk->seq_num, seq_num, sizeof(chk->seq_num));
+ memcpy(chk->confounder, confounder, sizeof(chk->confounder));
+
+ return True;
+}
+
/*******************************************************************
Encode a blob of data using the netsec (schannel) alogrithm, also produceing
@@ -1469,26 +1448,47 @@ static void netsec_deal_with_seq_num(struct netsec_auth_struct *a,
********************************************************************/
void netsec_encode(struct netsec_auth_struct *a, int auth_flags,
enum netsec_direction direction,
- RPC_AUTH_NETSEC_CHK * verf, char *data, size_t data_len)
+ RPC_AUTH_NETSEC_CHK * verf,
+ char *data, size_t data_len)
{
uchar digest_final[16];
+ uchar confounder[8];
+ uchar seq_num[8];
+ static const uchar nullbytes[8];
+
+ static const uchar netsec_seal_sig[8] = NETSEC_SEAL_SIGNATURE;
+ static const uchar netsec_sign_sig[8] = NETSEC_SIGN_SIGNATURE;
+ const uchar *netsec_sig;
DEBUG(10,("SCHANNEL: netsec_encode seq_num=%d data_len=%lu\n", a->seq_num, (unsigned long)data_len));
+
+ if (auth_flags & AUTH_PIPE_SEAL) {
+ netsec_sig = netsec_seal_sig;
+ } else if (auth_flags & AUTH_PIPE_SIGN) {
+ netsec_sig = netsec_sign_sig;
+ }
+
+ /* fill the 'confounder' with random data */
+ generate_random_buffer(confounder, sizeof(confounder), False);
+
dump_data_pw("a->sess_key:\n", a->sess_key, sizeof(a->sess_key));
- RSIVAL(verf->seq_num, 0, a->seq_num);
+ RSIVAL(seq_num, 0, a->seq_num);
switch (direction) {
case SENDER_IS_INITIATOR:
- SIVAL(verf->seq_num, 4, 0x80);
+ SIVAL(seq_num, 4, 0x80);
break;
case SENDER_IS_ACCEPTOR:
- SIVAL(verf->seq_num, 4, 0x0);
+ SIVAL(seq_num, 4, 0x0);
break;
}
- dump_data_pw("verf->seq_num:\n", verf->seq_num, sizeof(verf->seq_num));
+ dump_data_pw("verf->seq_num:\n", seq_num, sizeof(verf->seq_num));
+ init_rpc_auth_netsec_chk(verf, netsec_sig, nullbytes,
+ seq_num, confounder);
+
/* produce a digest of the packet to prove it's legit (before we seal it) */
netsec_digest(a, auth_flags, verf, data, data_len, digest_final);
memcpy(verf->packet_digest, digest_final, sizeof(verf->packet_digest));
@@ -1500,14 +1500,14 @@ void netsec_encode(struct netsec_auth_struct *a, int auth_flags,
netsec_get_sealing_key(a, verf, sealing_key);
/* encode the verification data */
- dump_data_pw("verf->data8:\n", verf->data8, sizeof(verf->data8));
- netsechash(sealing_key, verf->data8, 8);
+ dump_data_pw("verf->confounder:\n", verf->confounder, sizeof(verf->confounder));
+ SamOEMhash(verf->confounder, sealing_key, 8);
- dump_data_pw("verf->data8_enc:\n", verf->data8, sizeof(verf->data8));
+ dump_data_pw("verf->confounder_enc:\n", verf->confounder, sizeof(verf->confounder));
/* encode the packet payload */
dump_data_pw("data:\n", (const unsigned char *)data, data_len);
- netsechash(sealing_key, (unsigned char *)data, data_len);
+ SamOEMhash((unsigned char *)data, sealing_key, data_len);
dump_data_pw("data_enc:\n", (const unsigned char *)data, data_len);
}
@@ -1531,8 +1531,21 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags,
{
uchar digest_final[16];
- /* Create the expected sequence number for comparison */
+ static const uchar netsec_seal_sig[8] = NETSEC_SEAL_SIGNATURE;
+ static const uchar netsec_sign_sig[8] = NETSEC_SIGN_SIGNATURE;
+ const uchar *netsec_sig;
+
uchar seq_num[8];
+
+ DEBUG(10,("SCHANNEL: netsec_encode seq_num=%d data_len=%lu\n", a->seq_num, (unsigned long)data_len));
+
+ if (auth_flags & AUTH_PIPE_SEAL) {
+ netsec_sig = netsec_seal_sig;
+ } else if (auth_flags & AUTH_PIPE_SIGN) {
+ netsec_sig = netsec_sign_sig;
+ }
+
+ /* Create the expected sequence number for comparison */
RSIVAL(seq_num, 0, a->seq_num);
switch (direction) {
@@ -1560,6 +1573,20 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags,
digest, as supplied by the client. We check that it's a valid
checksum after the decode, below
*/
+ DEBUG(2, ("netsec_decode: FAILED: packet sequence number:\n"));
+ dump_data(2, verf->seq_num, sizeof(verf->seq_num));
+ DEBUG(2, ("should be:\n"));
+ dump_data(2, seq_num, sizeof(seq_num));
+
+ return False;
+ }
+
+ if (memcmp(verf->sig, netsec_sig, sizeof(verf->sig))) {
+ /* Validate that the other end sent the expected header */
+ DEBUG(2, ("netsec_decode: FAILED: packet header:\n"));
+ dump_data(2, verf->sig, sizeof(verf->sig));
+ DEBUG(2, ("should be:\n"));
+ dump_data(2, netsec_sig, sizeof(netsec_sig));
return False;
}
@@ -1570,16 +1597,16 @@ BOOL netsec_decode(struct netsec_auth_struct *a, int auth_flags,
netsec_get_sealing_key(a, verf, sealing_key);
/* extract the verification data */
- dump_data_pw("verf->data8:\n", verf->data8,
- sizeof(verf->data8));
- netsechash(sealing_key, verf->data8, 8);
+ dump_data_pw("verf->confounder:\n", verf->confounder,
+ sizeof(verf->confounder));
+ SamOEMhash(verf->confounder, sealing_key, 8);
- dump_data_pw("verf->data8_dec:\n", verf->data8,
- sizeof(verf->data8));
+ dump_data_pw("verf->confounder_dec:\n", verf->confounder,
+ sizeof(verf->confounder));
/* extract the packet payload */
dump_data_pw("data :\n", (const unsigned char *)data, data_len);
- netsechash(sealing_key, (unsigned char *)data, data_len);
+ SamOEMhash((unsigned char *)data, sealing_key, data_len);
dump_data_pw("datadec:\n", (const unsigned char *)data, data_len);
}
diff --git a/source/rpc_parse/parse_reg.c b/source/rpc_parse/parse_reg.c
index bbf6e6a8e3d..69c0dfc7548 100644
--- a/source/rpc_parse/parse_reg.c
+++ b/source/rpc_parse/parse_reg.c
@@ -281,18 +281,15 @@ void init_reg_q_create_key(REG_Q_CREATE_KEY *q_c, POLICY_HND *hnd,
char *name, char *class, SEC_ACCESS *sam_access,
SEC_DESC_BUF *sec_buf)
{
- int len_name = name != NULL ? strlen(name ) + 1: 0;
- int len_class = class != NULL ? strlen(class) + 1: 0;
-
ZERO_STRUCTP(q_c);
memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol));
- init_uni_hdr(&q_c->hdr_name, len_name);
- init_unistr2(&q_c->uni_name, name, len_name);
+ init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_c->hdr_name, &q_c->uni_name);
- init_uni_hdr(&q_c->hdr_class, len_class);
- init_unistr2(&q_c->uni_class, class, len_class);
+ init_unistr2(&q_c->uni_class, class, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_c->hdr_class, &q_c->uni_class);
q_c->reserved = 0x00000000;
memcpy(&q_c->sam_access, sam_access, sizeof(q_c->sam_access));
@@ -397,13 +394,12 @@ BOOL reg_io_r_create_key(const char *desc, REG_R_CREATE_KEY *r_r, prs_struct *p
void init_reg_q_delete_val(REG_Q_DELETE_VALUE *q_c, POLICY_HND *hnd,
char *name)
{
- int len_name = name != NULL ? strlen(name ) + 1: 0;
ZERO_STRUCTP(q_c);
memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol));
- init_uni_hdr(&q_c->hdr_name, len_name);
- init_unistr2(&q_c->uni_name, name, len_name);
+ init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_c->hdr_name, &q_c->uni_name);
}
/*******************************************************************
@@ -463,13 +459,12 @@ BOOL reg_io_r_delete_val(const char *desc, REG_R_DELETE_VALUE *r_r, prs_struct
void init_reg_q_delete_key(REG_Q_DELETE_KEY *q_c, POLICY_HND *hnd,
char *name)
{
- int len_name = name != NULL ? strlen(name ) + 1: 0;
ZERO_STRUCTP(q_c);
memcpy(&q_c->pnt_pol, hnd, sizeof(q_c->pnt_pol));
- init_uni_hdr(&q_c->hdr_name, len_name);
- init_unistr2(&q_c->uni_name, name, len_name);
+ init_unistr2(&q_c->uni_name, name, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_c->hdr_name, &q_c->uni_name);
}
/*******************************************************************
@@ -525,14 +520,12 @@ BOOL reg_io_r_delete_key(const char *desc, REG_R_DELETE_KEY *r_r, prs_struct *p
Inits a structure.
********************************************************************/
-void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd,
- uint32 max_class_len)
+void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd, UNISTR2 *uni2)
{
ZERO_STRUCTP(q_o);
memcpy(&q_o->pol, hnd, sizeof(q_o->pol));
- init_uni_hdr(&q_o->hdr_class, max_class_len);
- q_o->uni_class.uni_max_len = max_class_len;
+ init_uni_hdr(&q_o->hdr_class, uni2);
}
/*******************************************************************
@@ -1010,15 +1003,13 @@ makes a structure.
BOOL init_reg_q_info(REG_Q_INFO *q_i, POLICY_HND *pol, char* val_name)
{
- int len_type = val_name != NULL ? strlen(val_name) + 1 : 0;
-
if (q_i == NULL)
return False;
q_i->pol = *pol;
- init_uni_hdr(&(q_i->hdr_type), len_type);
- init_unistr2(&(q_i->uni_type), val_name, len_type);
+ init_unistr2(&q_i->uni_type, val_name, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_i->hdr_type, &q_i->uni_type);
q_i->ptr_reserved = 1;
q_i->ptr_buf = 1;
@@ -1230,7 +1221,7 @@ makes a structure.
********************************************************************/
void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol,
- uint32 val_idx, uint32 max_val_len,
+ uint32 val_idx, UNISTR2 *uni2,
uint32 max_buf_len)
{
ZERO_STRUCTP(q_i);
@@ -1238,8 +1229,7 @@ void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol,
memcpy(&q_i->pol, pol, sizeof(q_i->pol));
q_i->val_index = val_idx;
- init_uni_hdr(&q_i->hdr_name, max_val_len);
- q_i->uni_name.uni_max_len = max_val_len;
+ init_uni_hdr(&q_i->hdr_name, uni2);
q_i->ptr_type = 1;
q_i->type = 0x0;
@@ -1270,8 +1260,8 @@ void init_reg_r_enum_val(REG_R_ENUM_VALUE *r_u, REGISTRY_VALUE *val )
DEBUG(10,("init_reg_r_enum_val: Valuename => [%s]\n", val->valuename));
- init_uni_hdr( &r_u->hdr_name, strlen(val->valuename)+1 );
- init_unistr2( &r_u->uni_name, val->valuename, strlen(val->valuename)+1 );
+ init_unistr2( &r_u->uni_name, val->valuename, UNI_STR_TERMINATE);
+ init_uni_hdr( &r_u->hdr_name, &r_u->uni_name);
/* type */
@@ -1418,14 +1408,12 @@ void init_reg_q_create_val(REG_Q_CREATE_VALUE *q_i, POLICY_HND *pol,
char *val_name, uint32 type,
BUFFER3 *val)
{
- int val_len = strlen(val_name) + 1;
-
ZERO_STRUCTP(q_i);
memcpy(&q_i->pol, pol, sizeof(q_i->pol));
- init_uni_hdr(&q_i->hdr_name, val_len);
- init_unistr2(&q_i->uni_name, val_name, val_len);
+ init_unistr2(&q_i->uni_name, val_name, UNI_STR_TERMINATE);
+ init_uni_hdr(&q_i->hdr_name, &q_i->uni_name);
q_i->type = type;
q_i->buf_value = val;
@@ -1650,12 +1638,10 @@ makes a structure.
void init_reg_q_open_entry(REG_Q_OPEN_ENTRY *r_q, POLICY_HND *pol,
char *key_name, uint32 access_desired)
{
- int len_name = strlen(key_name)+1;
-
memcpy(&r_q->pol, pol, sizeof(r_q->pol));
- init_uni_hdr(&r_q->hdr_name, len_name);
- init_unistr2(&r_q->uni_name, key_name, len_name);
+ init_unistr2(&r_q->uni_name, key_name, UNI_STR_TERMINATE);
+ init_uni_hdr(&r_q->hdr_name, &r_q->uni_name);
r_q->unknown_0 = 0x00000000;
r_q->access_desired = access_desired;
@@ -1736,29 +1722,27 @@ BOOL reg_io_r_open_entry(const char *desc, REG_R_OPEN_ENTRY *r_r, prs_struct *p
/*******************************************************************
Inits a structure.
********************************************************************/
+
void init_reg_q_shutdown(REG_Q_SHUTDOWN * q_s, const char *msg,
uint32 timeout, BOOL do_reboot, BOOL force)
{
- int msg_len;
- msg_len = strlen(msg);
-
q_s->ptr_0 = 1;
q_s->ptr_1 = 1;
q_s->ptr_2 = 1;
- init_uni_hdr(&(q_s->hdr_msg), msg_len);
- init_unistr2(&(q_s->uni_msg), msg, msg_len);
+ init_unistr2(&q_s->uni_msg, msg, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_s->hdr_msg, &q_s->uni_msg);
q_s->timeout = timeout;
q_s->reboot = do_reboot ? 1 : 0;
q_s->force = force ? 1 : 0;
-
}
/*******************************************************************
reads or writes a structure.
********************************************************************/
+
BOOL reg_io_q_shutdown(const char *desc, REG_Q_SHUTDOWN * q_s, prs_struct *ps,
int depth)
{
diff --git a/source/rpc_parse/parse_rpc.c b/source/rpc_parse/parse_rpc.c
index 34ba62caa92..1ea59feaedb 100644
--- a/source/rpc_parse/parse_rpc.c
+++ b/source/rpc_parse/parse_rpc.c
@@ -243,30 +243,49 @@ BOOL smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth)
}
/*******************************************************************
- Reads or writes an RPC_IFACE structure.
+ Reads or writes an RPC_UUID structure.
********************************************************************/
-static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, int depth)
+static BOOL smb_io_rpc_uuid(const char *desc, RPC_UUID *uuid, prs_struct *ps, int depth)
{
- if (ifc == NULL)
+ if (uuid == NULL)
return False;
- prs_debug(ps, depth, desc, "smb_io_rpc_iface");
+ prs_debug(ps, depth, desc, "smb_io_rpc_uuid");
depth++;
if(!prs_align(ps))
return False;
- if(!prs_uint32 ("data ", ps, depth, &ifc->uuid.time_low))
+ if(!prs_uint32 ("data ", ps, depth, &uuid->time_low))
return False;
- if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_mid))
+ if(!prs_uint16 ("data ", ps, depth, &uuid->time_mid))
return False;
- if(!prs_uint16 ("data ", ps, depth, &ifc->uuid.time_hi_and_version))
+ if(!prs_uint16 ("data ", ps, depth, &uuid->time_hi_and_version))
return False;
- if(!prs_uint8s (False, "data ", ps, depth, ifc->uuid.remaining, sizeof(ifc->uuid.remaining)))
+ if(!prs_uint8s (False, "data ", ps, depth, uuid->remaining, sizeof(uuid->remaining)))
return False;
- if(!prs_uint32 ( "version", ps, depth, &ifc->version))
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes an RPC_IFACE structure.
+********************************************************************/
+
+static BOOL smb_io_rpc_iface(const char *desc, RPC_IFACE *ifc, prs_struct *ps, int depth)
+{
+ if (ifc == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "smb_io_rpc_iface");
+ depth++;
+
+ if (!smb_io_rpc_uuid( "uuid", &ifc->uuid, ps, depth))
+ return False;
+
+ if(!prs_uint32 ("version", ps, depth, &ifc->version))
return False;
return True;
@@ -1168,26 +1187,6 @@ BOOL smb_io_rpc_auth_netsec_neg(const char *desc, RPC_AUTH_NETSEC_NEG *neg,
return True;
}
-
-/*******************************************************************
-creates an RPC_AUTH_NETSEC_CHK structure.
-********************************************************************/
-BOOL init_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk,
- const uchar sig[8],
- const uchar packet_digest[8],
- const uchar seq_num[8], const uchar data8[8])
-{
- if (chk == NULL)
- return False;
-
- memcpy(chk->sig, sig, sizeof(chk->sig));
- memcpy(chk->packet_digest, packet_digest, sizeof(chk->packet_digest));
- memcpy(chk->seq_num, seq_num, sizeof(chk->seq_num));
- memcpy(chk->data8, data8, sizeof(chk->data8));
-
- return True;
-}
-
/*******************************************************************
reads or writes an RPC_AUTH_NETSEC_CHK structure.
********************************************************************/
@@ -1203,7 +1202,7 @@ BOOL smb_io_rpc_auth_netsec_chk(const char *desc, RPC_AUTH_NETSEC_CHK * chk,
prs_uint8s(False, "sig ", ps, depth, chk->sig, sizeof(chk->sig));
prs_uint8s(False, "seq_num", ps, depth, chk->seq_num, sizeof(chk->seq_num));
prs_uint8s(False, "packet_digest", ps, depth, chk->packet_digest, sizeof(chk->packet_digest));
- prs_uint8s(False, "data8", ps, depth, chk->data8, sizeof(chk->data8));
+ prs_uint8s(False, "confounder", ps, depth, chk->confounder, sizeof(chk->confounder));
return True;
}
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index 1fe9b3231fc..939b652a1e3 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -93,14 +93,12 @@ inits a SAMR_Q_LOOKUP_DOMAIN structure.
void init_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN * q_u,
POLICY_HND *pol, char *dom_name)
{
- int len_name = strlen(dom_name);
-
DEBUG(5, ("init_samr_q_lookup_domain\n"));
q_u->connect_pol = *pol;
- init_uni_hdr(&q_u->hdr_domain, len_name);
- init_unistr2(&q_u->uni_domain, dom_name, len_name);
+ init_unistr2(&q_u->uni_domain, dom_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_domain, &q_u->uni_domain);
}
/*******************************************************************
@@ -630,13 +628,11 @@ static BOOL sam_io_unk_info12(const char *desc, SAM_UNK_INFO_12 * u_12,
/*******************************************************************
inits a structure.
********************************************************************/
+
void init_unk_info5(SAM_UNK_INFO_5 * u_5,const char *server)
{
- int len_server = strlen(server);
-
- init_uni_hdr(&u_5->hdr_server, len_server);
-
- init_unistr2(&u_5->uni_server, server, len_server);
+ init_unistr2(&u_5->uni_server, server, UNI_FLAGS_NONE);
+ init_uni_hdr(&u_5->hdr_server, &u_5->uni_server);
}
/*******************************************************************
@@ -664,20 +660,16 @@ static BOOL sam_io_unk_info5(const char *desc, SAM_UNK_INFO_5 * u_5,
/*******************************************************************
inits a structure.
********************************************************************/
+
void init_unk_info2(SAM_UNK_INFO_2 * u_2,
const char *domain, const char *server,
uint32 seq_num, uint32 num_users, uint32 num_groups, uint32 num_alias)
{
- int len_domain = strlen(domain);
- int len_server = strlen(server);
-
u_2->unknown_0 = 0x00000000;
u_2->unknown_1 = 0x80000000;
u_2->unknown_2 = 0x00000000;
u_2->ptr_0 = 1;
- init_uni_hdr(&u_2->hdr_domain, len_domain);
- init_uni_hdr(&u_2->hdr_server, len_server);
u_2->seq_num = seq_num;
u_2->unknown_3 = 0x00000000;
@@ -691,8 +683,10 @@ void init_unk_info2(SAM_UNK_INFO_2 * u_2,
memset(u_2->padding, 0, sizeof(u_2->padding)); /* 12 bytes zeros */
- init_unistr2(&u_2->uni_domain, domain, len_domain);
- init_unistr2(&u_2->uni_server, server, len_server);
+ init_unistr2(&u_2->uni_domain, domain, UNI_FLAGS_NONE);
+ init_uni_hdr(&u_2->hdr_domain, &u_2->uni_domain);
+ init_unistr2(&u_2->uni_server, server, UNI_FLAGS_NONE);
+ init_uni_hdr(&u_2->hdr_server, &u_2->uni_server);
}
/*******************************************************************
@@ -984,9 +978,9 @@ static BOOL sam_io_sam_str1(const char *desc, SAM_STR1 * sam, uint32 acct_buf,
inits a SAM_ENTRY1 structure.
********************************************************************/
-static void init_sam_entry1(SAM_ENTRY1 * sam, uint32 user_idx,
- uint32 len_sam_name, uint32 len_sam_full,
- uint32 len_sam_desc, uint32 rid_user,
+static void init_sam_entry1(SAM_ENTRY1 *sam, uint32 user_idx,
+ UNISTR2 *sam_name, UNISTR2 *sam_full,
+ UNISTR2 *sam_desc, uint32 rid_user,
uint16 acb_info)
{
DEBUG(5, ("init_sam_entry1\n"));
@@ -997,9 +991,9 @@ static void init_sam_entry1(SAM_ENTRY1 * sam, uint32 user_idx,
sam->rid_user = rid_user;
sam->acb_info = acb_info;
- init_uni_hdr(&sam->hdr_acct_name, len_sam_name);
- init_uni_hdr(&sam->hdr_user_name, len_sam_full);
- init_uni_hdr(&sam->hdr_user_desc, len_sam_desc);
+ init_uni_hdr(&sam->hdr_acct_name, sam_name);
+ init_uni_hdr(&sam->hdr_user_name, sam_full);
+ init_uni_hdr(&sam->hdr_user_desc, sam_desc);
}
/*******************************************************************
@@ -1067,7 +1061,7 @@ static BOOL sam_io_sam_str2(const char *desc, SAM_STR2 * sam, uint32 acct_buf,
inits a SAM_ENTRY2 structure.
********************************************************************/
static void init_sam_entry2(SAM_ENTRY2 * sam, uint32 user_idx,
- uint32 len_sam_name, uint32 len_sam_desc,
+ UNISTR2 *sam_name, UNISTR2 *sam_desc,
uint32 rid_user, uint16 acb_info)
{
DEBUG(5, ("init_sam_entry2\n"));
@@ -1076,8 +1070,8 @@ static void init_sam_entry2(SAM_ENTRY2 * sam, uint32 user_idx,
sam->rid_user = rid_user;
sam->acb_info = acb_info;
- init_uni_hdr(&sam->hdr_srv_name, len_sam_name);
- init_uni_hdr(&sam->hdr_srv_desc, len_sam_desc);
+ init_uni_hdr(&sam->hdr_srv_name, sam_name);
+ init_uni_hdr(&sam->hdr_srv_desc, sam_desc);
}
/*******************************************************************
@@ -1144,7 +1138,7 @@ inits a SAM_ENTRY3 structure.
********************************************************************/
static void init_sam_entry3(SAM_ENTRY3 * sam, uint32 grp_idx,
- uint32 len_grp_name, uint32 len_grp_desc,
+ UNISTR2 *grp_name, UNISTR2 *grp_desc,
uint32 rid_grp)
{
DEBUG(5, ("init_sam_entry3\n"));
@@ -1153,8 +1147,8 @@ static void init_sam_entry3(SAM_ENTRY3 * sam, uint32 grp_idx,
sam->rid_grp = rid_grp;
sam->attr = 0x07; /* group rid attributes - gets ignored by nt 4.0 */
- init_uni_hdr(&sam->hdr_grp_name, len_grp_name);
- init_uni_hdr(&sam->hdr_grp_desc, len_grp_desc);
+ init_uni_hdr(&sam->hdr_grp_name, grp_name);
+ init_uni_hdr(&sam->hdr_grp_desc, grp_desc);
}
/*******************************************************************
@@ -1268,12 +1262,12 @@ static BOOL sam_io_sam_entry5(const char *desc, SAM_ENTRY5 * sam,
inits a SAM_ENTRY structure.
********************************************************************/
-void init_sam_entry(SAM_ENTRY * sam, uint32 len_sam_name, uint32 rid)
+void init_sam_entry(SAM_ENTRY *sam, UNISTR2 *uni2, uint32 rid)
{
- DEBUG(10, ("init_sam_entry: %d %d\n", len_sam_name, rid));
+ DEBUG(10, ("init_sam_entry: %d\n", rid));
sam->rid = rid;
- init_uni_hdr(&sam->hdr_name, len_sam_name);
+ init_uni_hdr(&sam->hdr_name, uni2);
}
/*******************************************************************
@@ -1502,7 +1496,6 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en
uint32 start_idx, SAM_ACCOUNT *disp_user_info,
DOM_SID *domain_sid)
{
- uint32 len_sam_name, len_sam_full, len_sam_desc;
uint32 i;
SAM_ACCOUNT *pwd = NULL;
@@ -1560,21 +1553,14 @@ NTSTATUS init_sam_dispinfo_1(TALLOC_CTX *ctx, SAM_DISPINFO_1 *sam, uint32 num_en
return NT_STATUS_UNSUCCESSFUL;
}
- len_sam_name = strlen(username);
- len_sam_full = strlen(fullname);
- len_sam_desc = strlen(acct_desc);
+ init_unistr2(&sam->str[i].uni_acct_name, pdb_get_username(pwd), UNI_FLAGS_NONE);
+ init_unistr2(&sam->str[i].uni_full_name, pdb_get_fullname(pwd), UNI_FLAGS_NONE);
+ init_unistr2(&sam->str[i].uni_acct_desc, pdb_get_acct_desc(pwd), UNI_FLAGS_NONE);
init_sam_entry1(&sam->sam[i], start_idx + i + 1,
- len_sam_name, len_sam_full, len_sam_desc,
+ &sam->str[i].uni_acct_name, &sam->str[i].uni_full_name, &sam->str[i].uni_acct_desc,
user_rid, pdb_get_acct_ctrl(pwd));
- ZERO_STRUCTP(&sam->str[i].uni_acct_name);
- 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);
}
return NT_STATUS_OK;
@@ -1637,7 +1623,6 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en
uint32 start_idx, SAM_ACCOUNT *disp_user_info,
DOM_SID *domain_sid )
{
- uint32 len_sam_name, len_sam_desc;
uint32 i;
SAM_ACCOUNT *pwd = NULL;
@@ -1680,18 +1665,12 @@ NTSTATUS init_sam_dispinfo_2(TALLOC_CTX *ctx, SAM_DISPINFO_2 *sam, uint32 num_en
return NT_STATUS_UNSUCCESSFUL;
}
- len_sam_name = strlen(username);
- len_sam_desc = strlen(acct_desc);
-
+ init_unistr2(&sam->str[i].uni_srv_name, username, UNI_FLAGS_NONE);
+ init_unistr2(&sam->str[i].uni_srv_desc, pdb_get_acct_desc(pwd), UNI_FLAGS_NONE);
+
init_sam_entry2(&sam->sam[i], start_idx + i + 1,
- len_sam_name, len_sam_desc,
+ &sam->str[i].uni_srv_name, &sam->str[i].uni_srv_desc,
user_rid, pdb_get_acct_ctrl(pwd));
-
- ZERO_STRUCTP(&sam->str[i].uni_srv_name);
- ZERO_STRUCTP(&sam->str[i].uni_srv_desc);
-
- init_unistr2(&sam->str[i].uni_srv_name, username, len_sam_name);
- init_unistr2(&sam->str[i].uni_srv_desc, pdb_get_acct_desc(pwd), len_sam_desc);
}
return NT_STATUS_OK;
@@ -1755,7 +1734,6 @@ inits a SAM_DISPINFO_3 structure.
NTSTATUS init_sam_dispinfo_3(TALLOC_CTX *ctx, SAM_DISPINFO_3 *sam, uint32 num_entries,
uint32 start_idx, DOMAIN_GRP *disp_group_info)
{
- uint32 len_sam_name, len_sam_desc;
uint32 i;
ZERO_STRUCTP(sam);
@@ -1779,13 +1757,11 @@ NTSTATUS init_sam_dispinfo_3(TALLOC_CTX *ctx, SAM_DISPINFO_3 *sam, uint32 num_en
DEBUG(11, ("init_sam_dispinfo_3: entry: %d\n",i));
- len_sam_name = strlen(grp->name);
- len_sam_desc = strlen(grp->comment);
+ init_unistr2(&sam->str[i].uni_grp_name, grp->name, UNI_FLAGS_NONE);
+ init_unistr2(&sam->str[i].uni_grp_desc, grp->comment, UNI_FLAGS_NONE);
- init_sam_entry3(&sam->sam[i], start_idx + i + 1, len_sam_name, len_sam_desc, grp->rid);
-
- init_unistr2(&sam->str[i].uni_grp_name, grp->name, len_sam_name);
- init_unistr2(&sam->str[i].uni_grp_desc, grp->comment, len_sam_desc);
+ init_sam_entry3(&sam->sam[i], start_idx + i + 1, &sam->str[i].uni_grp_name,
+ &sam->str[i].uni_grp_desc, grp->rid);
}
return NT_STATUS_OK;
@@ -2210,20 +2186,15 @@ void init_samr_group_info1(GROUP_INFO1 * gr1,
char *acct_name, char *acct_desc,
uint32 num_members)
{
- int desc_len = acct_desc != NULL ? strlen(acct_desc) : 0;
- int acct_len = acct_name != NULL ? strlen(acct_name) : 0;
-
DEBUG(5, ("init_samr_group_info1\n"));
- init_uni_hdr(&gr1->hdr_acct_name, acct_len);
-
gr1->unknown_1 = 0x3;
gr1->num_members = num_members;
- init_uni_hdr(&gr1->hdr_acct_desc, desc_len);
-
- init_unistr2(&gr1->uni_acct_name, acct_name, acct_len);
- init_unistr2(&gr1->uni_acct_desc, acct_desc, desc_len);
+ init_unistr2(&gr1->uni_acct_name, acct_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&gr1->hdr_acct_name, &gr1->uni_acct_name);
+ init_unistr2(&gr1->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&gr1->hdr_acct_desc, &gr1->uni_acct_desc);
}
/*******************************************************************
@@ -2302,12 +2273,10 @@ inits a GROUP_INFO4 structure.
void init_samr_group_info4(GROUP_INFO4 * gr4, char *acct_desc)
{
- int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0;
-
DEBUG(5, ("init_samr_group_info4\n"));
- init_uni_hdr(&gr4->hdr_acct_desc, acct_len);
- init_unistr2(&gr4->uni_acct_desc, acct_desc, acct_len);
+ init_unistr2(&gr4->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&gr4->hdr_acct_desc, &gr4->uni_acct_desc);
}
/*******************************************************************
@@ -2383,14 +2352,12 @@ void init_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP * q_e,
POLICY_HND *pol, char *acct_desc,
uint32 access_mask)
{
- int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0;
-
DEBUG(5, ("init_samr_q_create_dom_group\n"));
q_e->pol = *pol;
- init_uni_hdr(&q_e->hdr_acct_desc, acct_len);
- init_unistr2(&q_e->uni_acct_desc, acct_desc, acct_len);
+ init_unistr2(&q_e->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_e->hdr_acct_desc, &q_e->uni_acct_desc);
q_e->access_mask = access_mask;
}
@@ -3502,18 +3469,15 @@ inits a ALIAS_INFO1 structure.
void init_samr_alias_info1(ALIAS_INFO1 * al1, char *acct_name, uint32 num_member, char *acct_desc)
{
- int acct_len_name = acct_name != NULL ? strlen(acct_name) : 0;
- int acct_len_desc = acct_desc != NULL ? strlen(acct_desc) : 0;
-
DEBUG(5, ("init_samr_alias_info1\n"));
- init_uni_hdr(&al1->hdr_acct_name, acct_len_name);
- init_unistr2(&al1->uni_acct_name, acct_name, acct_len_name);
+ init_unistr2(&al1->uni_acct_name, acct_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&al1->hdr_acct_name, &al1->uni_acct_name);
al1->num_member=num_member;
- init_uni_hdr(&al1->hdr_acct_desc, acct_len_desc);
- init_unistr2(&al1->uni_acct_desc, acct_desc, acct_len_desc);
+ init_unistr2(&al1->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&al1->hdr_acct_desc, &al1->uni_acct_name);
}
/*******************************************************************
@@ -3559,12 +3523,10 @@ inits a ALIAS_INFO3 structure.
void init_samr_alias_info3(ALIAS_INFO3 * al3, char *acct_desc)
{
- int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0;
-
DEBUG(5, ("init_samr_alias_info3\n"));
- init_uni_hdr(&al3->hdr_acct_desc, acct_len);
- init_unistr2(&al3->uni_acct_desc, acct_desc, acct_len);
+ init_unistr2(&al3->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&al3->hdr_acct_desc, &al3->uni_acct_desc);
}
/*******************************************************************
@@ -4272,14 +4234,12 @@ inits a SAMR_Q_CREATE_DOM_ALIAS structure.
void init_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS * q_u,
POLICY_HND *hnd, char *acct_desc)
{
- int acct_len = acct_desc != NULL ? strlen(acct_desc) : 0;
-
DEBUG(5, ("init_samr_q_create_dom_alias\n"));
q_u->dom_pol = *hnd;
- init_uni_hdr(&q_u->hdr_acct_desc, acct_len);
- init_unistr2(&q_u->uni_acct_desc, acct_desc, acct_len);
+ init_unistr2(&q_u->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_acct_desc, &q_u->uni_acct_desc);
q_u->access_mask = 0x001f000f;
}
@@ -4675,9 +4635,8 @@ NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u,
return NT_STATUS_NO_MEMORY;
for (i = 0; i < num_names; i++) {
- int len_name = name[i] != NULL ? strlen(name[i]) : 0;
- init_uni_hdr(&q_u->hdr_name[i], len_name); /* unicode header for user_name */
- init_unistr2(&q_u->uni_name[i], name[i], len_name); /* unicode string for machine account */
+ init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE); /* unicode string for machine account */
+ init_uni_hdr(&q_u->hdr_name[i], &q_u->uni_name[i]); /* unicode header for user_name */
}
return NT_STATUS_OK;
@@ -5013,15 +4972,12 @@ void init_samr_q_create_user(SAMR_Q_CREATE_USER * q_u,
const char *name,
uint32 acb_info, uint32 access_mask)
{
- int len_name;
- len_name = strlen(name);
-
DEBUG(5, ("samr_init_samr_q_create_user\n"));
q_u->domain_pol = *pol;
- init_uni_hdr(&q_u->hdr_name, len_name);
- init_unistr2(&q_u->uni_name, name, len_name);
+ init_unistr2(&q_u->uni_name, name, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_name, &q_u->uni_name);
q_u->acb_info = acb_info;
q_u->access_mask = access_mask;
@@ -5244,16 +5200,11 @@ void init_sam_user_info11(SAM_USER_INFO_11 * usr,
char *mach_acct,
uint32 rid_user, uint32 rid_group, uint16 acct_ctrl)
{
- int len_mach_acct;
-
DEBUG(5, ("init_sam_user_info11\n"));
- len_mach_acct = strlen(mach_acct);
-
- memcpy(&(usr->expiry), expiry, sizeof(usr->expiry)); /* expiry time or something? */
+ memcpy(&usr->expiry, expiry, sizeof(usr->expiry)); /* expiry time or something? */
ZERO_STRUCT(usr->padding_1); /* 0 - padding 24 bytes */
- init_uni_hdr(&usr->hdr_mach_acct, len_mach_acct); /* unicode header for machine account */
usr->padding_2 = 0; /* 0 - padding 4 bytes */
usr->ptr_1 = 1; /* pointer */
@@ -5278,7 +5229,8 @@ void init_sam_user_info11(SAM_USER_INFO_11 * usr,
ZERO_STRUCT(usr->padding_7); /* 0 - padding 16 bytes */
usr->padding_8 = 0; /* 0 - padding 4 bytes */
- init_unistr2(&usr->uni_mach_acct, mach_acct, len_mach_acct); /* unicode string for machine account */
+ init_unistr2(&usr->uni_mach_acct, mach_acct, UNI_FLAGS_NONE); /* unicode string for machine account */
+ init_uni_hdr(&usr->hdr_mach_acct, &usr->uni_mach_acct); /* unicode header for machine account */
}
/*******************************************************************
@@ -5411,7 +5363,6 @@ static BOOL sam_io_user_info24(const char *desc, SAM_USER_INFO_24 * usr,
init_sam_user_info23
unknown_3 = 0x09f8 27fa
- unknown_5 = 0x0001 0000
unknown_6 = 0x0000 04ec
*************************************************************************/
@@ -5438,20 +5389,10 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
uint32 unknown_3,
uint16 logon_divs,
LOGON_HRS * hrs,
- uint32 unknown_5,
+ uint16 bad_password_count,
+ uint16 logon_count,
char newpass[516], uint32 unknown_6)
{
- int len_user_name = user_name != NULL ? user_name->uni_str_len : 0;
- int len_full_name = full_name != NULL ? full_name->uni_str_len : 0;
- int len_home_dir = home_dir != NULL ? home_dir->uni_str_len : 0;
- int len_dir_drive = dir_drive != NULL ? dir_drive->uni_str_len : 0;
- int len_logon_script = log_scr != NULL ? log_scr->uni_str_len : 0;
- int len_profile_path = prof_path != NULL ? prof_path->uni_str_len : 0;
- int len_description = desc != NULL ? desc->uni_str_len : 0;
- int len_workstations = wkstas != NULL ? wkstas->uni_str_len : 0;
- int len_unknown_str = unk_str != NULL ? unk_str->uni_str_len : 0;
- int len_munged_dial = mung_dial != NULL ? mung_dial->uni_str_len : 0;
-
usr->logon_time = *logon_time; /* all zeros */
usr->logoff_time = *logoff_time; /* all zeros */
usr->kickoff_time = *kickoff_time; /* all zeros */
@@ -5459,17 +5400,6 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
usr->pass_can_change_time = *pass_can_change_time; /* all zeros */
usr->pass_must_change_time = *pass_must_change_time; /* all zeros */
- init_uni_hdr(&usr->hdr_user_name, len_user_name); /* NULL */
- init_uni_hdr(&usr->hdr_full_name, len_full_name);
- init_uni_hdr(&usr->hdr_home_dir, len_home_dir);
- init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive);
- init_uni_hdr(&usr->hdr_logon_script, len_logon_script);
- init_uni_hdr(&usr->hdr_profile_path, len_profile_path);
- init_uni_hdr(&usr->hdr_acct_desc, len_description);
- init_uni_hdr(&usr->hdr_workstations, len_workstations);
- init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str);
- init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial);
-
ZERO_STRUCT(usr->nt_pwd);
ZERO_STRUCT(usr->lm_pwd);
@@ -5487,24 +5417,43 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
usr->passmustchange=0;
}
-
ZERO_STRUCT(usr->padding1);
ZERO_STRUCT(usr->padding2);
- usr->unknown_5 = unknown_5; /* 0x0001 0000 */
+ usr->bad_password_count = bad_password_count;
+ usr->logon_count = logon_count;
memcpy(usr->pass, newpass, sizeof(usr->pass));
copy_unistr2(&usr->uni_user_name, user_name);
+ init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
+
copy_unistr2(&usr->uni_full_name, full_name);
+ init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
+
copy_unistr2(&usr->uni_home_dir, home_dir);
+ init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
+
copy_unistr2(&usr->uni_dir_drive, dir_drive);
+ init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
+
copy_unistr2(&usr->uni_logon_script, log_scr);
+ init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
+
copy_unistr2(&usr->uni_profile_path, prof_path);
+ init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
+
copy_unistr2(&usr->uni_acct_desc, desc);
+ init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
+
copy_unistr2(&usr->uni_workstations, wkstas);
+ init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
+
copy_unistr2(&usr->uni_unknown_str, unk_str);
+ init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str);
+
copy_unistr2(&usr->uni_munged_dial, mung_dial);
+ init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
usr->unknown_6 = unknown_6; /* 0x0000 04ec */
usr->padding4 = 0;
@@ -5516,7 +5465,6 @@ void init_sam_user_info23W(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
init_sam_user_info23
unknown_3 = 0x09f8 27fa
- unknown_5 = 0x0001 0000
unknown_6 = 0x0000 04ec
*************************************************************************/
@@ -5534,20 +5482,9 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
char *unk_str, char *mung_dial, uint32 user_rid, /* 0x0000 0000 */
uint32 group_rid, uint32 acb_info,
uint32 unknown_3, uint16 logon_divs,
- LOGON_HRS * hrs, uint32 unknown_5,
+ LOGON_HRS * hrs, uint16 bad_password_count, uint16 logon_count,
char newpass[516], uint32 unknown_6)
{
- int len_user_name = user_name != NULL ? strlen(user_name) : 0;
- int len_full_name = full_name != NULL ? strlen(full_name) : 0;
- int len_home_dir = home_dir != NULL ? strlen(home_dir) : 0;
- int len_dir_drive = dir_drive != NULL ? strlen(dir_drive) : 0;
- int len_logon_script = log_scr != NULL ? strlen(log_scr) : 0;
- int len_profile_path = prof_path != NULL ? strlen(prof_path) : 0;
- int len_description = desc != NULL ? strlen(desc) : 0;
- int len_workstations = wkstas != NULL ? strlen(wkstas) : 0;
- int len_unknown_str = unk_str != NULL ? strlen(unk_str) : 0;
- int len_munged_dial = mung_dial != NULL ? strlen(mung_dial) : 0;
-
usr->logon_time = *logon_time; /* all zeros */
usr->logoff_time = *logoff_time; /* all zeros */
usr->kickoff_time = *kickoff_time; /* all zeros */
@@ -5555,17 +5492,6 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
usr->pass_can_change_time = *pass_can_change_time; /* all zeros */
usr->pass_must_change_time = *pass_must_change_time; /* all zeros */
- init_uni_hdr(&usr->hdr_user_name, len_user_name); /* NULL */
- init_uni_hdr(&usr->hdr_full_name, len_full_name);
- init_uni_hdr(&usr->hdr_home_dir, len_home_dir);
- init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive);
- init_uni_hdr(&usr->hdr_logon_script, len_logon_script);
- init_uni_hdr(&usr->hdr_profile_path, len_profile_path);
- init_uni_hdr(&usr->hdr_acct_desc, len_description);
- init_uni_hdr(&usr->hdr_workstations, len_workstations);
- init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str);
- init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial);
-
ZERO_STRUCT(usr->nt_pwd);
ZERO_STRUCT(usr->lm_pwd);
@@ -5586,20 +5512,40 @@ void init_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z
ZERO_STRUCT(usr->padding1);
ZERO_STRUCT(usr->padding2);
- usr->unknown_5 = unknown_5; /* 0x0001 0000 */
+ usr->bad_password_count = bad_password_count;
+ usr->logon_count = logon_count;
memcpy(usr->pass, newpass, sizeof(usr->pass));
- init_unistr2(&usr->uni_user_name, user_name, len_user_name); /* NULL */
- 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, log_scr, len_logon_script);
- init_unistr2(&usr->uni_profile_path, prof_path, len_profile_path);
- init_unistr2(&usr->uni_acct_desc, desc, len_description);
- init_unistr2(&usr->uni_workstations, wkstas, len_workstations);
- init_unistr2(&usr->uni_unknown_str, unk_str, len_unknown_str);
- init_unistr2(&usr->uni_munged_dial, mung_dial, len_munged_dial);
+ init_unistr2(&usr->uni_user_name, user_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
+
+ init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
+
+ init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
+
+ init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
+
+ init_unistr2(&usr->uni_logon_script, log_scr, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
+
+ init_unistr2(&usr->uni_profile_path, prof_path, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
+
+ init_unistr2(&usr->uni_acct_desc, desc, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
+
+ init_unistr2(&usr->uni_workstations, wkstas, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
+
+ init_unistr2(&usr->uni_unknown_str, unk_str, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str);
+
+ init_unistr2(&usr->uni_munged_dial, mung_dial, UNI_FLAGS_NONE);
+ init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
usr->unknown_6 = unknown_6; /* 0x0000 04ec */
usr->padding4 = 0;
@@ -5678,7 +5624,9 @@ static BOOL sam_io_user_info23(const char *desc, SAM_USER_INFO_23 * usr,
if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs))
return False;
- if(!prs_uint32("unknown_5 ", ps, depth, &usr->unknown_5))
+ if(!prs_uint16("bad_password_count ", ps, depth, &usr->bad_password_count))
+ return False;
+ if(!prs_uint16("logon_count ", ps, depth, &usr->logon_count))
return False;
if(!prs_uint8s(False, "padding1 ", ps, depth, usr->padding1, sizeof(usr->padding1)))
@@ -5865,7 +5813,6 @@ static BOOL sam_io_user_info25(const char *desc, SAM_USER_INFO_25 * usr, prs_str
init_sam_user_info21W
unknown_3 = 0x00ff ffff
- unknown_5 = 0x0002 0000
unknown_6 = 0x0000 04ec
*************************************************************************/
@@ -5895,19 +5842,10 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr,
uint32 unknown_3,
uint16 logon_divs,
LOGON_HRS * hrs,
- uint32 unknown_5, uint32 unknown_6)
-{
- int len_user_name = user_name != NULL ? user_name->uni_str_len : 0;
- int len_full_name = full_name != NULL ? full_name->uni_str_len : 0;
- int len_home_dir = home_dir != NULL ? home_dir->uni_str_len : 0;
- int len_dir_drive = dir_drive != NULL ? dir_drive->uni_str_len : 0;
- int len_logon_script = log_scr != NULL ? log_scr->uni_str_len : 0;
- int len_profile_path = prof_path != NULL ? prof_path->uni_str_len : 0;
- int len_description = desc != NULL ? desc->uni_str_len : 0;
- int len_workstations = wkstas != NULL ? wkstas->uni_str_len : 0;
- int len_unknown_str = unk_str != NULL ? unk_str->uni_str_len : 0;
- int len_munged_dial = mung_dial != NULL ? mung_dial->uni_str_len : 0;
-
+ uint16 bad_password_count,
+ uint16 logon_count,
+ uint32 unknown_6)
+{
usr->logon_time = *logon_time;
usr->logoff_time = *logoff_time;
usr->kickoff_time = *kickoff_time;
@@ -5915,17 +5853,6 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr,
usr->pass_can_change_time = *pass_can_change_time;
usr->pass_must_change_time = *pass_must_change_time;
- init_uni_hdr(&usr->hdr_user_name, len_user_name);
- init_uni_hdr(&usr->hdr_full_name, len_full_name);
- init_uni_hdr(&usr->hdr_home_dir, len_home_dir);
- init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive);
- init_uni_hdr(&usr->hdr_logon_script, len_logon_script);
- init_uni_hdr(&usr->hdr_profile_path, len_profile_path);
- init_uni_hdr(&usr->hdr_acct_desc, len_description);
- init_uni_hdr(&usr->hdr_workstations, len_workstations);
- init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str);
- init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial);
-
memcpy(usr->lm_pwd, lm_pwd, sizeof(usr->lm_pwd));
memcpy(usr->nt_pwd, nt_pwd, sizeof(usr->nt_pwd));
@@ -5936,7 +5863,8 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr,
usr->logon_divs = logon_divs; /* should be 168 (hours/week) */
usr->ptr_logon_hrs = hrs ? 1 : 0;
- usr->unknown_5 = unknown_5; /* 0x0002 0000 */
+ usr->bad_password_count = bad_password_count;
+ usr->logon_count = logon_count;
if (nt_time_is_zero(pass_must_change_time)) {
usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
@@ -5944,20 +5872,38 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr,
usr->passmustchange=0;
}
-
ZERO_STRUCT(usr->padding1);
ZERO_STRUCT(usr->padding2);
copy_unistr2(&usr->uni_user_name, user_name);
+ init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
+
copy_unistr2(&usr->uni_full_name, full_name);
+ init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
+
copy_unistr2(&usr->uni_home_dir, home_dir);
+ init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
+
copy_unistr2(&usr->uni_dir_drive, dir_drive);
+ init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
+
copy_unistr2(&usr->uni_logon_script, log_scr);
+ init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
+
copy_unistr2(&usr->uni_profile_path, prof_path);
+ init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
+
copy_unistr2(&usr->uni_acct_desc, desc);
+ init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
+
copy_unistr2(&usr->uni_workstations, wkstas);
+ init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
+
copy_unistr2(&usr->uni_unknown_str, unk_str);
+ init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str);
+
copy_unistr2(&usr->uni_munged_dial, mung_dial);
+ init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
usr->unknown_6 = unknown_6; /* 0x0000 04ec */
usr->padding4 = 0;
@@ -5969,7 +5915,6 @@ void init_sam_user_info21W(SAM_USER_INFO_21 * usr,
init_sam_user_info21
unknown_3 = 0x00ff ffff
- unknown_5 = 0x0002 0000
unknown_6 = 0x0000 04ec
*************************************************************************/
@@ -5979,11 +5924,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID *
NTTIME logon_time, logoff_time, kickoff_time,
pass_last_set_time, pass_can_change_time,
pass_must_change_time;
-
- int len_user_name, len_full_name, len_home_dir,
- len_dir_drive, len_logon_script, len_profile_path,
- len_description, len_workstations, len_unknown_str,
- len_munged_dial;
const char* user_name = pdb_get_username(pw);
const char* full_name = pdb_get_fullname(pw);
@@ -6001,18 +5941,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID *
uint32 group_rid;
const DOM_SID *group_sid;
- 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_unknown_str = 0;
- len_munged_dial = munged_dial != NULL ? strlen(munged_dial )+1 : 0;
-
-
/* Create NTTIME structs */
unix_to_nt_time (&logon_time, pdb_get_logon_time(pw));
unix_to_nt_time (&logoff_time, pdb_get_logoff_time(pw));
@@ -6029,17 +5957,6 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID *
usr->pass_can_change_time = pass_can_change_time;
usr->pass_must_change_time = pass_must_change_time;
- init_uni_hdr(&usr->hdr_user_name, len_user_name);
- init_uni_hdr(&usr->hdr_full_name, len_full_name);
- init_uni_hdr(&usr->hdr_home_dir, len_home_dir);
- init_uni_hdr(&usr->hdr_dir_drive, len_dir_drive);
- init_uni_hdr(&usr->hdr_logon_script, len_logon_script);
- init_uni_hdr(&usr->hdr_profile_path, len_profile_path);
- init_uni_hdr(&usr->hdr_acct_desc, len_description);
- init_uni_hdr(&usr->hdr_workstations, len_workstations);
- init_uni_hdr(&usr->hdr_unknown_str, len_unknown_str);
- init_uni_hdr(&usr->hdr_munged_dial, len_munged_dial);
-
ZERO_STRUCT(usr->nt_pwd);
ZERO_STRUCT(usr->lm_pwd);
@@ -6086,7 +6003,8 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID *
usr->logon_divs = pdb_get_logon_divs(pw);
usr->ptr_logon_hrs = pdb_get_hours(pw) ? 1 : 0;
- usr->unknown_5 = pdb_get_unknown_5(pw); /* 0x0002 0000 */
+ usr->bad_password_count = pdb_get_bad_password_count(pw);
+ usr->logon_count = pdb_get_logon_count(pw);
if (pdb_get_pass_must_change_time(pw) == 0) {
usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
@@ -6094,20 +6012,38 @@ NTSTATUS init_sam_user_info21A(SAM_USER_INFO_21 *usr, SAM_ACCOUNT *pw, DOM_SID *
usr->passmustchange=0;
}
-
ZERO_STRUCT(usr->padding1);
ZERO_STRUCT(usr->padding2);
- 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_unknown_str, NULL, len_unknown_str);
- init_unistr2(&usr->uni_munged_dial, munged_dial, len_munged_dial);
+ init_unistr2(&usr->uni_user_name, user_name, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
+
+ init_unistr2(&usr->uni_full_name, full_name, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
+
+ init_unistr2(&usr->uni_home_dir, home_dir, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
+
+ init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
+
+ init_unistr2(&usr->uni_logon_script, logon_script, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
+
+ init_unistr2(&usr->uni_profile_path, profile_path, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
+
+ init_unistr2(&usr->uni_acct_desc, description, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
+
+ init_unistr2(&usr->uni_workstations, workstations, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
+
+ init_unistr2(&usr->uni_unknown_str, NULL, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_unknown_str, &usr->uni_unknown_str);
+
+ init_unistr2(&usr->uni_munged_dial, munged_dial, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
usr->unknown_6 = pdb_get_unknown_6(pw);
usr->padding4 = 0;
@@ -6192,7 +6128,9 @@ static BOOL sam_io_user_info21(const char *desc, SAM_USER_INFO_21 * usr,
if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs))
return False;
- if(!prs_uint32("unknown_5 ", ps, depth, &usr->unknown_5))
+ if(!prs_uint16("bad_password_count ", ps, depth, &usr->bad_password_count))
+ return False;
+ if(!prs_uint16("logon_count ", ps, depth, &usr->logon_count))
return False;
if(!prs_uint8s(False, "padding1 ", ps, depth, usr->padding1, sizeof(usr->padding1)))
@@ -6245,12 +6183,10 @@ static BOOL sam_io_user_info21(const char *desc, SAM_USER_INFO_21 * usr,
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);
+ const char *munged_dial = pdb_get_munged_dial(pw);
- len_munged_dial = munged_dial != NULL ? strlen(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, munged_dial, UNI_STR_TERMINATE);
+ init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
}
@@ -6716,13 +6652,11 @@ inits a SAMR_Q_CONNECT structure.
void init_samr_q_connect(SAMR_Q_CONNECT * q_u,
char *srv_name, uint32 access_mask)
{
- int len_srv_name = strlen(srv_name);
-
DEBUG(5, ("init_samr_q_connect\n"));
/* make PDC server name \\server */
- q_u->ptr_srv_name = len_srv_name > 0 ? 1 : 0;
- init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name + 1);
+ q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0;
+ init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE);
/* example values: 0x0000 0002 */
q_u->access_mask = access_mask;
@@ -6789,13 +6723,11 @@ inits a SAMR_Q_CONNECT4 structure.
void init_samr_q_connect4(SAMR_Q_CONNECT4 * q_u,
char *srv_name, uint32 access_mask)
{
- int len_srv_name = strlen(srv_name);
-
DEBUG(5, ("init_samr_q_connect\n"));
/* make PDC server name \\server */
- q_u->ptr_srv_name = len_srv_name > 0 ? 1 : 0;
- init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name + 1);
+ q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0;
+ init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE);
/* Only value we've seen, possibly an address type ? */
q_u->unk_0 = 2;
@@ -6934,13 +6866,11 @@ inits a SAMR_Q_GET_DOM_PWINFO structure.
void init_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO * q_u,
char *srv_name)
{
- int len_srv_name = strlen(srv_name);
-
DEBUG(5, ("init_samr_q_get_dom_pwinfo\n"));
q_u->ptr = 1;
- init_uni_hdr(&q_u->hdr_srv_name, len_srv_name);
- init_unistr2(&q_u->uni_srv_name, srv_name, len_srv_name);
+ init_unistr2(&q_u->uni_srv_name, srv_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_srv_name, &q_u->uni_srv_name);
}
/*******************************************************************
@@ -7101,16 +7031,14 @@ void init_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER * q_u,
char lm_newpass[516],
uchar lm_oldhash[16])
{
- int len_dest_host = strlen(dest_host);
- int len_user_name = strlen(user_name);
-
DEBUG(5, ("init_samr_q_chgpasswd_user\n"));
q_u->ptr_0 = 1;
- init_uni_hdr(&q_u->hdr_dest_host, len_dest_host);
- init_unistr2(&q_u->uni_dest_host, dest_host, len_dest_host);
- init_uni_hdr(&q_u->hdr_user_name, len_user_name);
- init_unistr2(&q_u->uni_user_name, user_name, len_user_name);
+ init_unistr2(&q_u->uni_dest_host, dest_host, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_dest_host, &q_u->uni_dest_host);
+
+ init_unistr2(&q_u->uni_user_name, user_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&q_u->hdr_user_name, &q_u->uni_user_name);
init_enc_passwd(&q_u->nt_newpass, nt_newpass);
init_enc_hash(&q_u->nt_oldhash, nt_oldhash);
diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c
index 3848bd7051f..bf43ef288ae 100644
--- a/source/rpc_parse/parse_sec.c
+++ b/source/rpc_parse/parse_sec.c
@@ -28,15 +28,6 @@
#define DBGC_CLASS DBGC_RPC_PARSE
/*******************************************************************
- Sets up a SEC_ACCESS structure.
-********************************************************************/
-
-void init_sec_access(SEC_ACCESS *t, uint32 mask)
-{
- t->mask = mask;
-}
-
-/*******************************************************************
Reads or writes a SEC_ACCESS structure.
********************************************************************/
@@ -55,51 +46,6 @@ BOOL sec_io_access(const char *desc, SEC_ACCESS *t, prs_struct *ps, int depth)
}
/*******************************************************************
- Check if ACE has OBJECT type.
-********************************************************************/
-
-BOOL sec_ace_object(uint8 type)
-{
- if (type == SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT ||
- type == SEC_ACE_TYPE_ACCESS_DENIED_OBJECT ||
- type == SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT ||
- type == SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT) {
- return True;
- }
- return False;
-}
-
-/*******************************************************************
- copy a SEC_ACE structure.
-********************************************************************/
-void sec_ace_copy(SEC_ACE *ace_dest, SEC_ACE *ace_src)
-{
- ace_dest->type = ace_src->type;
- ace_dest->flags = ace_src->flags;
- ace_dest->size = ace_src->size;
- ace_dest->info.mask = ace_src->info.mask;
- ace_dest->obj_flags = ace_src->obj_flags;
- memcpy(&ace_dest->obj_guid, &ace_src->obj_guid, GUID_SIZE);
- memcpy(&ace_dest->inh_guid, &ace_src->inh_guid, GUID_SIZE);
- sid_copy(&ace_dest->trustee, &ace_src->trustee);
-}
-
-/*******************************************************************
- Sets up a SEC_ACE structure.
-********************************************************************/
-
-void init_sec_ace(SEC_ACE *t, DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag)
-{
- t->type = type;
- t->flags = flag;
- t->size = sid_size(sid) + 8;
- t->info = mask;
-
- ZERO_STRUCTP(&t->trustee);
- sid_copy(&t->trustee, sid);
-}
-
-/*******************************************************************
Reads or writes a SEC_ACE structure.
********************************************************************/
@@ -154,127 +100,6 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth)
}
/*******************************************************************
- adds new SID with its permissions to ACE list
-********************************************************************/
-
-NTSTATUS sec_ace_add_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, unsigned *num, DOM_SID *sid, uint32 mask)
-{
- unsigned int i = 0;
-
- if (!ctx || !new || !old || !sid || !num) return NT_STATUS_INVALID_PARAMETER;
-
- *num += 1;
-
- if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0)
- return NT_STATUS_NO_MEMORY;
-
- for (i = 0; i < *num - 1; i ++)
- sec_ace_copy(&(*new)[i], &old[i]);
-
- (*new)[i].type = 0;
- (*new)[i].flags = 0;
- (*new)[i].size = SEC_ACE_HEADER_SIZE + sid_size(sid);
- (*new)[i].info.mask = mask;
- sid_copy(&(*new)[i].trustee, sid);
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- modify SID's permissions at ACL
-********************************************************************/
-
-NTSTATUS sec_ace_mod_sid(SEC_ACE *ace, size_t num, DOM_SID *sid, uint32 mask)
-{
- unsigned int i = 0;
-
- if (!ace || !sid) return NT_STATUS_INVALID_PARAMETER;
-
- for (i = 0; i < num; i ++) {
- if (sid_compare(&ace[i].trustee, sid) == 0) {
- ace[i].info.mask = mask;
- return NT_STATUS_OK;
- }
- }
- return NT_STATUS_NOT_FOUND;
-}
-
-/*******************************************************************
- delete SID from ACL
-********************************************************************/
-
-static NTSTATUS sec_ace_del_sid(TALLOC_CTX *ctx, SEC_ACE **new, SEC_ACE *old, uint32 *num, DOM_SID *sid)
-{
- unsigned int i = 0;
- unsigned int n_del = 0;
-
- if (!ctx || !new || !old || !sid || !num) return NT_STATUS_INVALID_PARAMETER;
-
- if((new[0] = (SEC_ACE *) talloc_zero(ctx, (*num) * sizeof(SEC_ACE))) == 0)
- return NT_STATUS_NO_MEMORY;
-
- for (i = 0; i < *num; i ++) {
- if (sid_compare(&old[i].trustee, sid) != 0)
- sec_ace_copy(&(*new)[i], &old[i]);
- else
- n_del ++;
- }
- if (n_del == 0)
- return NT_STATUS_NOT_FOUND;
- else {
- *num -= n_del;
- return NT_STATUS_OK;
- }
-}
-
-/*******************************************************************
- Create a SEC_ACL structure.
-********************************************************************/
-
-SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, uint16 revision, int num_aces, SEC_ACE *ace_list)
-{
- SEC_ACL *dst;
- int i;
-
- if((dst = (SEC_ACL *)talloc_zero(ctx,sizeof(SEC_ACL))) == NULL)
- return NULL;
-
- dst->revision = revision;
- dst->num_aces = num_aces;
- dst->size = SEC_ACL_HEADER_SIZE;
-
- /* Now we need to return a non-NULL address for the ace list even
- if the number of aces required is zero. This is because there
- is a distinct difference between a NULL ace and an ace with zero
- entries in it. This is achieved by checking that num_aces is a
- positive number. */
-
- if ((num_aces) &&
- ((dst->ace = (SEC_ACE *)talloc(ctx, sizeof(SEC_ACE) * num_aces))
- == NULL)) {
- return NULL;
- }
-
- for (i = 0; i < num_aces; i++) {
- dst->ace[i] = ace_list[i]; /* Structure copy. */
- dst->size += ace_list[i].size;
- }
-
- return dst;
-}
-
-/*******************************************************************
- Duplicate a SEC_ACL structure.
-********************************************************************/
-
-SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src)
-{
- if(src == NULL)
- return NULL;
-
- return make_sec_acl(ctx, src->revision, src->num_aces, src->ace);
-}
-
-/*******************************************************************
Reads or writes a SEC_ACL structure.
First of the xx_io_xx functions that allocates its data structures
@@ -347,330 +172,6 @@ BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth)
}
/*******************************************************************
- Works out the linearization size of a SEC_DESC.
-********************************************************************/
-
-size_t sec_desc_size(SEC_DESC *psd)
-{
- size_t offset;
-
- if (!psd) return 0;
-
- offset = SEC_DESC_HEADER_SIZE;
-
- /* don't align */
-
- if (psd->owner_sid != NULL)
- offset += sid_size(psd->owner_sid);
-
- if (psd->grp_sid != NULL)
- offset += sid_size(psd->grp_sid);
-
- if (psd->sacl != NULL)
- offset += psd->sacl->size;
-
- if (psd->dacl != NULL)
- offset += psd->dacl->size;
-
- return offset;
-}
-
-/*******************************************************************
- Compares two SEC_ACE structures
-********************************************************************/
-
-BOOL sec_ace_equal(SEC_ACE *s1, SEC_ACE *s2)
-{
- /* Trivial case */
-
- if (!s1 && !s2) return True;
-
- /* Check top level stuff */
-
- if (s1->type != s2->type || s1->flags != s2->flags ||
- s1->info.mask != s2->info.mask) {
- return False;
- }
-
- /* Check SID */
-
- if (!sid_equal(&s1->trustee, &s2->trustee)) {
- return False;
- }
-
- return True;
-}
-
-/*******************************************************************
- Compares two SEC_ACL structures
-********************************************************************/
-
-BOOL sec_acl_equal(SEC_ACL *s1, SEC_ACL *s2)
-{
- unsigned int i, j;
-
- /* Trivial cases */
-
- if (!s1 && !s2) return True;
- if (!s1 || !s2) return False;
-
- /* Check top level stuff */
-
- if (s1->revision != s2->revision) {
- DEBUG(10, ("sec_acl_equal(): revision differs (%d != %d)\n",
- s1->revision, s2->revision));
- return False;
- }
-
- if (s1->num_aces != s2->num_aces) {
- DEBUG(10, ("sec_acl_equal(): num_aces differs (%d != %d)\n",
- s1->revision, s2->revision));
- return False;
- }
-
- /* The ACEs could be in any order so check each ACE in s1 against
- each ACE in s2. */
-
- for (i = 0; i < s1->num_aces; i++) {
- BOOL found = False;
-
- for (j = 0; j < s2->num_aces; j++) {
- if (sec_ace_equal(&s1->ace[i], &s2->ace[j])) {
- found = True;
- break;
- }
- }
-
- if (!found) return False;
- }
-
- return True;
-}
-
-/*******************************************************************
- Compares two SEC_DESC structures
-********************************************************************/
-
-BOOL sec_desc_equal(SEC_DESC *s1, SEC_DESC *s2)
-{
- /* Trivial case */
-
- if (!s1 && !s2) {
- goto done;
- }
-
- /* Check top level stuff */
-
- if (s1->revision != s2->revision) {
- DEBUG(10, ("sec_desc_equal(): revision differs (%d != %d)\n",
- s1->revision, s2->revision));
- return False;
- }
-
- if (s1->type!= s2->type) {
- DEBUG(10, ("sec_desc_equal(): type differs (%d != %d)\n",
- s1->type, s2->type));
- return False;
- }
-
- /* Check owner and group */
-
- if (!sid_equal(s1->owner_sid, s2->owner_sid)) {
- fstring str1, str2;
-
- sid_to_string(str1, s1->owner_sid);
- sid_to_string(str2, s2->owner_sid);
-
- DEBUG(10, ("sec_desc_equal(): owner differs (%s != %s)\n",
- str1, str2));
- return False;
- }
-
- if (!sid_equal(s1->grp_sid, s2->grp_sid)) {
- fstring str1, str2;
-
- sid_to_string(str1, s1->grp_sid);
- sid_to_string(str2, s2->grp_sid);
-
- DEBUG(10, ("sec_desc_equal(): group differs (%s != %s)\n",
- str1, str2));
- return False;
- }
-
- /* Check ACLs present in one but not the other */
-
- if ((s1->dacl && !s2->dacl) || (!s1->dacl && s2->dacl) ||
- (s1->sacl && !s2->sacl) || (!s1->sacl && s2->sacl)) {
- DEBUG(10, ("sec_desc_equal(): dacl or sacl not present\n"));
- return False;
- }
-
- /* Sigh - we have to do it the hard way by iterating over all
- the ACEs in the ACLs */
-
- if (!sec_acl_equal(s1->dacl, s2->dacl) ||
- !sec_acl_equal(s1->sacl, s2->sacl)) {
- DEBUG(10, ("sec_desc_equal(): dacl/sacl list not equal\n"));
- return False;
- }
-
- done:
- DEBUG(10, ("sec_desc_equal(): secdescs are identical\n"));
- return True;
-}
-
-/*******************************************************************
- Merge part of security descriptor old_sec in to the empty sections of
- security descriptor new_sec.
-********************************************************************/
-
-SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BUF *old_sdb)
-{
- DOM_SID *owner_sid, *group_sid;
- SEC_DESC_BUF *return_sdb;
- SEC_ACL *dacl, *sacl;
- SEC_DESC *psd = NULL;
- uint16 secdesc_type;
- size_t secdesc_size;
-
- /* Copy over owner and group sids. There seems to be no flag for
- this so just check the pointer values. */
-
- owner_sid = new_sdb->sec->owner_sid ? new_sdb->sec->owner_sid :
- old_sdb->sec->owner_sid;
-
- group_sid = new_sdb->sec->grp_sid ? new_sdb->sec->grp_sid :
- old_sdb->sec->grp_sid;
-
- secdesc_type = new_sdb->sec->type;
-
- /* Ignore changes to the system ACL. This has the effect of making
- changes through the security tab audit button not sticking.
- Perhaps in future Samba could implement these settings somehow. */
-
- sacl = NULL;
- secdesc_type &= ~SEC_DESC_SACL_PRESENT;
-
- /* Copy across discretionary ACL */
-
- if (secdesc_type & SEC_DESC_DACL_PRESENT) {
- dacl = new_sdb->sec->dacl;
- } else {
- dacl = old_sdb->sec->dacl;
- }
-
- /* Create new security descriptor from bits */
-
- psd = make_sec_desc(ctx, new_sdb->sec->revision,
- owner_sid, group_sid, sacl, dacl, &secdesc_size);
-
- return_sdb = make_sec_desc_buf(ctx, secdesc_size, psd);
-
- return(return_sdb);
-}
-
-/*******************************************************************
- Creates a SEC_DESC structure
-********************************************************************/
-
-SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision,
- DOM_SID *owner_sid, DOM_SID *grp_sid,
- SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size)
-{
- SEC_DESC *dst;
- uint32 offset = 0;
-
- *sd_size = 0;
-
- if(( dst = (SEC_DESC *)talloc_zero(ctx, sizeof(SEC_DESC))) == NULL)
- return NULL;
-
- dst->revision = revision;
- dst->type = SEC_DESC_SELF_RELATIVE;
-
- if (sacl) dst->type |= SEC_DESC_SACL_PRESENT;
- if (dacl) dst->type |= SEC_DESC_DACL_PRESENT;
-
- dst->off_owner_sid = 0;
- dst->off_grp_sid = 0;
- dst->off_sacl = 0;
- dst->off_dacl = 0;
-
- if(owner_sid && ((dst->owner_sid = sid_dup_talloc(ctx,owner_sid)) == NULL))
- goto error_exit;
-
- if(grp_sid && ((dst->grp_sid = sid_dup_talloc(ctx,grp_sid)) == NULL))
- goto error_exit;
-
- if(sacl && ((dst->sacl = dup_sec_acl(ctx, sacl)) == NULL))
- goto error_exit;
-
- if(dacl && ((dst->dacl = dup_sec_acl(ctx, dacl)) == NULL))
- goto error_exit;
-
- offset = SEC_DESC_HEADER_SIZE;
-
- /*
- * Work out the linearization sizes.
- */
-
- if (dst->sacl != NULL) {
- dst->off_sacl = offset;
- offset += dst->sacl->size;
- }
-
- if (dst->dacl != NULL) {
- dst->off_dacl = offset;
- offset += dst->dacl->size;
- }
-
- if (dst->owner_sid != NULL) {
- dst->off_owner_sid = offset;
- offset += sid_size(dst->owner_sid);
- }
-
- if (dst->grp_sid != NULL) {
- dst->off_grp_sid = offset;
- offset += sid_size(dst->grp_sid);
- }
-
- *sd_size = (size_t)offset;
- return dst;
-
-error_exit:
-
- *sd_size = 0;
- return NULL;
-}
-
-/*******************************************************************
- Duplicate a SEC_DESC structure.
-********************************************************************/
-
-SEC_DESC *dup_sec_desc( TALLOC_CTX *ctx, SEC_DESC *src)
-{
- size_t dummy;
-
- if(src == NULL)
- return NULL;
-
- return make_sec_desc( ctx, src->revision,
- src->owner_sid, src->grp_sid, src->sacl,
- src->dacl, &dummy);
-}
-
-/*******************************************************************
- Creates a SEC_DESC structure with typical defaults.
-********************************************************************/
-
-SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, DOM_SID *owner_sid, DOM_SID *grp_sid,
- SEC_ACL *dacl, size_t *sd_size)
-{
- return make_sec_desc(ctx, SEC_DESC_REVISION,
- owner_sid, grp_sid, NULL, dacl, sd_size);
-}
-
-/*******************************************************************
Reads or writes a SEC_DESC structure.
If reading and the *ppsd = NULL, allocates the structure.
********************************************************************/
@@ -806,42 +307,6 @@ BOOL sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth)
}
/*******************************************************************
- Creates a SEC_DESC_BUF structure.
-********************************************************************/
-
-SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc)
-{
- SEC_DESC_BUF *dst;
-
- if((dst = (SEC_DESC_BUF *)talloc_zero(ctx, sizeof(SEC_DESC_BUF))) == NULL)
- return NULL;
-
- /* max buffer size (allocated size) */
- dst->max_len = (uint32)len;
- dst->len = (uint32)len;
-
- if(sec_desc && ((dst->sec = dup_sec_desc(ctx, sec_desc)) == NULL)) {
- return NULL;
- }
-
- dst->ptr = 0x1;
-
- return dst;
-}
-
-/*******************************************************************
- Duplicates a SEC_DESC_BUF structure.
-********************************************************************/
-
-SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src)
-{
- if(src == NULL)
- return NULL;
-
- return make_sec_desc_buf( ctx, src->len, src->sec);
-}
-
-/*******************************************************************
Reads or writes a SEC_DESC_BUF structure.
********************************************************************/
@@ -899,193 +364,3 @@ BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int
return True;
}
-
-/*******************************************************************
- Add a new SID with its permissions to SEC_DESC.
-********************************************************************/
-
-NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size)
-{
- SEC_DESC *sd = 0;
- SEC_ACL *dacl = 0;
- SEC_ACE *ace = 0;
- NTSTATUS status;
-
- *sd_size = 0;
-
- if (!ctx || !psd || !sid || !sd_size)
- return NT_STATUS_INVALID_PARAMETER;
-
- status = sec_ace_add_sid(ctx, &ace, psd[0]->dacl->ace, &psd[0]->dacl->num_aces, sid, mask);
-
- if (!NT_STATUS_IS_OK(status))
- return status;
-
- if (!(dacl = make_sec_acl(ctx, psd[0]->dacl->revision, psd[0]->dacl->num_aces, ace)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!(sd = make_sec_desc(ctx, psd[0]->revision, psd[0]->owner_sid,
- psd[0]->grp_sid, psd[0]->sacl, dacl, sd_size)))
- return NT_STATUS_UNSUCCESSFUL;
-
- *psd = sd;
- sd = 0;
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- Modify a SID's permissions in a SEC_DESC.
-********************************************************************/
-
-NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask)
-{
- NTSTATUS status;
-
- if (!sd || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- status = sec_ace_mod_sid(sd->dacl->ace, sd->dacl->num_aces, sid, mask);
-
- if (!NT_STATUS_IS_OK(status))
- return status;
-
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- Delete a SID from a SEC_DESC.
-********************************************************************/
-
-NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size)
-{
- SEC_DESC *sd = 0;
- SEC_ACL *dacl = 0;
- SEC_ACE *ace = 0;
- NTSTATUS status;
-
- *sd_size = 0;
-
- if (!ctx || !psd[0] || !sid || !sd_size)
- return NT_STATUS_INVALID_PARAMETER;
-
- status = sec_ace_del_sid(ctx, &ace, psd[0]->dacl->ace, &psd[0]->dacl->num_aces, sid);
-
- if (!NT_STATUS_IS_OK(status))
- return status;
-
- if (!(dacl = make_sec_acl(ctx, psd[0]->dacl->revision, psd[0]->dacl->num_aces, ace)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!(sd = make_sec_desc(ctx, psd[0]->revision, psd[0]->owner_sid,
- psd[0]->grp_sid, psd[0]->sacl, dacl, sd_size)))
- return NT_STATUS_UNSUCCESSFUL;
-
- *psd = sd;
- sd = 0;
- return NT_STATUS_OK;
-}
-
-/*******************************************************************
- Comparison function to sort non-inherited first.
-*******************************************************************/
-
-static int nt_ace_inherit_comp( SEC_ACE *a1, SEC_ACE *a2)
-{
- int a1_inh = a1->flags & SEC_ACE_FLAG_INHERITED_ACE;
- int a2_inh = a2->flags & SEC_ACE_FLAG_INHERITED_ACE;
-
- if (a1_inh == a2_inh)
- return 0;
-
- if (!a1_inh && a2_inh)
- return -1;
- return 1;
-}
-
-/*******************************************************************
- Comparison function to apply the order explained below in a group.
-*******************************************************************/
-
-static int nt_ace_canon_comp( SEC_ACE *a1, SEC_ACE *a2)
-{
- if ((a1->type == SEC_ACE_TYPE_ACCESS_DENIED) &&
- (a2->type != SEC_ACE_TYPE_ACCESS_DENIED))
- return -1;
-
- if ((a2->type == SEC_ACE_TYPE_ACCESS_DENIED) &&
- (a1->type != SEC_ACE_TYPE_ACCESS_DENIED))
- return 1;
-
- /* Both access denied or access allowed. */
-
- /* 1. ACEs that apply to the object itself */
-
- if (!(a1->flags & SEC_ACE_FLAG_INHERIT_ONLY) &&
- (a2->flags & SEC_ACE_FLAG_INHERIT_ONLY))
- return -1;
- else if (!(a2->flags & SEC_ACE_FLAG_INHERIT_ONLY) &&
- (a1->flags & SEC_ACE_FLAG_INHERIT_ONLY))
- return 1;
-
- /* 2. ACEs that apply to a subobject of the object, such as
- * a property set or property. */
-
- if (a1->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT) &&
- !(a2->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT)))
- return -1;
- else if (a2->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT) &&
- !(a1->flags & (SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_OBJECT_INHERIT)))
- return 1;
-
- return 0;
-}
-
-/*******************************************************************
- Functions to convert a SEC_DESC ACE DACL list into canonical order.
- JRA.
-
---- from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/order_of_aces_in_a_dacl.asp
-
-The following describes the preferred order:
-
- To ensure that noninherited ACEs have precedence over inherited ACEs,
- place all noninherited ACEs in a group before any inherited ACEs.
- This ordering ensures, for example, that a noninherited access-denied ACE
- is enforced regardless of any inherited ACE that allows access.
-
- Within the groups of noninherited ACEs and inherited ACEs, order ACEs according to ACE type, as the following shows:
- 1. Access-denied ACEs that apply to the object itself
- 2. Access-denied ACEs that apply to a subobject of the object, such as a property set or property
- 3. Access-allowed ACEs that apply to the object itself
- 4. Access-allowed ACEs that apply to a subobject of the object"
-
-********************************************************************/
-
-void dacl_sort_into_canonical_order(SEC_ACE *srclist, unsigned int num_aces)
-{
- unsigned int i;
-
- if (!srclist || num_aces == 0)
- return;
-
- /* Sort so that non-inherited ACE's come first. */
- qsort( srclist, num_aces, sizeof(srclist[0]), QSORT_CAST nt_ace_inherit_comp);
-
- /* Find the boundary between non-inherited ACEs. */
- for (i = 0; i < num_aces; i++ ) {
- SEC_ACE *curr_ace = &srclist[i];
-
- if (curr_ace->flags & SEC_ACE_FLAG_INHERITED_ACE)
- break;
- }
-
- /* i now points at entry number of the first inherited ACE. */
-
- /* Sort the non-inherited ACEs. */
- if (i)
- qsort( srclist, i, sizeof(srclist[0]), QSORT_CAST nt_ace_canon_comp);
-
- /* Now sort the inherited ACEs. */
- if (num_aces - i)
- qsort( &srclist[i], num_aces - i, sizeof(srclist[0]), QSORT_CAST nt_ace_canon_comp);
-}
diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c
index 7ca9bccab46..65f16414a0a 100644
--- a/source/rpc_parse/parse_spoolss.c
+++ b/source/rpc_parse/parse_spoolss.c
@@ -916,12 +916,12 @@ BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u,
{
DEBUG(5,("make_spoolss_q_open_printer_ex\n"));
q_u->printername_ptr = (printername!=NULL)?1:0;
- init_unistr2(&q_u->printername, printername, strlen(printername)+1);
+ init_unistr2(&q_u->printername, printername, UNI_STR_TERMINATE);
q_u->printer_default.datatype_ptr = 0;
/*
q_u->printer_default.datatype_ptr = (datatype!=NULL)?1:0;
- init_unistr2(&q_u->printer_default.datatype, datatype, strlen(datatype));
+ init_unistr2(&q_u->printer_default.datatype, datatype, UNI_FLAGS_NONE);
*/
q_u->printer_default.devmode_cont.size=0;
q_u->printer_default.devmode_cont.devmode_ptr=0;
@@ -937,8 +937,8 @@ BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u,
q_u->user_ctr.user1.major=2;
q_u->user_ctr.user1.minor=0;
q_u->user_ctr.user1.processor=0;
- init_unistr2(&q_u->user_ctr.user1.client_name, clientname, strlen(clientname)+1);
- init_unistr2(&q_u->user_ctr.user1.user_name, user_name, strlen(user_name)+1);
+ init_unistr2(&q_u->user_ctr.user1.client_name, clientname, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->user_ctr.user1.user_name, user_name, UNI_STR_TERMINATE);
return True;
}
@@ -963,7 +963,7 @@ BOOL make_spoolss_q_addprinterex(
ZERO_STRUCTP(q_u);
q_u->server_name_ptr = (srv_name!=NULL)?1:0;
- init_unistr2(&q_u->server_name, srv_name, strlen(srv_name));
+ init_unistr2(&q_u->server_name, srv_name, UNI_FLAGS_NONE);
q_u->level = level;
@@ -991,8 +991,8 @@ BOOL make_spoolss_q_addprinterex(
q_u->user_ctr.user1.major=2;
q_u->user_ctr.user1.minor=0;
q_u->user_ctr.user1.processor=0;
- init_unistr2(&q_u->user_ctr.user1.client_name, clientname, strlen(clientname)+1);
- init_unistr2(&q_u->user_ctr.user1.user_name, user_name, strlen(user_name)+1);
+ init_unistr2(&q_u->user_ctr.user1.client_name, clientname, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->user_ctr.user1.user_name, user_name, UNI_STR_TERMINATE);
q_u->user_ctr.user1.size=q_u->user_ctr.user1.user_name.uni_str_len +
q_u->user_ctr.user1.client_name.uni_str_len + 2;
@@ -1187,15 +1187,13 @@ BOOL make_spoolss_q_deleteprinterdriver(
/* these must be NULL terminated or else NT4 will
complain about invalid parameters --jerry */
- init_unistr2(&q_u->server, server, strlen(server)+1);
- init_unistr2(&q_u->arch, arch, strlen(arch)+1);
- init_unistr2(&q_u->driver, driver, strlen(driver)+1);
-
+ init_unistr2(&q_u->server, server, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->arch, arch, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->driver, driver, UNI_STR_TERMINATE);
return True;
}
-
/*******************************************************************
* make a structure.
********************************************************************/
@@ -1209,7 +1207,7 @@ BOOL make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u,
DEBUG(5,("make_spoolss_q_getprinterdata\n"));
q_u->handle = *handle;
- init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1);
+ init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE);
q_u->size = size;
return True;
@@ -1229,8 +1227,8 @@ BOOL make_spoolss_q_getprinterdataex(SPOOL_Q_GETPRINTERDATAEX *q_u,
DEBUG(5,("make_spoolss_q_getprinterdataex\n"));
q_u->handle = *handle;
- init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1);
- init_unistr2(&q_u->keyname, keyname, strlen(keyname) + 1);
+ init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->keyname, keyname, UNI_STR_TERMINATE);
q_u->size = size;
return True;
@@ -5317,7 +5315,7 @@ BOOL smb_io_unibuffer(const char *desc, UNISTR2 *buffer, prs_struct *ps, int dep
{
if (buffer==NULL) return False;
- buffer->undoc=0;
+ buffer->offset=0;
buffer->uni_str_len=buffer->uni_max_len;
if(!prs_uint32("buffer_size", ps, depth, &buffer->uni_max_len))
@@ -5374,7 +5372,7 @@ BOOL make_spoolss_q_addprinterdriver(TALLOC_CTX *mem_ctx,
DEBUG(5,("make_spoolss_q_addprinterdriver\n"));
q_u->server_name_ptr = (srv_name!=NULL)?1:0;
- init_unistr2(&q_u->server_name, srv_name, strlen(srv_name)+1);
+ init_unistr2(&q_u->server_name, srv_name, UNI_STR_TERMINATE);
q_u->level = level;
@@ -6162,7 +6160,7 @@ BOOL make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
uint32 size)
{
memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
- init_unistr2(&q_u->key, key, strlen(key)+1);
+ init_unistr2(&q_u->key, key, UNI_STR_TERMINATE);
q_u->size = size;
return True;
@@ -6175,7 +6173,7 @@ BOOL make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND
{
memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
q_u->type = data_type;
- init_unistr2(&q_u->value, value, strlen(value)+1);
+ init_unistr2(&q_u->value, value, UNI_STR_TERMINATE);
q_u->max_len = q_u->real_len = data_size;
q_u->data = (unsigned char *)data;
@@ -6191,8 +6189,8 @@ BOOL make_spoolss_q_setprinterdataex(SPOOL_Q_SETPRINTERDATAEX *q_u, const POLICY
{
memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
q_u->type = data_type;
- init_unistr2(&q_u->value, value, strlen(value)+1);
- init_unistr2(&q_u->key, key, strlen(key)+1);
+ init_unistr2(&q_u->value, value, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->key, key, UNI_STR_TERMINATE);
q_u->max_len = q_u->real_len = data_size;
q_u->data = (unsigned char *)data;
@@ -6589,7 +6587,7 @@ BOOL make_spoolss_q_replyopenprinter(SPOOL_Q_REPLYOPENPRINTER *q_u,
if (q_u == NULL)
return False;
- init_unistr2(&q_u->string, string, strlen(string)+1);
+ init_unistr2(&q_u->string, string, UNI_STR_TERMINATE);
q_u->printer=printer;
q_u->type=type;
@@ -7092,7 +7090,7 @@ BOOL make_spoolss_q_enumprinterkey(SPOOL_Q_ENUMPRINTERKEY *q_u,
DEBUG(5,("make_spoolss_q_enumprinterkey\n"));
memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
- init_unistr2(&q_u->key, key, strlen(key)+1);
+ init_unistr2(&q_u->key, key, UNI_STR_TERMINATE);
q_u->size = size;
return True;
@@ -7161,7 +7159,7 @@ BOOL make_spoolss_q_deleteprinterkey(SPOOL_Q_DELETEPRINTERKEY *q_u,
DEBUG(5,("make_spoolss_q_deleteprinterkey\n"));
memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
- init_unistr2(&q_u->keyname, keyname, strlen(keyname)+1);
+ init_unistr2(&q_u->keyname, keyname, UNI_STR_TERMINATE);
return True;
}
@@ -7382,8 +7380,8 @@ BOOL make_spoolss_q_getprintprocessordirectory(SPOOL_Q_GETPRINTPROCESSORDIRECTOR
{
DEBUG(5,("make_spoolss_q_getprintprocessordirectory\n"));
- init_unistr2(&q_u->name, name, strlen(name)+1);
- init_unistr2(&q_u->environment, environment, strlen(environment)+1);
+ init_unistr2(&q_u->name, name, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->environment, environment, UNI_STR_TERMINATE);
q_u->level = level;
@@ -7509,7 +7507,7 @@ BOOL make_spoolss_q_setform(SPOOL_Q_SETFORM *q_u, POLICY_HND *handle,
q_u->level = level;
q_u->level2 = level;
memcpy(&q_u->form, form, sizeof(FORM));
- init_unistr2(&q_u->name, form_name, strlen(form_name) + 1);
+ init_unistr2(&q_u->name, form_name, UNI_STR_TERMINATE);
return True;
}
@@ -7522,7 +7520,7 @@ BOOL make_spoolss_q_deleteform(SPOOL_Q_DELETEFORM *q_u, POLICY_HND *handle,
const char *form)
{
memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
- init_unistr2(&q_u->name, form, strlen(form) + 1);
+ init_unistr2(&q_u->name, form, UNI_STR_TERMINATE);
return True;
}
@@ -7536,7 +7534,7 @@ BOOL make_spoolss_q_getform(SPOOL_Q_GETFORM *q_u, POLICY_HND *handle,
{
memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
q_u->level = level;
- init_unistr2(&q_u->formname, formname, strlen(formname) + 1);
+ init_unistr2(&q_u->formname, formname, UNI_STR_TERMINATE);
q_u->buffer=buffer;
q_u->offered=offered;
@@ -7642,17 +7640,9 @@ BOOL make_spoolss_q_startdocprinter(SPOOL_Q_STARTDOCPRINTER *q_u,
ctr->docinfo.doc_info_1.p_outputfile = outputfile ? 1 : 0;
ctr->docinfo.doc_info_1.p_datatype = datatype ? 1 : 0;
- if (docname)
- init_unistr2(&ctr->docinfo.doc_info_1.docname, docname,
- strlen(docname) + 1);
-
- if (outputfile)
- init_unistr2(&ctr->docinfo.doc_info_1.outputfile, outputfile,
- strlen(outputfile) + 1);
-
- if (datatype)
- init_unistr2(&ctr->docinfo.doc_info_1.datatype, datatype,
- strlen(datatype) + 1);
+ init_unistr2(&ctr->docinfo.doc_info_1.docname, docname, UNI_STR_TERMINATE);
+ init_unistr2(&ctr->docinfo.doc_info_1.outputfile, outputfile, UNI_STR_TERMINATE);
+ init_unistr2(&ctr->docinfo.doc_info_1.datatype, datatype, UNI_STR_TERMINATE);
break;
case 2:
@@ -7701,7 +7691,7 @@ BOOL make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u,
POLICY_HND *handle, char *valuename)
{
memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
- init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1);
+ init_unistr2(&q_u->valuename, valuename, UNI_STR_TERMINATE);
return True;
}
@@ -7715,8 +7705,8 @@ BOOL make_spoolss_q_deleteprinterdataex(SPOOL_Q_DELETEPRINTERDATAEX *q_u,
char *value)
{
memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
- init_unistr2(&q_u->valuename, value, strlen(value) + 1);
- init_unistr2(&q_u->keyname, key, strlen(key) + 1);
+ init_unistr2(&q_u->valuename, value, UNI_STR_TERMINATE);
+ init_unistr2(&q_u->keyname, key, UNI_STR_TERMINATE);
return True;
}
@@ -7736,8 +7726,7 @@ BOOL make_spoolss_q_rffpcnex(SPOOL_Q_RFFPCNEX *q_u, POLICY_HND *handle,
q_u->localmachine_ptr = 1;
- init_unistr2(&q_u->localmachine, localmachine,
- strlen(localmachine) + 1);
+ init_unistr2(&q_u->localmachine, localmachine, UNI_STR_TERMINATE);
q_u->printerlocal = printerlocal;
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c
index bbb5193ddcd..6349fc16325 100644
--- a/source/rpc_parse/parse_srv.c
+++ b/source/rpc_parse/parse_srv.c
@@ -36,8 +36,7 @@ void init_srv_share_info0_str(SH_INFO_0_STR *sh0, const char *net_name)
{
DEBUG(5,("init_srv_share_info0_str\n"));
- if(net_name)
- init_unistr2(&sh0->uni_netname, net_name, strlen(net_name)+1);
+ init_unistr2(&sh0->uni_netname, net_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -101,10 +100,8 @@ void init_srv_share_info1_str(SH_INFO_1_STR *sh1, const char *net_name, const ch
{
DEBUG(5,("init_srv_share_info1_str\n"));
- if(net_name)
- init_unistr2(&sh1->uni_netname, net_name, strlen(net_name)+1);
- if(remark)
- init_unistr2(&sh1->uni_remark, remark, strlen(remark)+1);
+ init_unistr2(&sh1->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh1->uni_remark, remark, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -184,14 +181,10 @@ void init_srv_share_info2_str(SH_INFO_2_STR *sh2,
{
DEBUG(5,("init_srv_share_info2_str\n"));
- if (net_name)
- init_unistr2(&sh2->uni_netname, net_name, strlen(net_name)+1);
- if (remark)
- init_unistr2(&sh2->uni_remark, remark, strlen(remark)+1);
- if (path)
- init_unistr2(&sh2->uni_path, path, strlen(path)+1);
- if (passwd)
- init_unistr2(&sh2->uni_passwd, passwd, strlen(passwd)+1);
+ init_unistr2(&sh2->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_remark, remark, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_path, path, UNI_STR_TERMINATE);
+ init_unistr2(&sh2->uni_passwd, passwd, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -296,10 +289,8 @@ void init_srv_share_info501_str(SH_INFO_501_STR *sh501,
{
DEBUG(5,("init_srv_share_info501_str\n"));
- if(net_name)
- init_unistr2(&sh501->uni_netname, net_name, strlen(net_name)+1);
- if(remark)
- init_unistr2(&sh501->uni_remark, remark, strlen(remark)+1);
+ init_unistr2(&sh501->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh501->uni_remark, remark, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -446,17 +437,13 @@ void init_srv_share_info502_str(SH_INFO_502_STR *sh502str,
{
DEBUG(5,("init_srv_share_info502_str\n"));
- if(net_name)
- init_unistr2(&sh502str->uni_netname, net_name, strlen(net_name)+1);
- if(remark)
- init_unistr2(&sh502str->uni_remark, remark, strlen(remark)+1);
- if(path)
- init_unistr2(&sh502str->uni_path, path, strlen(path)+1);
- if(passwd)
- init_unistr2(&sh502str->uni_passwd, passwd, strlen(passwd)+1);
- sh502str->sd = psd;
+ init_unistr2(&sh502str->uni_netname, net_name, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_remark, remark, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_path, path, UNI_STR_TERMINATE);
+ init_unistr2(&sh502str->uni_passwd, passwd, UNI_STR_TERMINATE);
+ sh502str->sd = psd;
sh502str->reserved = 0;
- sh502str->sd_size = sd_size;
+ sh502str->sd_size = sd_size;
}
/*******************************************************************
@@ -551,8 +538,7 @@ void init_srv_share_info1004_str(SH_INFO_1004_STR *sh1004, const char *remark)
{
DEBUG(5,("init_srv_share_info1004_str\n"));
- if(remark)
- init_unistr2(&sh1004->uni_remark, remark, strlen(remark)+1);
+ init_unistr2(&sh1004->uni_remark, remark, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -659,8 +645,7 @@ void init_srv_share_info1007_str(SH_INFO_1007_STR *sh1007, const char *alternate
{
DEBUG(5,("init_srv_share_info1007_str\n"));
- if(alternate_directory_name)
- init_unistr2(&sh1007->uni_AlternateDirectoryName, alternate_directory_name, strlen(alternate_directory_name)+1);
+ init_unistr2(&sh1007->uni_AlternateDirectoryName, alternate_directory_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -1474,7 +1459,7 @@ void init_srv_q_net_share_add(SRV_Q_NET_SHARE_ADD *q, const char *srvname,
const char *path, const char *passwd)
{
q->ptr_srv_name = 1;
- init_unistr2(&q->uni_srv_name, srvname, strlen(srvname) +1);
+ init_unistr2(&q->uni_srv_name, srvname, UNI_STR_TERMINATE);
q->info.switch_value = q->info_level = 2;
q->info.ptr_share_ctr = 1;
@@ -1525,8 +1510,8 @@ void init_srv_q_net_share_del(SRV_Q_NET_SHARE_DEL *del, const char *srvname,
const char *sharename)
{
del->ptr_srv_name = 1;
- init_unistr2(&del->uni_srv_name, srvname, strlen(srvname) +1 );
- init_unistr2(&del->uni_share_name, sharename, strlen(sharename) + 1);
+ init_unistr2(&del->uni_srv_name, srvname, UNI_STR_TERMINATE);
+ init_unistr2(&del->uni_share_name, sharename, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -1589,7 +1574,7 @@ void init_srv_sess_info0_str(SESS_INFO_0_STR *ss0, const char *name)
{
DEBUG(5,("init_srv_sess_info0_str\n"));
- init_unistr2(&ss0->uni_name, name, strlen(name)+1);
+ init_unistr2(&ss0->uni_name, name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -1703,8 +1688,8 @@ void init_srv_sess_info1_str(SESS_INFO_1_STR *ss1, const char *name, const char
{
DEBUG(5,("init_srv_sess_info1_str\n"));
- init_unistr2(&ss1->uni_name, name, strlen(name)+1);
- init_unistr2(&ss1->uni_user, user, strlen(user)+1);
+ init_unistr2(&ss1->uni_name, name, UNI_STR_TERMINATE);
+ init_unistr2(&ss1->uni_user, user, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -2075,8 +2060,8 @@ void init_srv_conn_info1_str(CONN_INFO_1_STR *ss1, const char *usr_name, const c
{
DEBUG(5,("init_srv_conn_info1_str\n"));
- init_unistr2(&ss1->uni_usr_name, usr_name, strlen(usr_name)+1);
- init_unistr2(&ss1->uni_net_name, net_name, strlen(net_name)+1);
+ init_unistr2(&ss1->uni_usr_name, usr_name, UNI_STR_TERMINATE);
+ init_unistr2(&ss1->uni_net_name, net_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -2365,8 +2350,8 @@ void init_srv_file_info3_str(FILE_INFO_3_STR *fi3, const char *user_name, const
{
DEBUG(5,("init_srv_file_info3_str\n"));
- init_unistr2(&fi3->uni_path_name, path_name, strlen(path_name)+1);
- init_unistr2(&fi3->uni_user_name, user_name, strlen(user_name)+1);
+ init_unistr2(&fi3->uni_path_name, path_name, UNI_STR_TERMINATE);
+ init_unistr2(&fi3->uni_user_name, user_name, UNI_STR_TERMINATE);
}
/*******************************************************************
@@ -2628,7 +2613,7 @@ void init_srv_q_net_file_close(SRV_Q_NET_FILE_CLOSE *q_n, const char *server,
uint32 file_id)
{
q_n->ptr_srv_name = 1;
- init_unistr2(&q_n->uni_srv_name, server, strlen(server) + 1);
+ init_unistr2(&q_n->uni_srv_name, server, UNI_STR_TERMINATE);
q_n->file_id = file_id;
}
@@ -3586,6 +3571,5 @@ BOOL srv_io_r_net_file_set_secdesc(const char *desc, SRV_R_NET_FILE_SET_SECDESC
void init_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD *q_u, const char *server)
{
q_u->ptr_srv_name = 1;
- init_unistr2(&q_u->uni_srv_name, server, strlen(server) + 1);
+ init_unistr2(&q_u->uni_srv_name, server, UNI_STR_TERMINATE);
}
-
diff --git a/source/rpc_server/srv_dfs_nt.c b/source/rpc_server/srv_dfs_nt.c
index 3470ad99b45..751cb6e6425 100644
--- a/source/rpc_server/srv_dfs_nt.c
+++ b/source/rpc_server/srv_dfs_nt.c
@@ -198,7 +198,7 @@ static BOOL init_reply_dfs_info_1(struct junction_map* j, DFS_INFO_1* dfs1, int
slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
j[i].service_name, j[i].volume_name);
DEBUG(5,("init_reply_dfs_info_1: %d) initing entrypath: %s\n",i,str));
- init_unistr2(&dfs1[i].entrypath,str,strlen(str)+1);
+ init_unistr2(&dfs1[i].entrypath,str,UNI_STR_TERMINATE);
}
return True;
}
@@ -212,7 +212,7 @@ static BOOL init_reply_dfs_info_2(struct junction_map* j, DFS_INFO_2* dfs2, int
dfs2[i].ptr_entrypath = 1;
slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
j[i].service_name, j[i].volume_name);
- init_unistr2(&dfs2[i].entrypath, str, strlen(str)+1);
+ init_unistr2(&dfs2[i].entrypath, str, UNI_STR_TERMINATE);
dfs2[i].ptr_comment = 0;
dfs2[i].state = 1; /* set up state of dfs junction as OK */
dfs2[i].num_storages = j[i].referral_count;
@@ -234,9 +234,9 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, DFS_I
slprintf(str, sizeof(pstring)-1, "\\\\%s\\%s\\%s", global_myname(),
j[i].service_name, j[i].volume_name);
- init_unistr2(&dfs3[i].entrypath, str, strlen(str)+1);
+ init_unistr2(&dfs3[i].entrypath, str, UNI_STR_TERMINATE);
dfs3[i].ptr_comment = 1;
- init_unistr2(&dfs3[i].comment, "", 1);
+ init_unistr2(&dfs3[i].comment, "", UNI_STR_TERMINATE);
dfs3[i].state = 1;
dfs3[i].num_storages = dfs3[i].num_storage_infos = j[i].referral_count;
dfs3[i].ptr_storages = 1;
@@ -267,8 +267,8 @@ static BOOL init_reply_dfs_info_3(TALLOC_CTX *ctx, struct junction_map* j, DFS_I
*p = '\0';
DEBUG(5,("storage %d: %s.%s\n",ii,path,p+1));
stor->state = 2; /* set all storages as ONLINE */
- init_unistr2(&stor->servername, path, strlen(path)+1);
- init_unistr2(&stor->sharename, p+1, strlen(p+1)+1);
+ init_unistr2(&stor->servername, path, UNI_STR_TERMINATE);
+ init_unistr2(&stor->sharename, p+1, UNI_STR_TERMINATE);
stor->ptr_servername = stor->ptr_sharename = 1;
}
}
diff --git a/source/rpc_server/srv_lsa.c b/source/rpc_server/srv_lsa.c
index 138fb1d7ef9..5d6c1551c91 100644
--- a/source/rpc_server/srv_lsa.c
+++ b/source/rpc_server/srv_lsa.c
@@ -443,7 +443,7 @@ static BOOL api_lsa_enum_privsaccount(pipes_struct *p)
return False;
}
- r_u.status = _lsa_enum_privsaccount(p, &q_u, &r_u);
+ r_u.status = _lsa_enum_privsaccount(p, rdata, &q_u, &r_u);
/* store the response in the SMB stream */
if(!lsa_io_r_enum_privsaccount("", &r_u, rdata, 0)) {
diff --git a/source/rpc_server/srv_lsa_ds_nt.c b/source/rpc_server/srv_lsa_ds_nt.c
index 37540a9668c..97e9dc361d9 100644
--- a/source/rpc_server/srv_lsa_ds_nt.c
+++ b/source/rpc_server/srv_lsa_ds_nt.c
@@ -77,12 +77,12 @@ static NTSTATUS fill_dsrole_dominfo_basic(TALLOC_CTX *ctx, DSROLE_PRIMARY_DOMAIN
basic->netbios_ptr = 1;
netbios_domain = get_global_sam_name();
- init_unistr2( &basic->netbios_domain, netbios_domain, strlen(netbios_domain) );
+ init_unistr2( &basic->netbios_domain, netbios_domain, UNI_FLAGS_NONE);
basic->dnsname_ptr = 1;
- init_unistr2( &basic->dns_domain, dnsdomain, strlen(dnsdomain) );
+ init_unistr2( &basic->dns_domain, dnsdomain, UNI_FLAGS_NONE);
basic->forestname_ptr = 1;
- init_unistr2( &basic->forest_domain, dnsdomain, strlen(dnsdomain) );
+ init_unistr2( &basic->forest_domain, dnsdomain, UNI_FLAGS_NONE);
/* fill in some additional fields if we are a member of an AD domain */
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index 330dd727efd..0a8ad404cb3 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -61,7 +61,12 @@ Init dom_query
static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_sid)
{
- int domlen = (dom_name != NULL) ? strlen(dom_name) : 0;
+ d_q->buffer_dom_name = (dom_name != NULL) ? 1 : 0; /* domain buffer pointer */
+ d_q->buffer_dom_sid = (dom_sid != NULL) ? 1 : 0; /* domain sid pointer */
+
+ /* this string is supposed to be non-null terminated. */
+ /* But the maxlen in this UNISTR2 must include the terminating null. */
+ init_unistr2(&d_q->uni_domain_name, dom_name, UNI_MAXLEN_TERMINATE);
/*
* I'm not sure why this really odd combination of length
@@ -71,14 +76,15 @@ static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_si
* a domain with both odd and even length names... JRA.
*/
- d_q->uni_dom_str_len = domlen ? ((domlen + 1) * 2) : 0;
- d_q->uni_dom_max_len = domlen * 2;
- d_q->buffer_dom_name = domlen != 0 ? 1 : 0; /* domain buffer pointer */
- d_q->buffer_dom_sid = dom_sid != NULL ? 1 : 0; /* domain sid pointer */
+ /*
+ * IMPORTANT NOTE !!!!
+ * The two fields below probably are reversed in meaning, ie.
+ * the first field is probably the str_len, the second the max
+ * len. Both are measured in bytes anyway.
+ */
- /* this string is supposed to be character short */
- init_unistr2(&d_q->uni_domain_name, dom_name, domlen);
- d_q->uni_domain_name.uni_max_len++;
+ d_q->uni_dom_str_len = d_q->uni_domain_name.uni_max_len * 2;
+ d_q->uni_dom_max_len = d_q->uni_domain_name.uni_str_len * 2;
if (dom_sid != NULL)
init_dom_sid2(&d_q->dom_sid, dom_sid);
@@ -91,7 +97,6 @@ static void init_dom_query(DOM_QUERY *d_q, const char *dom_name, DOM_SID *dom_si
static int init_dom_ref(DOM_R_REF *ref, char *dom_name, DOM_SID *dom_sid)
{
int num = 0;
- int len;
if (dom_name != NULL) {
for (num = 0; num < ref->num_ref_doms_1; num++) {
@@ -114,14 +119,11 @@ static int init_dom_ref(DOM_R_REF *ref, char *dom_name, DOM_SID *dom_sid)
ref->max_entries = MAX_REF_DOMAINS;
ref->num_ref_doms_2 = num+1;
- len = (dom_name != NULL) ? strlen(dom_name) : 0;
- if(dom_name != NULL && len == 0)
- len = 1;
-
- init_uni_hdr(&ref->hdr_ref_dom[num].hdr_dom_name, len);
ref->hdr_ref_dom[num].ptr_dom_sid = dom_sid != NULL ? 1 : 0;
- init_unistr2(&ref->ref_dom[num].uni_dom_name, dom_name, len);
+ init_unistr2(&ref->ref_dom[num].uni_dom_name, dom_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&ref->hdr_ref_dom[num].hdr_dom_name, &ref->ref_dom[num].uni_dom_name);
+
init_dom_sid2(&ref->ref_dom[num].ref_dom, dom_sid );
return num;
@@ -334,7 +336,7 @@ static NTSTATUS lsa_get_generic_sd(TALLOC_CTX *mem_ctx, SEC_DESC **sd, size_t *s
if((psa = make_sec_acl(mem_ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if((*sd = make_sec_desc(mem_ctx, SEC_DESC_REVISION, &adm_sid, NULL, NULL, psa, sd_size)) == NULL)
+ if((*sd = make_sec_desc(mem_ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &adm_sid, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
@@ -349,25 +351,22 @@ static void init_dns_dom_info(LSA_DNS_DOM_INFO *r_l, const char *nb_name,
GUID *dom_guid, DOM_SID *dom_sid)
{
if (nb_name && *nb_name) {
- init_uni_hdr(&r_l->hdr_nb_dom_name, strlen(nb_name));
- init_unistr2(&r_l->uni_nb_dom_name, nb_name,
- strlen(nb_name));
+ init_unistr2(&r_l->uni_nb_dom_name, nb_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&r_l->hdr_nb_dom_name, &r_l->uni_nb_dom_name);
r_l->hdr_nb_dom_name.uni_max_len += 2;
r_l->uni_nb_dom_name.uni_max_len += 1;
}
if (dns_name && *dns_name) {
- init_uni_hdr(&r_l->hdr_dns_dom_name, strlen(dns_name));
- init_unistr2(&r_l->uni_dns_dom_name, dns_name,
- strlen(dns_name));
+ init_unistr2(&r_l->uni_dns_dom_name, dns_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&r_l->hdr_dns_dom_name, &r_l->uni_dns_dom_name);
r_l->hdr_dns_dom_name.uni_max_len += 2;
r_l->uni_dns_dom_name.uni_max_len += 1;
}
if (forest_name && *forest_name) {
- init_uni_hdr(&r_l->hdr_forest_name, strlen(forest_name));
- init_unistr2(&r_l->uni_forest_name, forest_name,
- strlen(forest_name));
+ init_unistr2(&r_l->uni_forest_name, forest_name, UNI_FLAGS_NONE);
+ init_uni_hdr(&r_l->hdr_forest_name, &r_l->uni_forest_name);
r_l->hdr_forest_name.uni_max_len += 2;
r_l->uni_forest_name.uni_max_len += 1;
}
@@ -774,13 +773,13 @@ NTSTATUS _lsa_enum_privs(pipes_struct *p, LSA_Q_ENUM_PRIVS *q_u, LSA_R_ENUM_PRIV
for (i = 0; i < PRIV_ALL_INDEX; i++, entry++) {
if( i<enum_context) {
- init_uni_hdr(&entry->hdr_name, 0);
- init_unistr2(&entry->name, NULL, 0 );
+ init_unistr2(&entry->name, NULL, UNI_FLAGS_NONE);
+ init_uni_hdr(&entry->hdr_name, &entry->name);
entry->luid_low = 0;
entry->luid_high = 0;
} else {
- init_uni_hdr(&entry->hdr_name, strlen(privs[i+1].priv));
- init_unistr2(&entry->name, privs[i+1].priv, strlen(privs[i+1].priv) );
+ init_unistr2(&entry->name, privs[i+1].priv, UNI_FLAGS_NONE);
+ init_uni_hdr(&entry->hdr_name, &entry->name);
entry->luid_low = privs[i+1].se_priv;
entry->luid_high = 0;
}
@@ -822,8 +821,8 @@ NTSTATUS _lsa_priv_get_dispname(pipes_struct *p, LSA_Q_PRIV_GET_DISPNAME *q_u, L
if (privs[i].se_priv!=SE_PRIV_ALL) {
DEBUG(10,(": %s\n", privs[i].description));
- init_uni_hdr(&r_u->hdr_desc, strlen(privs[i].description));
- init_unistr2(&r_u->desc, privs[i].description, strlen(privs[i].description) );
+ init_unistr2(&r_u->desc, privs[i].description, UNI_FLAGS_NONE);
+ init_uni_hdr(&r_u->hdr_desc, &r_u->desc);
r_u->ptr_info=0xdeadbeef;
r_u->lang_id=q_u->lang_id;
@@ -890,7 +889,6 @@ NTSTATUS _lsa_enum_accounts(pipes_struct *p, LSA_Q_ENUM_ACCOUNTS *q_u, LSA_R_ENU
NTSTATUS _lsa_unk_get_connuser(pipes_struct *p, LSA_Q_UNK_GET_CONNUSER *q_u, LSA_R_UNK_GET_CONNUSER *r_u)
{
fstring username, domname;
- int ulen, dlen;
user_struct *vuser = get_valid_user_struct(p->vuid);
if (vuser == NULL)
@@ -899,18 +897,15 @@ NTSTATUS _lsa_unk_get_connuser(pipes_struct *p, LSA_Q_UNK_GET_CONNUSER *q_u, LSA
fstrcpy(username, vuser->user.smb_name);
fstrcpy(domname, vuser->user.domain);
- ulen = strlen(username) + 1;
- dlen = strlen(domname) + 1;
-
- init_uni_hdr(&r_u->hdr_user_name, ulen);
r_u->ptr_user_name = 1;
- init_unistr2(&r_u->uni2_user_name, username, ulen);
+ init_unistr2(&r_u->uni2_user_name, username, UNI_STR_TERMINATE);
+ init_uni_hdr(&r_u->hdr_user_name, &r_u->uni2_user_name);
r_u->unk1 = 1;
- init_uni_hdr(&r_u->hdr_dom_name, dlen);
r_u->ptr_dom_name = 1;
- init_unistr2(&r_u->uni2_dom_name, domname, dlen);
+ init_unistr2(&r_u->uni2_dom_name, domname, UNI_STR_TERMINATE);
+ init_uni_hdr(&r_u->hdr_dom_name, &r_u->uni2_dom_name);
r_u->status = NT_STATUS_OK;
@@ -960,7 +955,7 @@ NTSTATUS _lsa_open_account(pipes_struct *p, LSA_Q_OPENACCOUNT *q_u, LSA_R_OPENAC
For a given SID, enumerate all the privilege this account has.
***************************************************************************/
-NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, LSA_Q_ENUMPRIVSACCOUNT *q_u, LSA_R_ENUMPRIVSACCOUNT *r_u)
+NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, prs_struct *ps, LSA_Q_ENUMPRIVSACCOUNT *q_u, LSA_R_ENUMPRIVSACCOUNT *r_u)
{
struct lsa_info *info=NULL;
GROUP_MAP map;
@@ -976,29 +971,29 @@ NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, LSA_Q_ENUMPRIVSACCOUNT *q_u, LS
return NT_STATUS_NO_SUCH_GROUP;
#if 0 /* privileges currently not implemented! */
- DEBUG(10,("_lsa_enum_privsaccount: %d privileges\n", map.priv_set.count));
- if (map.priv_set.count!=0) {
+ DEBUG(10,("_lsa_enum_privsaccount: %d privileges\n", map.priv_set->count));
+ if (map.priv_set->count!=0) {
- set=(LUID_ATTR *)talloc(p->mem_ctx, map.priv_set.count*sizeof(LUID_ATTR));
+ set=(LUID_ATTR *)talloc(map.priv_set->mem_ctx, map.priv_set.count*sizeof(LUID_ATTR));
if (set == NULL) {
- free_privilege(&map.priv_set);
+ destroy_privilege(&map.priv_set);
return NT_STATUS_NO_MEMORY;
}
- for (i=0; i<map.priv_set.count; i++) {
- set[i].luid.low=map.priv_set.set[i].luid.low;
- set[i].luid.high=map.priv_set.set[i].luid.high;
- set[i].attr=map.priv_set.set[i].attr;
+ for (i = 0; i < map.priv_set.count; i++) {
+ set[i].luid.low = map.priv_set->set[i].luid.low;
+ set[i].luid.high = map.priv_set->set[i].luid.high;
+ set[i].attr = map.priv_set->set[i].attr;
DEBUG(10,("_lsa_enum_privsaccount: priv %d: %d:%d:%d\n", i,
set[i].luid.high, set[i].luid.low, set[i].attr));
}
}
- init_lsa_r_enum_privsaccount(r_u, set, map.priv_set.count, 0);
- free_privilege(&map.priv_set);
+ init_lsa_r_enum_privsaccount(ps->mem_ctx, r_u, set, map.priv_set->count, 0);
+ destroy_privilege(&map.priv_set);
#endif
- init_lsa_r_enum_privsaccount(r_u, set, 0, 0);
+ init_lsa_r_enum_privsaccount(ps->mem_ctx, r_u, set, 0, 0);
return r_u->status;
}
@@ -1064,11 +1059,11 @@ NTSTATUS _lsa_setsystemaccount(pipes_struct *p, LSA_Q_SETSYSTEMACCOUNT *q_u, LSA
NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u)
{
#if 0
- struct lsa_info *info=NULL;
+ struct lsa_info *info = NULL;
GROUP_MAP map;
- int i=0;
- LUID_ATTR *luid_attr=NULL;
- PRIVILEGE_SET *set=NULL;
+ int i = 0;
+ LUID_ATTR *luid_attr = NULL;
+ PRIVILEGE_SET *set = NULL;
#endif
r_u->status = NT_STATUS_OK;
@@ -1081,24 +1076,24 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u
if (!pdb_getgrsid(&map, info->sid))
return NT_STATUS_NO_SUCH_GROUP;
- set=&q_u->set;
+ set = &q_u->set;
- for (i=0; i<set->count; i++) {
- luid_attr=&set->set[i];
+ for (i = 0; i < set->count; i++) {
+ luid_attr = &set->set[i];
/* check if the privilege is already there */
- if (check_priv_in_privilege(&map.priv_set, *luid_attr)){
- free_privilege(&map.priv_set);
+ if (check_priv_in_privilege(map.priv_set, *luid_attr)){
+ destroy_privilege(&map.priv_set);
return NT_STATUS_NO_SUCH_PRIVILEGE;
}
- add_privilege(&map.priv_set, *luid_attr);
+ add_privilege(map.priv_set, *luid_attr);
}
if(!pdb_update_group_mapping_entry(&map))
return NT_STATUS_NO_SUCH_GROUP;
- free_privilege(&map.priv_set);
+ destroy_privilege(&map.priv_set);
#endif
return r_u->status;
@@ -1111,11 +1106,11 @@ NTSTATUS _lsa_addprivs(pipes_struct *p, LSA_Q_ADDPRIVS *q_u, LSA_R_ADDPRIVS *r_u
NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEPRIVS *r_u)
{
#if 0
- struct lsa_info *info=NULL;
+ struct lsa_info *info = NULL;
GROUP_MAP map;
int i=0;
- LUID_ATTR *luid_attr=NULL;
- PRIVILEGE_SET *set=NULL;
+ LUID_ATTR *luid_attr = NULL;
+ PRIVILEGE_SET *set = NULL;
#endif
r_u->status = NT_STATUS_OK;
@@ -1128,37 +1123,37 @@ NTSTATUS _lsa_removeprivs(pipes_struct *p, LSA_Q_REMOVEPRIVS *q_u, LSA_R_REMOVEP
if (!pdb_getgrsid(&map, info->sid))
return NT_STATUS_NO_SUCH_GROUP;
- if (q_u->allrights!=0) {
+ if (q_u->allrights != 0) {
/* log it and return, until I see one myself don't do anything */
DEBUG(5,("_lsa_removeprivs: trying to remove all privileges ?\n"));
return NT_STATUS_OK;
}
- if (q_u->ptr==0) {
+ if (q_u->ptr == 0) {
/* log it and return, until I see one myself don't do anything */
DEBUG(5,("_lsa_removeprivs: no privileges to remove ?\n"));
return NT_STATUS_OK;
}
- set=&q_u->set;
+ set = &q_u->set;
- for (i=0; i<set->count; i++) {
- luid_attr=&set->set[i];
+ for (i = 0; i < set->count; i++) {
+ luid_attr = &set->set[i];
/* if we don't have the privilege, we're trying to remove, give up */
/* what else can we do ??? JFM. */
- if (!check_priv_in_privilege(&map.priv_set, *luid_attr)){
- free_privilege(&map.priv_set);
+ if (!check_priv_in_privilege(map.priv_set, *luid_attr)){
+ destroy_privilege(&map.priv_set);
return NT_STATUS_NO_SUCH_PRIVILEGE;
}
- remove_privilege(&map.priv_set, *luid_attr);
+ remove_privilege(map.priv_set, *luid_attr);
}
if(!pdb_update_group_mapping_entry(&map))
return NT_STATUS_NO_SUCH_GROUP;
- free_privilege(&map.priv_set);
+ destroy_privilege(&map.priv_set);
#endif
return r_u->status;
}
diff --git a/source/rpc_server/srv_pipe.c b/source/rpc_server/srv_pipe.c
index d1fb587d748..96261c665f7 100644
--- a/source/rpc_server/srv_pipe.c
+++ b/source/rpc_server/srv_pipe.c
@@ -254,18 +254,19 @@ BOOL create_next_pdu(pipes_struct *p)
}
if (p->netsec_auth_validated) {
+ int auth_type, auth_level;
char *data;
RPC_HDR_AUTH auth_info;
- static const uchar netsec_sig[8] = NETSEC_SIGNATURE;
- static const uchar nullbytes[8] = { 0,0,0,0,0,0,0,0 };
RPC_AUTH_NETSEC_CHK verf;
prs_struct rverf;
prs_struct rauth;
data = prs_data_p(&outgoing_pdu) + data_pos;
+ /* Check it's the type of reply we were expecting to decode */
- init_rpc_hdr_auth(&auth_info, NETSEC_AUTH_TYPE, RPC_PIPE_AUTH_SEAL_LEVEL,
+ get_auth_type_level(p->netsec_auth.auth_flags, &auth_type, &auth_level);
+ init_rpc_hdr_auth(&auth_info, auth_type, auth_level,
RPC_HDR_AUTH_LEN, 1);
if(!smb_io_rpc_hdr_auth("hdr_auth", &auth_info, &outgoing_pdu, 0)) {
@@ -277,10 +278,8 @@ BOOL create_next_pdu(pipes_struct *p)
prs_init(&rverf, 0, p->mem_ctx, MARSHALL);
prs_init(&rauth, 0, p->mem_ctx, MARSHALL);
- init_rpc_auth_netsec_chk(&verf, netsec_sig, nullbytes, nullbytes, nullbytes);
-
netsec_encode(&p->netsec_auth,
- AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL,
+ p->netsec_auth.auth_flags,
SENDER_IS_ACCEPTOR,
&verf, data, data_len);
@@ -1337,10 +1336,19 @@ BOOL api_pipe_netsec_process(pipes_struct *p, prs_struct *rpc_in)
return False;
}
- if ((auth_info.auth_type != NETSEC_AUTH_TYPE) ||
- (auth_info.auth_level != RPC_PIPE_AUTH_SEAL_LEVEL)) {
- DEBUG(0,("Invalid auth info %d or level %d on schannel\n",
- auth_info.auth_type, auth_info.auth_level));
+ if (auth_info.auth_type != NETSEC_AUTH_TYPE) {
+ DEBUG(0,("Invalid auth info %d on schannel\n",
+ auth_info.auth_type));
+ return False;
+ }
+
+ if (auth_info.auth_level == RPC_PIPE_AUTH_SEAL_LEVEL) {
+ p->netsec_auth.auth_flags = AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL;
+ } else if (auth_info.auth_level == RPC_PIPE_AUTH_SIGN_LEVEL) {
+ p->netsec_auth.auth_flags = AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN;
+ } else {
+ DEBUG(0,("Invalid auth level %d on schannel\n",
+ auth_info.auth_level));
return False;
}
@@ -1350,7 +1358,7 @@ BOOL api_pipe_netsec_process(pipes_struct *p, prs_struct *rpc_in)
}
if (!netsec_decode(&p->netsec_auth,
- AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL,
+ p->netsec_auth.auth_flags,
SENDER_IS_INITIATOR,
&netsec_chk,
prs_data_p(rpc_in)+old_offset, data_len)) {
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 261d641ab10..71e5bc7d70b 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -467,7 +467,7 @@ static NTSTATUS samr_make_dom_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
@@ -510,7 +510,7 @@ static NTSTATUS samr_make_usr_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 4, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
@@ -549,7 +549,7 @@ static NTSTATUS samr_make_grp_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
@@ -588,7 +588,7 @@ static NTSTATUS samr_make_ali_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
return NT_STATUS_NO_MEMORY;
- if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+ if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, sd_size)) == NULL)
return NT_STATUS_NO_MEMORY;
return NT_STATUS_OK;
@@ -719,7 +719,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN
for (i = 0; i < num_entries; i++) {
pwd = &disp_user_info[i+start_idx];
temp_name = pdb_get_username(pwd);
- init_unistr2(&uni_temp_name, temp_name, strlen(temp_name)+1);
+ init_unistr2(&uni_temp_name, temp_name, UNI_STR_TERMINATE);
user_sid = pdb_get_user_sid(pwd);
if (!sid_peek_check_rid(domain_sid, user_sid, &user_rid)) {
@@ -731,7 +731,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN
return NT_STATUS_UNSUCCESSFUL;
}
- init_sam_entry(&sam[i], uni_temp_name.uni_str_len, user_rid);
+ init_sam_entry(&sam[i], &uni_temp_name, user_rid);
copy_unistr2(&uni_name[i], &uni_temp_name);
}
@@ -865,10 +865,8 @@ 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;
-
- init_sam_entry(&sam[i], len, grp[i].rid);
- init_unistr2(&uni_name[i], grp[i].name, len);
+ init_unistr2(&uni_name[i], grp[i].name, UNI_STR_TERMINATE);
+ init_sam_entry(&sam[i], &uni_name[i], grp[i].rid);
}
*sam_pp = sam;
@@ -1580,10 +1578,9 @@ static BOOL make_samr_lookup_rids(TALLOC_CTX *ctx, uint32 num_names, fstring nam
}
for (i = 0; i < num_names; i++) {
- int len = names[i] != NULL ? strlen(names[i]) : 0;
- DEBUG(10, ("names[%d]:%s\n", i, names[i]));
- init_uni_hdr(&hdr_name[i], len);
- init_unistr2(&uni_name[i], names[i], len);
+ DEBUG(10, ("names[%d]:%s\n", i, names[i] ? names[i] : ""));
+ init_unistr2(&uni_name[i], names[i], UNI_FLAGS_NONE);
+ init_uni_hdr(&hdr_name[i], &uni_name[i]);
}
*pp_uni_name = uni_name;
@@ -2570,10 +2567,8 @@ static BOOL make_enum_domains(TALLOC_CTX *ctx, SAM_ENTRY **pp_sam,
return False;
for (i = 0; i < num_sam_entries; i++) {
- int len = doms[i] != NULL ? strlen(doms[i]) : 0;
-
- init_sam_entry(&sam[i], len, 0);
- init_unistr2(&uni_name[i], doms[i], len);
+ init_unistr2(&uni_name[i], doms[i], UNI_FLAGS_NONE);
+ init_sam_entry(&sam[i], &uni_name[i], 0);
}
*pp_sam = sam;
diff --git a/source/rpc_server/srv_samr_util.c b/source/rpc_server/srv_samr_util.c
index b81c4418114..db6649073e9 100644
--- a/source/rpc_server/srv_samr_util.c
+++ b/source/rpc_server/srv_samr_util.c
@@ -189,7 +189,7 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from)
pdb_set_acct_ctrl(to, from->acb_info, PDB_CHANGED);
}
- DEBUG(10,("INFO_21 UNKOWN_3: %08X -> %08X\n",pdb_get_unknown_3(to),from->unknown_3));
+ DEBUG(10,("INFO_21 UNKNOWN_3: %08X -> %08X\n",pdb_get_unknown_3(to),from->unknown_3));
if (from->unknown_3 != pdb_get_unknown_3(to)) {
pdb_set_unknown_3(to, from->unknown_3, PDB_CHANGED);
}
@@ -208,12 +208,17 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from)
/* Fix me: only update if it changes --metze */
pdb_set_hours(to, from->logon_hrs.hours, PDB_CHANGED);
- DEBUG(10,("INFO_21 UNKOWN_5: %08X -> %08X\n",pdb_get_unknown_5(to),from->unknown_5));
- if (from->unknown_5 != pdb_get_unknown_5(to)) {
- pdb_set_unknown_5(to, from->unknown_5, PDB_CHANGED);
+ DEBUG(10,("INFO_21 BAD_PASSWORD_COUNT: %08X -> %08X\n",pdb_get_bad_password_count(to),from->bad_password_count));
+ if (from->bad_password_count != pdb_get_bad_password_count(to)) {
+ pdb_set_bad_password_count(to, from->bad_password_count, PDB_CHANGED);
}
- DEBUG(10,("INFO_21 UNKOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6));
+ DEBUG(10,("INFO_21 LOGON_COUNT: %08X -> %08X\n",pdb_get_logon_count(to),from->logon_count));
+ if (from->logon_count != pdb_get_logon_count(to)) {
+ pdb_set_logon_count(to, from->logon_count, PDB_CHANGED);
+ }
+
+ DEBUG(10,("INFO_21 UNKNOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6));
if (from->unknown_6 != pdb_get_unknown_6(to)) {
pdb_set_unknown_6(to, from->unknown_6, PDB_CHANGED);
}
@@ -413,9 +418,14 @@ void copy_id23_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_23 *from)
/* Fix me: only update if it changes --metze */
pdb_set_hours(to, from->logon_hrs.hours, PDB_CHANGED);
- DEBUG(10,("INFO_23 UNKOWN_5: %08X -> %08X\n",pdb_get_unknown_5(to),from->unknown_5));
- if (from->unknown_5 != pdb_get_unknown_5(to)) {
- pdb_set_unknown_5(to, from->unknown_5, PDB_CHANGED);
+ DEBUG(10,("INFO_23 BAD_PASSWORD_COUNT: %08X -> %08X\n",pdb_get_bad_password_count(to),from->bad_password_count));
+ if (from->bad_password_count != pdb_get_bad_password_count(to)) {
+ pdb_set_bad_password_count(to, from->bad_password_count, PDB_CHANGED);
+ }
+
+ DEBUG(10,("INFO_23 LOGON_COUNT: %08X -> %08X\n",pdb_get_logon_count(to),from->logon_count));
+ if (from->logon_count != pdb_get_logon_count(to)) {
+ pdb_set_logon_count(to, from->logon_count, PDB_CHANGED);
}
DEBUG(10,("INFO_23 UNKOWN_6: %08X -> %08X\n",pdb_get_unknown_6(to),from->unknown_6));
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c
index 7159527a7d8..f2fb02176b5 100644
--- a/source/rpc_server/srv_spoolss_nt.c
+++ b/source/rpc_server/srv_spoolss_nt.c
@@ -690,7 +690,7 @@ static void notify_string(struct spoolss_notify_msg *msg,
/* The length of the message includes the trailing \0 */
- init_unistr2(&unistr, msg->notify.data, msg->len);
+ init_unistr2(&unistr, msg->notify.data, UNI_STR_TERMINATE);
data->notify_data.data.length = msg->len * 2;
data->notify_data.data.string = (uint16 *)talloc(mem_ctx, msg->len * 2);
@@ -1803,7 +1803,7 @@ Can't find printer handle we created for printer %s\n", name ));
&& (RA_WIN2K == get_remote_arch()) )
{
DEBUG(10,("_spoolss_open_printer_ex: Enabling LAN/WAN hack for Win2k clients.\n"));
- usleep( 500000 );
+ sys_usleep( 500000 );
}
return WERR_OK;
@@ -6121,7 +6121,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
*/
if (!strequal(printer->info_2->comment, old_printer->info_2->comment)) {
- init_unistr2( &buffer, printer->info_2->comment, strlen(printer->info_2->comment)+1 );
+ init_unistr2( &buffer, printer->info_2->comment, UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "description",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
@@ -6129,7 +6129,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
}
if (!strequal(printer->info_2->sharename, old_printer->info_2->sharename)) {
- init_unistr2( &buffer, printer->info_2->sharename, strlen(printer->info_2->sharename)+1 );
+ init_unistr2( &buffer, printer->info_2->sharename, UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "printerName",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "shareName",
@@ -6139,7 +6139,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
}
if (!strequal(printer->info_2->portname, old_printer->info_2->portname)) {
- init_unistr2( &buffer, printer->info_2->portname, strlen(printer->info_2->portname)+1 );
+ init_unistr2( &buffer, printer->info_2->portname, UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "portName",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
@@ -6147,7 +6147,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
}
if (!strequal(printer->info_2->location, old_printer->info_2->location)) {
- init_unistr2( &buffer, printer->info_2->location, strlen(printer->info_2->location)+1 );
+ init_unistr2( &buffer, printer->info_2->location, UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "location",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
@@ -6157,7 +6157,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
/* here we need to update some more DsSpooler keys */
/* uNCName, serverName, shortServerName */
- init_unistr2( &buffer, global_myname(), strlen(global_myname())+1 );
+ init_unistr2( &buffer, global_myname(), UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "serverName",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "shortServerName",
@@ -6165,7 +6165,7 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
slprintf( asc_buffer, sizeof(asc_buffer)-1, "\\\\%s\\%s",
global_myname(), printer->info_2->sharename );
- init_unistr2( &buffer, asc_buffer, strlen(asc_buffer)+1 );
+ init_unistr2( &buffer, asc_buffer, UNI_STR_TERMINATE);
set_printer_dataex( printer, SPOOL_DSSPOOLER_KEY, "uNCName",
REG_SZ, (uint8*)buffer.buffer, buffer.uni_str_len*2 );
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index ea66a7d38b4..4d1cf9bddcb 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -184,7 +184,7 @@ static SEC_DESC *get_share_security_default( TALLOC_CTX *ctx, int snum, size_t *
init_sec_ace(&ace, &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0);
if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 1, &ace)) != NULL) {
- psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, psize);
+ psd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, NULL, NULL, NULL, psa, psize);
}
if (!psd) {
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 722d66621a6..34c6fc35abd 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -85,7 +85,8 @@ static void display_sam_user_info_21(SAM_USER_INFO_21 *usr)
printf("\tunknown_3:\t0x%08x\n", usr->unknown_3); /* 0x00ff ffff */
printf("\tlogon_divs:\t%d\n", usr->logon_divs); /* 0x0000 00a8 which is 168 which is num hrs in a week */
- printf("\tunknown_5:\t0x%08x\n", usr->unknown_5); /* 0x0002 0000 */
+ printf("\tbad_password_count:\t0x%08x\n", usr->bad_password_count);
+ printf("\tlogon_count:\t0x%08x\n", usr->logon_count);
printf("\tpadding1[0..7]...\n");
diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c
index 61e100c03bb..05bfb2a0dcc 100644
--- a/source/rpcclient/cmd_spoolss.c
+++ b/source/rpcclient/cmd_spoolss.c
@@ -1568,7 +1568,7 @@ static WERROR cmd_spoolss_addform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
form.right = 20;
form.bottom = 30;
- init_unistr2(&form.name, argv[2], strlen(argv[2]) + 1);
+ init_unistr2(&form.name, argv[2], UNI_STR_TERMINATE);
/* Add the form */
@@ -1627,7 +1627,7 @@ static WERROR cmd_spoolss_setform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
form.right = 2000;
form.bottom = 3000;
- init_unistr2(&form.name, argv[2], strlen(argv[2]) + 1);
+ init_unistr2(&form.name, argv[2], UNI_STR_TERMINATE);
/* Set the form */
diff --git a/source/rpcclient/rpcclient.c b/source/rpcclient/rpcclient.c
index 515489292bc..773441a27cc 100644
--- a/source/rpcclient/rpcclient.c
+++ b/source/rpcclient/rpcclient.c
@@ -352,38 +352,33 @@ static NTSTATUS cmd_none(struct cli_state *cli, TALLOC_CTX *mem_ctx,
return NT_STATUS_OK;
}
-static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
+static NTSTATUS setup_schannel(struct cli_state *cli, int pipe_auth_flags,
+ int argc, const char **argv)
{
NTSTATUS ret;
+ static uchar zeros[16];
uchar trust_password[16];
uint32 sec_channel_type;
- static uchar zeros[16];
-
if (argc == 2) {
strhex_to_str((char *)cli->auth_info.sess_key,
strlen(argv[1]),
argv[1]);
memcpy(cli->sess_key, cli->auth_info.sess_key, sizeof(cli->sess_key));
- cli->pipe_auth_flags = AUTH_PIPE_NETSEC;
- cli->pipe_auth_flags |= AUTH_PIPE_SIGN;
- cli->pipe_auth_flags |= AUTH_PIPE_SEAL;
-
+ cli->pipe_auth_flags = pipe_auth_flags;
return NT_STATUS_OK;
}
/* Cleanup */
if ((memcmp(cli->auth_info.sess_key, zeros, sizeof(cli->auth_info.sess_key)) != 0)) {
- if (cli->pipe_auth_flags == (AUTH_PIPE_NETSEC|AUTH_PIPE_SIGN|AUTH_PIPE_SEAL)) {
+ if (cli->pipe_auth_flags == pipe_auth_flags) {
/* already in this mode nothing to do */
return NT_STATUS_OK;
} else {
- /* schannel is setup, just need to use it again */
- cli->pipe_auth_flags = AUTH_PIPE_NETSEC;
- cli->pipe_auth_flags |= AUTH_PIPE_SIGN;
- cli->pipe_auth_flags |= AUTH_PIPE_SEAL;
+ /* schannel is setup, just need to use it again with new flags */
+ cli->pipe_auth_flags = pipe_auth_flags;
+
if (cli->nt_pipe_fnum != 0)
cli_nt_session_close(cli);
return NT_STATUS_OK;
@@ -393,17 +388,13 @@ static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx,
if (cli->nt_pipe_fnum != 0)
cli_nt_session_close(cli);
- cli->pipe_auth_flags = AUTH_PIPE_NETSEC;
- cli->pipe_auth_flags |= AUTH_PIPE_SIGN;
- cli->pipe_auth_flags |= AUTH_PIPE_SEAL;
-
if (!secrets_fetch_trust_account_password(lp_workgroup(),
trust_password,
NULL, &sec_channel_type)) {
return NT_STATUS_UNSUCCESSFUL;
}
- ret = cli_nt_setup_netsec(cli, sec_channel_type, trust_password);
+ ret = cli_nt_setup_netsec(cli, sec_channel_type, pipe_auth_flags, trust_password);
if (NT_STATUS_IS_OK(ret)) {
char *hex_session_key;
hex_encode(cli->auth_info.sess_key,
@@ -415,6 +406,24 @@ static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx,
return ret;
}
+
+static NTSTATUS cmd_schannel(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
+{
+ d_printf("Setting schannel - sign and seal\n");
+ return setup_schannel(cli, AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN | AUTH_PIPE_SEAL,
+ argc, argv);
+}
+
+static NTSTATUS cmd_schannel_sign(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
+{
+ d_printf("Setting schannel - sign only\n");
+ return setup_schannel(cli, AUTH_PIPE_NETSEC | AUTH_PIPE_SIGN,
+ argc, argv);
+}
+
+
/* Built in rpcclient commands */
static struct cmd_set rpcclient_commands[] = {
@@ -430,6 +439,7 @@ static struct cmd_set rpcclient_commands[] = {
{ "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL, -1, "Force RPC pipe connections to be signed", "" },
{ "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL, -1, "Force RPC pipe connections to be sealed", "" },
{ "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL, -1, "Force RPC pipe connections to be sealed with 'schannel' (NETSEC). Assumes valid machine account to this domain controller.", "" },
+ { "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL, -1, "Force RPC pipe connections to be signed (not sealed) with 'schannel' (NETSEC). Assumes valid machine account to this domain controller.", "" },
{ "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL, -1, "Force RPC pipe connections to have no special properties", "" },
{ NULL }
@@ -522,9 +532,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
/* some of the DsXXX commands use the netlogon pipe */
if (lp_client_schannel() && (cmd_entry->pipe_idx == PI_NETLOGON) && !(cli->pipe_auth_flags & AUTH_PIPE_NETSEC)) {
- /* The 7 here seems to be required to get Win2k not to downgrade us
- to NT4. Actually, anything other than 1ff would seem to do... */
- uint32 neg_flags = 0x000001ff;
+ uint32 neg_flags = NETLOGON_NEG_AUTH2_FLAGS;
uint32 sec_channel_type;
if (!secrets_fetch_trust_account_password(lp_workgroup(),
diff --git a/source/script/installbin.sh b/source/script/installbin.sh
index c2f34082dd9..f9fd5298c09 100755
--- a/source/script/installbin.sh
+++ b/source/script/installbin.sh
@@ -1,10 +1,12 @@
#!/bin/sh
INSTALLPERMS=$1
-BASEDIR=$2
-BINDIR=$3
-LIBDIR=$4
-VARDIR=$5
+DESTDIR=$2
+BASEDIR=`echo $3 | sed 's/\/\//\//g'`
+BINDIR=`echo $4 | sed 's/\/\//\//g'`
+LIBDIR=`echo $5 | sed 's/\/\//\//g'`
+VARDIR=`echo $6 | sed 's/\/\//\//g'`
+shift
shift
shift
shift
@@ -23,7 +25,10 @@ for p in $*; do
# this is a special case, mount needs this in a specific location
if [ $p2 = smbmount ]; then
- ln -sf $BINDIR/$p2 /sbin/mount.smbfs
+ if [ ! -d $DESTDIR/sbin ]; then
+ mkdir $DESTDIR/sbin
+ fi
+ ln -sf $BINDIR/$p2 $DESTDIR/sbin/mount.smbfs
fi
done
diff --git a/source/script/installdat.sh b/source/script/installdat.sh
index 7ff88ac788e..4a5b1de5dc8 100755
--- a/source/script/installdat.sh
+++ b/source/script/installdat.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#fist version March 2002, Herb Lewis
-DATDIR=$1
+DATDIR=`echo $1 | sed 's/\/\//\//g'`
SRCDIR=$2/
echo Installing dat files in $DATDIR
diff --git a/source/script/installdirs.sh b/source/script/installdirs.sh
index 9557b86d3bc..1db46b82ff2 100755
--- a/source/script/installdirs.sh
+++ b/source/script/installdirs.sh
@@ -1,11 +1,13 @@
#!/bin/sh
while ( test -n "$1" ); do
- if [ ! -d $1 ]; then
- mkdir -p $1
+
+ DIRNAME=`echo $1 | sed 's/\/\//\//g'`
+ if [ ! -d $DIRNAME ]; then
+ mkdir -p $DIRNAME
fi
- if [ ! -d $1 ]; then
+ if [ ! -d $DIRNAME ]; then
echo Failed to make directory $1
exit 1
fi
diff --git a/source/script/installman.sh b/source/script/installman.sh
index 5b6bba69edb..c7a8f450951 100755
--- a/source/script/installman.sh
+++ b/source/script/installman.sh
@@ -5,7 +5,7 @@
# modified to accomodate international man pages (inspired
# by Japanese edition's approach)
-MANDIR=$1
+MANDIR=`echo $1 | sed 's/\/\//\//g'`
SRCDIR=$2/
langs=$3
diff --git a/source/script/installmodules.sh b/source/script/installmodules.sh
index c80da763688..f7c74733381 100755
--- a/source/script/installmodules.sh
+++ b/source/script/installmodules.sh
@@ -1,8 +1,8 @@
#!/bin/sh
INSTALLPERMS=$1
-BASEDIR=$2
-LIBDIR=$3
+BASEDIR=`echo $2 | sed 's/\/\//\//g'`
+LIBDIR=`echo $3 | sed 's/\/\//\//g'`
shift
shift
shift
diff --git a/source/script/installmsg.sh b/source/script/installmsg.sh
index 30ad404aa0d..5a41fe1ca8d 100644
--- a/source/script/installmsg.sh
+++ b/source/script/installmsg.sh
@@ -2,7 +2,7 @@
# first version (Sept 2003) written by Shiro Yamada <shiro@miraclelinux.com>
# based on the first verion (March 2002) of installdat.sh written by Herb Lewis
-MSGDIR=$1
+MSGDIR=`echo $1 | sed 's/\/\//\//g'`
SRCDIR=$2/
echo Installing msg files in $MSGDIR
diff --git a/source/script/installscripts.sh b/source/script/installscripts.sh
index bff5423e7cb..81608c3682c 100755
--- a/source/script/installscripts.sh
+++ b/source/script/installscripts.sh
@@ -3,7 +3,7 @@
# 5 July 96 Dan.Shearer@UniSA.Edu.Au Don't hardcode script names, get from Make
INSTALLPERMS=$1
-BINDIR=$2
+BINDIR=`echo $2 | sed 's/\/\//\//g'`
shift
shift
diff --git a/source/script/installswat.sh b/source/script/installswat.sh
index bd2f8da2348..7841a2a7b50 100755
--- a/source/script/installswat.sh
+++ b/source/script/installswat.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#first version March 1998, Andrew Tridgell
-SWATDIR=$1
+SWATDIR=`echo $1 | sed 's/\/\//\//g'`
SRCDIR=$2/
BOOKDIR=$SWATDIR/using_samba
diff --git a/source/script/mkproto.awk b/source/script/mkproto.awk
index b6e911699eb..3835ea3af37 100644
--- a/source/script/mkproto.awk
+++ b/source/script/mkproto.awk
@@ -120,7 +120,7 @@ END {
gotstart = 1;
}
- if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT/ ) {
+ if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT|^NTTIME/ ) {
gotstart = 1;
}
diff --git a/source/script/uninstallbin.sh b/source/script/uninstallbin.sh
index a8bbdea7afd..5de936fccfd 100755
--- a/source/script/uninstallbin.sh
+++ b/source/script/uninstallbin.sh
@@ -2,10 +2,10 @@
#4 July 96 Dan.Shearer@UniSA.edu.au
INSTALLPERMS=$1
-BASEDIR=$2
-BINDIR=$3
-LIBDIR=$4
-VARDIR=$5
+BASEDIR=`echo $2 | sed 's/\/\//\//g'`
+BINDIR=`echo $3 | sed 's/\/\//\//g'`
+LIBDIR=`echo $4 | sed 's/\/\//\//g'`
+VARDIR=`echo $5 | sed 's/\/\//\//g'`
shift
shift
shift
diff --git a/source/script/uninstallman.sh b/source/script/uninstallman.sh
index 3126709831f..0fea11cd1b2 100755
--- a/source/script/uninstallman.sh
+++ b/source/script/uninstallman.sh
@@ -6,7 +6,7 @@
# by Japanese edition's approach)
-MANDIR=$1
+MANDIR=`echo $1 | sed 's/\/\//\//g'`
SRCDIR=$2
langs=$3
diff --git a/source/script/uninstallmodules.sh b/source/script/uninstallmodules.sh
index 30582a39fac..ac83af3dc90 100755
--- a/source/script/uninstallmodules.sh
+++ b/source/script/uninstallmodules.sh
@@ -2,8 +2,8 @@
#4 July 96 Dan.Shearer@UniSA.edu.au
INSTALLPERMS=$1
-BASEDIR=$2
-LIBDIR=$3
+BASEDIR=`echo $2 | sed 's/\/\//\//g'`
+LIBDIR=`echo $3 | sed 's/\/\//\//g'`
shift
shift
shift
diff --git a/source/script/uninstallscripts.sh b/source/script/uninstallscripts.sh
index 13104acedd8..cf7fd719993 100755
--- a/source/script/uninstallscripts.sh
+++ b/source/script/uninstallscripts.sh
@@ -2,7 +2,7 @@
# 5 July 96 Dan.Shearer@UniSA.Edu.Au - almost identical to uninstallbin.sh
INSTALLPERMS=$1
-BINDIR=$2
+BINDIR=`echo $2 | sed 's/\/\//\//g'`
shift
shift
diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c
index 8fa2a6494e3..f43790bfe03 100644
--- a/source/smbd/blocking.c
+++ b/source/smbd/blocking.c
@@ -91,6 +91,7 @@ BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout,
{
static BOOL set_lock_msg;
blocking_lock_record *blr;
+ BOOL my_lock_ctx = False;
NTSTATUS status;
if(in_chained_smb() ) {
@@ -127,7 +128,7 @@ BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout,
/* Add a pending lock record for this. */
status = brl_lock(blr->fsp->dev, blr->fsp->inode, blr->fsp->fnum,
lock_pid, sys_getpid(), blr->fsp->conn->cnum,
- offset, count, PENDING_LOCK);
+ offset, count, PENDING_LOCK, &my_lock_ctx);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0,("push_blocking_lock_request: failed to add PENDING_LOCK record.\n"));
@@ -302,6 +303,7 @@ static BOOL process_lockread(blocking_lock_record *blr)
NTSTATUS status;
connection_struct *conn = conn_find(SVAL(inbuf,smb_tid));
files_struct *fsp = blr->fsp;
+ BOOL my_lock_ctx = False;
numtoread = SVAL(inbuf,smb_vwv1);
startpos = (SMB_BIG_UINT)IVAL(inbuf,smb_vwv2);
@@ -309,8 +311,7 @@ static BOOL process_lockread(blocking_lock_record *blr)
numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
data = smb_buf(outbuf) + 3;
- status = do_lock_spin( fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtoread,
- startpos, READ_LOCK);
+ status = do_lock_spin( fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtoread, startpos, READ_LOCK, &my_lock_ctx);
if (NT_STATUS_V(status)) {
if (!NT_STATUS_EQUAL(status,NT_STATUS_LOCK_NOT_GRANTED) &&
!NT_STATUS_EQUAL(status,NT_STATUS_FILE_LOCK_CONFLICT)) {
@@ -371,13 +372,13 @@ static BOOL process_lock(blocking_lock_record *blr)
NTSTATUS status;
connection_struct *conn = conn_find(SVAL(inbuf,smb_tid));
files_struct *fsp = blr->fsp;
+ BOOL my_lock_ctx = False;
count = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv1);
offset = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv3);
errno = 0;
- status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count,
- offset, WRITE_LOCK);
+ status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK, &my_lock_ctx);
if (NT_STATUS_IS_ERR(status)) {
if (!NT_STATUS_EQUAL(status,NT_STATUS_LOCK_NOT_GRANTED) &&
!NT_STATUS_EQUAL(status,NT_STATUS_FILE_LOCK_CONFLICT)) {
@@ -428,6 +429,7 @@ static BOOL process_lockingX(blocking_lock_record *blr)
uint16 lock_pid;
BOOL large_file_format = (locktype & LOCKING_ANDX_LARGE_FILES);
char *data;
+ BOOL my_lock_ctx = False;
NTSTATUS status = NT_STATUS_OK;
data = smb_buf(inbuf) + ((large_file_format ? 20 : 10)*num_ulocks);
@@ -450,7 +452,7 @@ static BOOL process_lockingX(blocking_lock_record *blr)
*/
errno = 0;
status = do_lock_spin(fsp,conn,lock_pid,count,offset,
- ((locktype & 1) ? READ_LOCK : WRITE_LOCK));
+ ((locktype & 1) ? READ_LOCK : WRITE_LOCK), &my_lock_ctx);
if (NT_STATUS_IS_ERR(status)) break;
}
@@ -553,7 +555,7 @@ void remove_pending_lock_requests_by_mid(int mid)
DEBUG(10,("remove_pending_lock_requests_by_mid - removing request type %d for \
file %s fnum = %d\n", blr->com_type, fsp->fsp_name, fsp->fnum ));
- blocking_lock_reply_error(blr,NT_STATUS_CANCELLED);
+ blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT);
brl_unlock(blr->fsp->dev, blr->fsp->inode, blr->fsp->fnum,
blr->lock_pid, sys_getpid(), blr->fsp->conn->cnum,
blr->offset, blr->count, True, NULL, NULL);
diff --git a/source/smbd/error.c b/source/smbd/error.c
index 9d0e34bf527..795bf0949cc 100644
--- a/source/smbd/error.c
+++ b/source/smbd/error.c
@@ -93,6 +93,11 @@ int error_packet(char *outbuf,NTSTATUS ntstatus,
if (errno != 0)
DEBUG(3,("error string = %s\n",strerror(errno)));
+#if defined(DEVELOPER)
+ if (unix_ERR_class != SMB_SUCCESS || unix_ERR_code != 0 || !NT_STATUS_IS_OK(unix_ERR_ntstatus))
+ smb_panic("logic error in error processing");
+#endif
+
/*
* We can explicitly force 32 bit error codes even when the
* parameter "nt status" is set to no by pre-setting the
diff --git a/source/smbd/notify_hash.c b/source/smbd/notify_hash.c
index 810e5079ba5..ec414454f9e 100644
--- a/source/smbd/notify_hash.c
+++ b/source/smbd/notify_hash.c
@@ -41,7 +41,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags,
SMB_STRUCT_STAT st;
pstring full_name;
char *p;
- char *fname;
+ const char *fname;
size_t remaining_len;
size_t fullname_len;
void *dp;
@@ -115,7 +115,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags,
if (flags & (FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_FILE)) {
int i;
unsigned char tmp_hash[16];
- mdfour(tmp_hash, (unsigned char *)fname, strlen(fname));
+ mdfour(tmp_hash, (const unsigned char *)fname, strlen(fname));
for (i=0;i<16;i++)
data->name_hash[i] ^= tmp_hash[i];
}
@@ -125,7 +125,7 @@ static BOOL notify_hash(connection_struct *conn, char *path, uint32 flags,
*/
if (flags & (FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SECURITY))
- data->mode_sum = st.st_mode;
+ data->mode_sum += st.st_mode;
}
CloseDir(dp);
diff --git a/source/smbd/nttrans.c b/source/smbd/nttrans.c
index 1c507449472..b4e7a70088d 100644
--- a/source/smbd/nttrans.c
+++ b/source/smbd/nttrans.c
@@ -522,8 +522,11 @@ static int do_ntcreate_pipe_open(connection_struct *conn,
int ret;
int pnum = -1;
char *p = NULL;
+ NTSTATUS status;
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status))
+ return ERROR_NT(status);
if ((ret = nt_open_pipe(fname, conn, inbuf, outbuf, &pnum)) != 0)
return ret;
@@ -587,6 +590,7 @@ int reply_ntcreate_and_X(connection_struct *conn,
char *p = NULL;
time_t c_time;
BOOL extended_oplock_granted = False;
+ NTSTATUS status;
START_PROFILE(SMBntcreateX);
@@ -641,7 +645,11 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
if(!dir_fsp->is_directory) {
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBntcreateX);
+ return ERROR_NT(status);
+ }
/*
* Check to see if this is a mac fork of some kind.
@@ -681,9 +689,17 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
dir_name_len++;
}
- srvstr_pull_buf(inbuf, &fname[dir_name_len], smb_buf(inbuf), sizeof(fname)-dir_name_len, STR_TERMINATE);
+ srvstr_get_path(inbuf, &fname[dir_name_len], smb_buf(inbuf), sizeof(fname)-dir_name_len, STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBntcreateX);
+ return ERROR_NT(status);
+ }
} else {
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBntcreateX);
+ return ERROR_NT(status);
+ }
/*
* Check to see if this is a mac fork of some kind.
@@ -971,6 +987,7 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha
int ret;
int pnum = -1;
char *p = NULL;
+ NTSTATUS status;
/*
* Ensure minimum number of parameters sent.
@@ -982,6 +999,10 @@ static int do_nt_transact_create_pipe( connection_struct *conn, char *inbuf, cha
}
srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE);
+ status = check_path_syntax(fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
if ((ret = nt_open_pipe(fname, conn, inbuf, outbuf, &pnum)) != 0)
return ret;
@@ -1158,7 +1179,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
smb_attr = (file_attributes & SAMBA_ATTRIBUTES_MASK);
if (create_options & FILE_OPEN_BY_FILE_ID) {
- END_PROFILE(SMBntcreateX);
return ERROR_NT(NT_STATUS_NOT_SUPPORTED);
}
@@ -1188,6 +1208,10 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
if(!dir_fsp->is_directory) {
srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE);
+ nt_status = check_path_syntax(fname);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ return ERROR_NT(nt_status);
+ }
/*
* Check to see if this is a mac fork of some kind.
@@ -1217,8 +1241,16 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
srvstr_pull(inbuf, &fname[dir_name_len], params+53, sizeof(fname)-dir_name_len,
parameter_count-53, STR_TERMINATE);
+ nt_status = check_path_syntax(fname);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ return ERROR_NT(nt_status);
+ }
} else {
srvstr_pull(inbuf, fname, params+53, sizeof(fname), parameter_count-53, STR_TERMINATE);
+ nt_status = check_path_syntax(fname);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ return ERROR_NT(nt_status);
+ }
/*
* Check to see if this is a mac fork of some kind.
@@ -1260,7 +1292,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
/* Can't open a temp directory. IFS kit test. */
if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) {
- END_PROFILE(SMBntcreateX);
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
@@ -1361,7 +1392,6 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
fsp->initial_allocation_size = SMB_ROUNDUP(allocation_size,SMB_ROUNDUP_ALLOCATION_SIZE);
if (vfs_allocate_file_space(fsp, fsp->initial_allocation_size) == -1) {
close_file(fsp,False);
- END_PROFILE(SMBntcreateX);
return ERROR_NT(NT_STATUS_DISK_FULL);
}
} else {
@@ -1517,6 +1547,10 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o
replace_if_exists = (SVAL(params,2) & RENAME_REPLACE_IF_EXISTS) ? True : False;
CHECK_FSP(fsp, conn);
srvstr_pull(inbuf, new_name, params+4, sizeof(new_name), -1, STR_TERMINATE);
+ status = check_path_syntax(new_name);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ERROR_NT(status);
+ }
status = rename_internals(conn, fsp->fsp_name,
new_name, replace_if_exists);
diff --git a/source/smbd/password.c b/source/smbd/password.c
index 32c24b3d679..958ed663e67 100644
--- a/source/smbd/password.c
+++ b/source/smbd/password.c
@@ -291,7 +291,9 @@ BOOL user_ok(const char *user,int snum, gid_t *groups, size_t n_groups)
if (lp_invalid_users(snum)) {
str_list_copy(&invalid, lp_invalid_users(snum));
if (invalid && str_list_substitute(invalid, "%S", lp_servicename(snum))) {
- ret = !user_in_list(user, (const char **)invalid, groups, n_groups);
+ if ( invalid && str_list_sub_basic(invalid, current_user_info.smb_name) ) {
+ ret = !user_in_list(user, (const char **)invalid, groups, n_groups);
+ }
}
}
if (invalid)
@@ -299,8 +301,10 @@ BOOL user_ok(const char *user,int snum, gid_t *groups, size_t n_groups)
if (ret && lp_valid_users(snum)) {
str_list_copy(&valid, lp_valid_users(snum));
- if ( valid && str_list_sub_basic(valid, current_user_info.smb_name) ) {
- ret = user_in_list(user, (const char **)valid, groups, n_groups);
+ if ( valid && str_list_substitute(valid, "%S", lp_servicename(snum)) ) {
+ if ( valid && str_list_sub_basic(valid, current_user_info.smb_name) ) {
+ ret = user_in_list(user, (const char **)valid, groups, n_groups);
+ }
}
}
if (valid)
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index 6ac4cffddb4..ec63be32b40 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -39,21 +39,33 @@ unsigned int smb_echo_count = 0;
extern BOOL global_encrypted_passwords_negotiated;
/****************************************************************************
- Ensure we check the path in the same way as W2K.
+ Ensure we check the path in *exactly* the same way as W2K.
****************************************************************************/
-static NTSTATUS check_path_syntax(const char *name)
+NTSTATUS check_path_syntax(const char *name)
{
- while (*name == '\\')
+ while (*name == '\\' || *name == '/')
name++;
- if (strequal(name, "."))
+ if (name[0] == '.' && name[1] == '\0')
return NT_STATUS_OBJECT_NAME_INVALID;
- else if (strequal(name, ".."))
+ else if (name[0] == '.' && name[1] == '.' &&
+ (name[2] == '\\' || name [2] == '/' || name[2] == '\0'))
return NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
return NT_STATUS_OK;
}
/****************************************************************************
+ Pull a string and check the path - provide for error return.
+****************************************************************************/
+
+size_t srvstr_get_path(char *inbuf, char *dest, const char *src, size_t dest_len, int flags, NTSTATUS *err)
+{
+ size_t ret = srvstr_pull_buf( inbuf, dest, src, dest_len, flags);
+ *err = check_path_syntax(dest);
+ return ret;
+}
+
+/****************************************************************************
Reply to a special message.
****************************************************************************/
@@ -402,11 +414,11 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
START_PROFILE(SMBchkpth);
- srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE);
-
- status = check_path_syntax(name);
- if (!NT_STATUS_IS_OK(status))
+ srvstr_get_path(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE, &status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBchkpth);
return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
@@ -416,8 +428,10 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
if (check_name(name,conn)) {
if (VALID_STAT(sbuf) || SMB_VFS_STAT(conn,name,&sbuf) == 0)
- if (!(ok = S_ISDIR(sbuf.st_mode)))
- errno = ENOTDIR;
+ if (!(ok = S_ISDIR(sbuf.st_mode))) {
+ END_PROFILE(SMBchkpth);
+ return ERROR_BOTH(NT_STATUS_NOT_A_DIRECTORY,ERRDOS,ERRbadpath);
+ }
}
if (!ok) {
@@ -435,13 +449,18 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
* if the path is invalid.
*/
if (bad_path) {
+ END_PROFILE(SMBchkpth);
return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
} else {
+ END_PROFILE(SMBchkpth);
return ERROR_NT(NT_STATUS_OBJECT_NAME_NOT_FOUND);
}
- } else if (errno == ENOTDIR)
+ } else if (errno == ENOTDIR) {
+ END_PROFILE(SMBchkpth);
return ERROR_NT(NT_STATUS_NOT_A_DIRECTORY);
+ }
+ END_PROFILE(SMBchkpth);
return(UNIXERROR(ERRDOS,ERRbadpath));
}
@@ -468,10 +487,16 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
time_t mtime=0;
BOOL bad_path = False;
char *p;
+ NTSTATUS status;
+
START_PROFILE(SMBgetatr);
p = smb_buf(inbuf) + 1;
- p += srvstr_pull_buf(inbuf, fname, p, sizeof(fname), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, fname, p, sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBgetatr);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
@@ -537,11 +562,17 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
SMB_STRUCT_STAT sbuf;
BOOL bad_path = False;
char *p;
+ NTSTATUS status;
START_PROFILE(SMBsetatr);
p = smb_buf(inbuf) + 1;
- p += srvstr_pull_buf(inbuf, fname, p, sizeof(fname), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, fname, p, sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBsetatr);
+ return ERROR_NT(status);
+ }
+
unix_convert(fname,conn,0,&bad_path,&sbuf);
mode = SVAL(inbuf,smb_vwv0);
@@ -652,6 +683,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
BOOL expect_close = False;
BOOL can_open = True;
BOOL bad_path = False;
+ NTSTATUS nt_status;
START_PROFILE(SMBsearch);
*mask = *directory = *fname = 0;
@@ -664,7 +696,11 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
maxentries = SVAL(inbuf,smb_vwv0);
dirtype = SVAL(inbuf,smb_vwv1);
p = smb_buf(inbuf) + 1;
- p += srvstr_pull_buf(inbuf, path, p, sizeof(path), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, path, p, sizeof(path), STR_TERMINATE,&nt_status);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ END_PROFILE(SMBsearch);
+ return ERROR_NT(nt_status);
+ }
p++;
status_len = SVAL(p, 0);
p += 2;
@@ -829,12 +865,17 @@ int reply_fclose(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
char status[21];
int dptr_num= -2;
char *p;
+ NTSTATUS err;
START_PROFILE(SMBfclose);
outsize = set_message(outbuf,1,0,True);
p = smb_buf(inbuf) + 1;
- p += srvstr_pull_buf(inbuf, path, p, sizeof(path), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, path, p, sizeof(path), STR_TERMINATE,&err);
+ if (!NT_STATUS_IS_OK(err)) {
+ END_PROFILE(SMBfclose);
+ return ERROR_NT(err);
+ }
p++;
status_len = SVAL(p,0);
p += 2;
@@ -877,11 +918,16 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
BOOL bad_path = False;
files_struct *fsp;
int oplock_request = CORE_OPLOCK_REQUEST(inbuf);
+ NTSTATUS status;
START_PROFILE(SMBopen);
share_mode = SVAL(inbuf,smb_vwv0);
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBopen);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
@@ -954,6 +1000,7 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
int smb_action = 0;
BOOL bad_path = False;
files_struct *fsp;
+ NTSTATUS status;
START_PROFILE(SMBopenX);
/* If it's an IPC, pass off the pipe handler. */
@@ -968,7 +1015,11 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
}
/* XXXX we need to handle passed times, sattr and flags */
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf), sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBopenX);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
@@ -1074,12 +1125,17 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
files_struct *fsp;
int oplock_request = CORE_OPLOCK_REQUEST(inbuf);
SMB_STRUCT_STAT sbuf;
+ NTSTATUS status;
START_PROFILE(SMBcreate);
com = SVAL(inbuf,smb_com);
createmode = SVAL(inbuf,smb_vwv0);
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf) + 1, sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf) + 1, sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBcreate);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
@@ -1139,11 +1195,16 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
int tmpfd;
SMB_STRUCT_STAT sbuf;
char *p, *s;
+ NTSTATUS status;
START_PROFILE(SMBctemp);
createmode = SVAL(inbuf,smb_vwv0);
- srvstr_pull_buf(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE);
+ srvstr_get_path(inbuf, fname, smb_buf(inbuf)+1, sizeof(fname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBctemp);
+ return ERROR_NT(status);
+ }
pstrcat(fname,"\\TMXXXXXX");
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
@@ -1235,6 +1296,7 @@ static NTSTATUS can_rename(char *fname,connection_struct *conn, SMB_STRUCT_STAT
ret = NT_STATUS_SHARING_VIOLATION;
unix_ERR_class = 0;
unix_ERR_code = 0;
+ unix_ERR_ntstatus = NT_STATUS_OK;
return ret;
}
close_file(fsp,False);
@@ -1423,12 +1485,12 @@ int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
dirtype = SVAL(inbuf,smb_vwv0);
- srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE);
-
- status = check_path_syntax(name);
- if (!NT_STATUS_IS_OK(status))
+ srvstr_get_path(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBunlink);
return ERROR_NT(status);
-
+ }
+
RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
DEBUG(3,("reply_unlink : %s\n",name));
@@ -1505,8 +1567,13 @@ void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T st
if (nread > 0) {
ret = read_file(fsp,outbuf+4,startpos,nread);
+#if 0 /* mincount appears to be ignored in a W2K server. JRA. */
if (ret < mincount)
ret = 0;
+#else
+ if (ret < nread)
+ ret = 0;
+#endif
}
_smb_setlen(outbuf,ret);
@@ -1606,7 +1673,6 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s
/* ensure we don't overrun the packet size */
maxcount = MIN(65535,maxcount);
- maxcount = MAX(mincount,maxcount);
if (!is_locked(fsp,conn,(SMB_BIG_UINT)maxcount,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
SMB_OFF_T size = fsp->size;
@@ -1626,8 +1692,10 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s
nread = MIN(maxcount,(size - startpos));
}
+#if 0 /* mincount appears to be ignored in a W2K server. JRA. */
if (nread < mincount)
nread = 0;
+#endif
DEBUG( 3, ( "readbraw fnum=%d start=%.0f max=%d min=%d nread=%d\n", fsp->fnum, (double)startpos,
(int)maxcount, (int)mincount, (int)nread ) );
@@ -1652,6 +1720,7 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
size_t numtoread;
NTSTATUS status;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+ BOOL my_lock_ctx = False;
START_PROFILE(SMBlockread);
CHECK_FSP(fsp,conn);
@@ -1671,13 +1740,21 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
* protocol request that predates the read/write lock concept.
* Thus instead of asking for a read lock here we need to ask
* for a write lock. JRA.
+ * Note that the requested lock size is unaffected by max_recv.
*/
status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid),
- (SMB_BIG_UINT)numtoread, (SMB_BIG_UINT)startpos, WRITE_LOCK);
+ (SMB_BIG_UINT)numtoread, (SMB_BIG_UINT)startpos, WRITE_LOCK, &my_lock_ctx);
if (NT_STATUS_V(status)) {
- if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+#if 0
+ /*
+ * We used to make lockread a blocking lock. It turns out
+ * that this isn't on W2k. Found by the Samba 4 RAW-READ torture
+ * tester. JRA.
+ */
+
+ if (lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) {
/*
* A blocking lock was requested. Package up
* this smb into a queued request and push it
@@ -1689,10 +1766,21 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
return -1;
}
}
+#endif
END_PROFILE(SMBlockread);
return ERROR_NT(status);
}
+ /*
+ * However the requested READ size IS affected by max_recv. Insanity.... JRA.
+ */
+
+ if (numtoread > max_recv) {
+ DEBUG(0,("reply_lockread: requested read size (%u) is greater than maximum allowed (%u). \
+Returning short read of maximum allowed for compatibility with Windows 2000.\n",
+ (unsigned int)numtoread, (unsigned int)max_recv ));
+ numtoread = MIN(numtoread,max_recv);
+ }
nread = read_file(fsp,data,startpos,numtoread);
if (nread < 0) {
@@ -1734,6 +1822,16 @@ int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int
outsize = set_message(outbuf,5,3,True);
numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
+ /*
+ * The requested read size cannot be greater than max_recv. JRA.
+ */
+ if (numtoread > max_recv) {
+ DEBUG(0,("reply_read: requested read size (%u) is greater than maximum allowed (%u). \
+Returning short read of maximum allowed for compatibility with Windows 2000.\n",
+ (unsigned int)numtoread, (unsigned int)max_recv ));
+ numtoread = MIN(numtoread,max_recv);
+ }
+
data = smb_buf(outbuf) + 3;
if (is_locked(fsp,conn,(SMB_BIG_UINT)numtoread,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
@@ -1801,6 +1899,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length
* correct amount of data).
*/
+ SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */
SSVAL(outbuf,smb_vwv5,smb_maxcnt);
SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
SSVAL(smb_buf(outbuf),-2,smb_maxcnt);
@@ -1839,6 +1938,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length
return(UNIXERROR(ERRDOS,ERRnoaccess));
}
+ SSVAL(outbuf,smb_vwv2,0xFFFF); /* Remaining - must be -1. */
SSVAL(outbuf,smb_vwv5,nread);
SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
SSVAL(smb_buf(outbuf),-2,nread);
@@ -1931,7 +2031,7 @@ int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size,
START_PROFILE(SMBwritebraw);
if (srv_is_signing_active()) {
- exit_server("reply_readbraw: SMB signing is active - raw reads/writes are disallowed.");
+ exit_server("reply_writebraw: SMB signing is active - raw reads/writes are disallowed.");
}
CHECK_FSP(fsp,conn);
@@ -2059,7 +2159,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
size_t numtowrite;
SMB_OFF_T startpos;
char *data;
- NTSTATUS status;
+ NTSTATUS status = NT_STATUS_OK;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
int outsize = 0;
START_PROFILE(SMBwriteunlock);
@@ -2071,7 +2171,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv2);
data = smb_buf(inbuf) + 3;
- if (is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos,
+ if (numtowrite && is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos,
WRITE_LOCK,False)) {
END_PROFILE(SMBwriteunlock);
return ERROR_DOS(ERRDOS,ERRlock);
@@ -2093,11 +2193,13 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
return(UNIXERROR(ERRHRD,ERRdiskfull));
}
- status = do_unlock(fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtowrite,
- (SMB_BIG_UINT)startpos);
- if (NT_STATUS_V(status)) {
- END_PROFILE(SMBwriteunlock);
- return ERROR_NT(status);
+ if (numtowrite) {
+ status = do_unlock(fsp, conn, SVAL(inbuf,smb_pid), (SMB_BIG_UINT)numtowrite,
+ (SMB_BIG_UINT)startpos);
+ if (NT_STATUS_V(status)) {
+ END_PROFILE(SMBwriteunlock);
+ return ERROR_NT(status);
+ }
}
outsize = set_message(outbuf,1,0,True);
@@ -2520,7 +2622,7 @@ int reply_writeclose(connection_struct *conn,
mtime = make_unix_date3(inbuf+smb_vwv4);
data = smb_buf(inbuf) + 1;
- if (is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK,False)) {
+ if (numtowrite && is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK,False)) {
END_PROFILE(SMBwriteclose);
return ERROR_DOS(ERRDOS,ERRlock);
}
@@ -2529,7 +2631,16 @@ int reply_writeclose(connection_struct *conn,
set_filetime(conn, fsp->fsp_name,mtime);
- close_err = close_file(fsp,True);
+ /*
+ * More insanity. W2K only closes the file if writelen > 0.
+ * JRA.
+ */
+
+ if (numtowrite) {
+ DEBUG(3,("reply_writeclose: zero length write doesn't close file %s\n",
+ fsp->fsp_name ));
+ close_err = close_file(fsp,True);
+ }
DEBUG(3,("writeclose fnum=%d num=%d wrote=%d (numopen=%d)\n",
fsp->fnum, (int)numtowrite, (int)nwritten,
@@ -2564,6 +2675,8 @@ int reply_lock(connection_struct *conn,
SMB_BIG_UINT count,offset;
NTSTATUS status;
files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+ BOOL my_lock_ctx = False;
+
START_PROFILE(SMBlock);
CHECK_FSP(fsp,conn);
@@ -2576,9 +2689,11 @@ int reply_lock(connection_struct *conn,
DEBUG(3,("lock fd=%d fnum=%d offset=%.0f count=%.0f\n",
fsp->fd, fsp->fnum, (double)offset, (double)count));
- status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK);
+ status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK, &my_lock_ctx);
if (NT_STATUS_V(status)) {
- if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+#if 0
+ /* Tests using Samba4 against W2K show this call never creates a blocking lock. */
+ if (lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) {
/*
* A blocking lock was requested. Package up
* this smb into a queued request and push it
@@ -2589,6 +2704,7 @@ int reply_lock(connection_struct *conn,
return -1;
}
}
+#endif
END_PROFILE(SMBlock);
return ERROR_NT(status);
}
@@ -2921,13 +3037,19 @@ int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
NTSTATUS status;
START_PROFILE(SMBmkdir);
- srvstr_pull_buf(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE);
+ srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBmkdir);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(directory, conn, inbuf, outbuf);
status = mkdir_internal(conn, directory);
- if (!NT_STATUS_IS_OK(status))
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBmkdir);
return ERROR_NT(status);
+ }
outsize = set_message(outbuf,0,0,True);
@@ -3082,9 +3204,14 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
BOOL ok = False;
BOOL bad_path = False;
SMB_STRUCT_STAT sbuf;
+ NTSTATUS status;
START_PROFILE(SMBrmdir);
- srvstr_pull_buf(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE);
+ srvstr_get_path(inbuf, directory, smb_buf(inbuf) + 1, sizeof(directory), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBrmdir);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(directory, conn, inbuf, outbuf)
@@ -3579,9 +3706,17 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
START_PROFILE(SMBmv);
p = smb_buf(inbuf) + 1;
- p += srvstr_pull_buf(inbuf, name, p, sizeof(name), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, name, p, sizeof(name), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBmv);
+ return ERROR_NT(status);
+ }
p++;
- p += srvstr_pull_buf(inbuf, newname, p, sizeof(newname), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, newname, p, sizeof(newname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBmv);
+ return ERROR_NT(status);
+ }
RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
RESOLVE_DFSPATH(newname, conn, inbuf, outbuf);
@@ -3590,6 +3725,7 @@ int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
status = rename_internals(conn, name, newname, False);
if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBmv);
return ERROR_NT(status);
}
@@ -3707,14 +3843,23 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
BOOL bad_path2 = False;
BOOL rc = True;
SMB_STRUCT_STAT sbuf1, sbuf2;
+ NTSTATUS status;
START_PROFILE(SMBcopy);
*directory = *mask = 0;
p = smb_buf(inbuf);
- p += srvstr_pull_buf(inbuf, name, p, sizeof(name), STR_TERMINATE);
- p += srvstr_pull_buf(inbuf, newname, p, sizeof(newname), STR_TERMINATE);
+ p += srvstr_get_path(inbuf, name, p, sizeof(name), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBcopy);
+ return ERROR_NT(status);
+ }
+ p += srvstr_get_path(inbuf, newname, p, sizeof(newname), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(SMBcopy);
+ return ERROR_NT(status);
+ }
DEBUG(3,("reply_copy : %s -> %s\n",name,newname));
@@ -3860,6 +4005,7 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
int outsize = 0;
BOOL ok = False;
pstring newdir;
+ NTSTATUS status;
START_PROFILE(pathworks_setdir);
@@ -3869,7 +4015,11 @@ int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
return ERROR_DOS(ERRDOS,ERRnoaccess);
}
- srvstr_pull_buf(inbuf, newdir, smb_buf(inbuf) + 1, sizeof(newdir), STR_TERMINATE);
+ srvstr_get_path(inbuf, newdir, smb_buf(inbuf) + 1, sizeof(newdir), STR_TERMINATE,&status);
+ if (!NT_STATUS_IS_OK(status)) {
+ END_PROFILE(pathworks_setdir);
+ return ERROR_NT(status);
+ }
if (strlen(newdir) == 0) {
ok = True;
@@ -4044,6 +4194,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf,char *outbuf,int length,
char *data;
BOOL large_file_format = (locktype & LOCKING_ANDX_LARGE_FILES)?True:False;
BOOL err;
+ BOOL my_lock_ctx = False;
NTSTATUS status;
START_PROFILE(SMBlockingX);
@@ -4164,9 +4315,9 @@ no oplock granted on this file (%s).\n", fsp->fnum, fsp->fsp_name));
fsp->fsp_name, (int)lock_timeout ));
status = do_lock_spin(fsp,conn,lock_pid, count,offset,
- ((locktype & 1) ? READ_LOCK : WRITE_LOCK));
+ ((locktype & 1) ? READ_LOCK : WRITE_LOCK), &my_lock_ctx);
if (NT_STATUS_V(status)) {
- if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+ if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn)) && !my_lock_ctx && ERROR_WAS_LOCK_DENIED(status)) {
/*
* A blocking lock was requested. Package up
* this smb into a queued request and push it
diff --git a/source/smbd/service.c b/source/smbd/service.c
index 44d73b2ab27..e5655bd9f4c 100644
--- a/source/smbd/service.c
+++ b/source/smbd/service.c
@@ -259,23 +259,27 @@ static NTSTATUS share_sanity_checks(int snum, fstring dev)
return NT_STATUS_OK;
}
-
/****************************************************************************
readonly share?
****************************************************************************/
+
static void set_read_only(connection_struct *conn, gid_t *groups, size_t n_groups)
{
char **list;
- char *service = lp_servicename(conn->service);
+ const char *service = lp_servicename(conn->service);
conn->read_only = lp_readonly(conn->service);
- if (!service) return;
+ if (!service)
+ return;
str_list_copy(&list, lp_readlist(conn->service));
if (list) {
- if ( !str_list_sub_basic(list, current_user_info.smb_name) ) {
+ if (!str_list_sub_basic(list, current_user_info.smb_name) ) {
DEBUG(0, ("ERROR: read list substitution failed\n"));
}
+ if (!str_list_substitute(list, "%S", service)) {
+ DEBUG(0, ("ERROR: read list service substitution failed\n"));
+ }
if (user_in_list(conn->user, (const char **)list, groups, n_groups))
conn->read_only = True;
str_list_free(&list);
@@ -283,19 +287,22 @@ static void set_read_only(connection_struct *conn, gid_t *groups, size_t n_group
str_list_copy(&list, lp_writelist(conn->service));
if (list) {
- if ( !str_list_sub_basic(list, current_user_info.smb_name) ) {
+ if (!str_list_sub_basic(list, current_user_info.smb_name) ) {
DEBUG(0, ("ERROR: write list substitution failed\n"));
}
+ if (!str_list_substitute(list, "%S", service)) {
+ DEBUG(0, ("ERROR: write list service substitution failed\n"));
+ }
if (user_in_list(conn->user, (const char **)list, groups, n_groups))
conn->read_only = False;
str_list_free(&list);
}
}
-
/****************************************************************************
admin user check
****************************************************************************/
+
static void set_admin_user(connection_struct *conn, gid_t *groups, size_t n_groups)
{
/* admin user check */
@@ -887,6 +894,9 @@ void close_cnum(connection_struct *conn, uint16 vuid)
file_close_conn(conn);
dptr_closecnum(conn);
+ /* make sure we leave the directory available for unmount */
+ vfs_ChDir(conn, "/");
+
/* execute any "postexec = " line */
if (*lp_postexec(SNUM(conn)) &&
change_to_user(conn, vuid)) {
@@ -906,8 +916,5 @@ void close_cnum(connection_struct *conn, uint16 vuid)
smbrun(cmd,NULL);
}
- /* make sure we leave the directory available for unmount */
- vfs_ChDir(conn, "/");
-
conn_free(conn);
}
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 033e76a33e1..3d53387c9f1 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -1407,17 +1407,34 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf
switch (info_level) {
case SMB_INFO_ALLOCATION:
{
- SMB_BIG_UINT dfree,dsize,bsize;
+ SMB_BIG_UINT dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
data_len = 18;
SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize);
+ block_size = lp_block_size(snum);
+ if (bsize < block_size) {
+ SMB_BIG_UINT factor = block_size/bsize;
+ bsize = block_size;
+ dsize /= factor;
+ dfree /= factor;
+ }
+ if (bsize > block_size) {
+ SMB_BIG_UINT factor = bsize/block_size;
+ bsize = block_size;
+ dsize *= factor;
+ dfree *= factor;
+ }
+ bytes_per_sector = 512;
+ sectors_per_unit = bsize/bytes_per_sector;
+
+ DEBUG(5,("call_trans2qfsinfo : SMB_INFO_ALLOCATION id=%x, bsize=%u, cSectorUnit=%u, \
+cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_dev, (unsigned int)bsize, (unsigned int)sectors_per_unit,
+ (unsigned int)bytes_per_sector, (unsigned int)dsize, (unsigned int)dfree));
+
SIVAL(pdata,l1_idFileSystem,st.st_dev);
- SIVAL(pdata,l1_cSectorUnit,bsize/512);
+ SIVAL(pdata,l1_cSectorUnit,sectors_per_unit);
SIVAL(pdata,l1_cUnit,dsize);
SIVAL(pdata,l1_cUnitAvail,dfree);
- SSVAL(pdata,l1_cbSector,512);
- DEBUG(5,("call_trans2qfsinfo : bsize=%u, id=%x, cSectorUnit=%u, cUnit=%u, cUnitAvail=%u, cbSector=%d\n",
- (unsigned int)bsize, (unsigned int)st.st_dev, ((unsigned int)bsize)/512, (unsigned int)dsize,
- (unsigned int)dfree, 512));
+ SSVAL(pdata,l1_cbSector,bytes_per_sector);
break;
}
@@ -1785,12 +1802,9 @@ int set_bad_path_error(int err, BOOL bad_path, char *outbuf, int def_class, uint
err, (int)bad_path ));
if(err == ENOENT) {
- unix_ERR_class = ERRDOS;
if (bad_path) {
- unix_ERR_code = ERRbadpath;
return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
} else {
- unix_ERR_code = ERRbadfile;
return ERROR_NT(NT_STATUS_OBJECT_NAME_NOT_FOUND);
}
}
diff --git a/source/tdb/tdbback.c b/source/tdb/tdbback.c
index 744cface557..68b6fadc882 100644
--- a/source/tdb/tdbback.c
+++ b/source/tdb/tdbback.c
@@ -18,6 +18,11 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#ifdef STANDALONE
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
@@ -27,10 +32,16 @@
#include <fcntl.h>
#include <time.h>
#include <sys/mman.h>
+
#include <sys/stat.h>
#include <sys/time.h>
#include <ctype.h>
#include <signal.h>
+
+#else
+#include "includes.h"
+#endif
+
#include "tdb.h"
static int failed;
@@ -44,8 +55,7 @@ char *add_suffix(const char *name, const char *suffix)
fprintf(stderr,"Out of memory!\n");
exit(1);
}
- strncpy(ret, name, len);
- strncat(ret, suffix, len);
+ snprintf(ret, len, "%s%s", name, suffix);
return ret;
}
diff --git a/source/tdb/tdbbackup.c b/source/tdb/tdbbackup.c
index 0eaf6b6c0b7..1a0e1c1588f 100644
--- a/source/tdb/tdbbackup.c
+++ b/source/tdb/tdbbackup.c
@@ -41,6 +41,11 @@
*/
+#ifdef STANDALONE
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
@@ -54,6 +59,13 @@
#include <sys/time.h>
#include <ctype.h>
#include <signal.h>
+
+#else
+
+#include "includes.h"
+
+#endif
+
#include "tdb.h"
#include "tdbback.h"
diff --git a/source/utils/net_ads_cldap.c b/source/utils/net_ads_cldap.c
index 595e6e94347..44de9cb8911 100644
--- a/source/utils/net_ads_cldap.c
+++ b/source/utils/net_ads_cldap.c
@@ -32,19 +32,15 @@ struct cldap_netlogon_reply {
GUID guid;
char forest[MAX_DNS_LABEL];
- char unk0[MAX_DNS_LABEL];
char domain[MAX_DNS_LABEL];
char hostname[MAX_DNS_LABEL];
char netbios_domain[MAX_DNS_LABEL];
- char unk1[MAX_DNS_LABEL];
char netbios_hostname[MAX_DNS_LABEL];
- char unk2[MAX_DNS_LABEL];
+ char unk[MAX_DNS_LABEL];
char user_name[MAX_DNS_LABEL];
- char unk3[MAX_DNS_LABEL];
char site_name[MAX_DNS_LABEL];
- char unk4[MAX_DNS_LABEL];
char site_name_2[MAX_DNS_LABEL];
uint32 version;
@@ -115,7 +111,7 @@ static unsigned pull_netlogon_string(char *ret, const char *ptr,
}
} while (*ptr);
- return ret_len ? ret_len : 1;
+ return followed_ptr ? ret_len : ret_len + 1;
}
/*
@@ -249,13 +245,11 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply)
p += GUID_SIZE;
p += pull_netlogon_string(reply->forest, p, (const char *)os3.data);
- p += pull_netlogon_string(reply->unk0, p, (const char *)os3.data);
p += pull_netlogon_string(reply->domain, p, (const char *)os3.data);
p += pull_netlogon_string(reply->hostname, p, (const char *)os3.data);
p += pull_netlogon_string(reply->netbios_domain, p, (const char *)os3.data);
- p += pull_netlogon_string(reply->unk1, p, (const char *)os3.data);
p += pull_netlogon_string(reply->netbios_hostname, p, (const char *)os3.data);
- p += pull_netlogon_string(reply->unk2, p, (const char *)os3.data);
+ p += pull_netlogon_string(reply->unk, p, (const char *)os3.data);
if (reply->type == SAMLOGON_AD_R) {
p += pull_netlogon_string(reply->user_name, p, (const char *)os3.data);
@@ -263,9 +257,7 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply)
*reply->user_name = 0;
}
- p += pull_netlogon_string(reply->unk3, p, (const char *)os3.data);
p += pull_netlogon_string(reply->site_name, p, (const char *)os3.data);
- p += pull_netlogon_string(reply->unk4, p, (const char *)os3.data);
p += pull_netlogon_string(reply->site_name_2, p, (const char *)os3.data);
reply->version = IVAL(p, 0);
@@ -349,20 +341,16 @@ int ads_cldap_netlogon(ADS_STRUCT *ads)
(reply.flags & ADS_NDNC) ? "yes" : "no");
printf("Forest:\t\t\t%s\n", reply.forest);
- if (*reply.unk0) printf("Unk0:\t\t\t%s\n", reply.unk0);
printf("Domain:\t\t\t%s\n", reply.domain);
printf("Domain Controller:\t%s\n", reply.hostname);
printf("Pre-Win2k Domain:\t%s\n", reply.netbios_domain);
- if (*reply.unk1) printf("Unk1:\t\t\t%s\n", reply.unk1);
printf("Pre-Win2k Hostname:\t%s\n", reply.netbios_hostname);
- if (*reply.unk2) printf("Unk2:\t\t\t%s\n", reply.unk2);
+ if (*reply.unk) printf("Unk:\t\t\t%s\n", reply.unk);
if (*reply.user_name) printf("User name:\t%s\n", reply.user_name);
- if (*reply.unk3) printf("Unk3:\t\t\t%s\n", reply.unk3);
printf("Site Name:\t\t%s\n", reply.site_name);
- if (*reply.unk4) printf("Unk4:\t\t\t%s\n", reply.unk4);
printf("Site Name (2):\t\t%s\n", reply.site_name_2);
d_printf("NT Version: %d\n", reply.version);
diff --git a/source/utils/profiles.c b/source/utils/profiles.c
index 3230eb21fc8..20b1222e723 100644
--- a/source/utils/profiles.c
+++ b/source/utils/profiles.c
@@ -295,7 +295,6 @@ Hope this helps.... (Although it was "fun" for me to uncover this things,
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-#include <sys/mman.h>
typedef unsigned int DWORD;
typedef unsigned short WORD;
@@ -610,7 +609,12 @@ int main(int argc, char *argv[])
* dealing with the records. We are interested in the sk record
*/
start = 0;
+
+#ifdef HAVE_MMAP
base = mmap(&start, sbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+#else
+ base = (char *)-1;
+#endif
if ((int)base == -1) {
fprintf(stderr, "Could not mmap file: %s, %s\n", poptPeekArg(pc),
@@ -726,7 +730,9 @@ int main(int argc, char *argv[])
sk_hdr = (SK_HDR *)(base + OFF(IVAL(&sk_hdr->prev_off, 0)));
} while (sk_off != first_sk_off);
+#ifdef HAVE_MMAP
munmap(base, sbuf.st_size);
+#endif
poptFreeContext(pc);
diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c
index 58ee57b5dd2..5a70d168842 100644
--- a/source/utils/smbcacls.c
+++ b/source/utils/smbcacls.c
@@ -389,7 +389,7 @@ static SEC_DESC *sec_desc_parse(char *str)
return NULL;
}
- ret = make_sec_desc(ctx,revision, owner_sid, grp_sid,
+ ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, grp_sid,
NULL, dacl, &sd_size);
SAFE_FREE(grp_sid);
@@ -504,7 +504,7 @@ static int owner_set(struct cli_state *cli, enum chown_mode change_mode,
return EXIT_FAILED;
}
- sd = make_sec_desc(ctx,old->revision,
+ sd = make_sec_desc(ctx,old->revision, old->type,
(change_mode == REQUEST_CHOWN) ? &sid : NULL,
(change_mode == REQUEST_CHGRP) ? &sid : NULL,
NULL, NULL, &sd_size);
@@ -679,7 +679,7 @@ static int cacl_set(struct cli_state *cli, char *filename,
sort_acl(old->dacl);
/* Create new security descriptor and set it */
- sd = make_sec_desc(ctx,old->revision, NULL, NULL,
+ sd = make_sec_desc(ctx,old->revision, old->type, NULL, NULL,
NULL, old->dacl, &sd_size);
fnum = cli_nt_create(cli, filename, WRITE_DAC_ACCESS);
diff --git a/source/utils/testparm.c b/source/utils/testparm.c
index 34c25480d94..085156305b1 100644
--- a/source/utils/testparm.c
+++ b/source/utils/testparm.c
@@ -226,7 +226,12 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_
cname = poptGetArg(pc);
caddr = poptGetArg(pc);
-
+
+ if ( cname && ! caddr ) {
+ printf ( "ERROR: You must specify both a machine name and an IP address.\n" );
+ return(1);
+ }
+
if (new_local_machine) {
set_local_machine_name(new_local_machine, True);
}
@@ -346,8 +351,9 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_
if(cname && caddr){
/* this is totally ugly, a real `quick' hack */
for (s=0;s<1000;s++) {
- if (VALID_SNUM(s)) {
- if (allow_access(lp_hostsdeny(s), lp_hostsallow(s), cname, caddr)) {
+ if (VALID_SNUM(s)) {
+ if (allow_access(lp_hostsdeny(-1), lp_hostsallow(-1), cname, caddr)
+ && allow_access(lp_hostsdeny(s), lp_hostsallow(s), cname, caddr)) {
printf("Allow connection from %s (%s) to %s\n",
cname,caddr,lp_servicename(s));
} else {
diff --git a/source/web/statuspage.c b/source/web/statuspage.c
index 21d7e457389..9ce9c05b19f 100644
--- a/source/web/statuspage.c
+++ b/source/web/statuspage.c
@@ -120,9 +120,9 @@ static void print_share_mode(share_mode_entry *e, char *fname)
d_printf("<td>");
switch (e->share_mode&0xF) {
- case 0: d_printf("RDONLY "); break;
- case 1: d_printf("WRONLY "); break;
- case 2: d_printf("RDWR "); break;
+ case 0: d_printf("%s", _("RDONLY ")); break;
+ case 1: d_printf("%s", _("WRONLY ")); break;
+ case 2: d_printf("%s", _("RDWR ")); break;
}
d_printf("</td>");
@@ -297,6 +297,10 @@ void status_page(void)
PID_or_Machine = 1;
}
+ if (cgi_variable("show_pid_in_col_1")) {
+ PID_or_Machine = 0;
+ }
+
tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
if (tdb) tdb_traverse(tdb, traverse_fn1, NULL);
@@ -307,14 +311,14 @@ void status_page(void)
d_printf("<FORM method=post>\n");
if (!autorefresh) {
- d_printf("<input type=submit value=\"%s\" name=autorefresh>\n", _("Auto Refresh"));
+ d_printf("<input type=submit value=\"%s\" name=\"autorefresh\">\n", _("Auto Refresh"));
d_printf("<br>%s", _("Refresh Interval: "));
- d_printf("<input type=text size=2 name=\"refresh_interval\" value=%d>\n",
+ d_printf("<input type=text size=2 name=\"refresh_interval\" value=\"%d\">\n",
refresh_interval);
} else {
- d_printf("<input type=submit value=\"%s\" name=norefresh>\n", _("Stop Refreshing"));
+ d_printf("<input type=submit value=\"%s\" name=\"norefresh\">\n", _("Stop Refreshing"));
d_printf("<br>%s%d\n", _("Refresh Interval: "), refresh_interval);
- d_printf("<input type=hidden name=refresh value=1>\n");
+ d_printf("<input type=hidden name=\"refresh\" value=\"1\">\n");
}
d_printf("<p>\n");
@@ -418,8 +422,8 @@ void status_page(void)
if (tdb) tdb_close(tdb);
- d_printf("<br><input type=submit name=\"show_client_in_col_1\" value=\"Show Client in col 1\">\n");
- d_printf("<input type=submit name=\"show_pid_in_col_1\" value=\"Show PID in col 1\">\n");
+ d_printf("<br><input type=submit name=\"show_client_in_col_1\" value=\"%s\">\n", _("Show Client in col 1"));
+ d_printf("<input type=submit name=\"show_pid_in_col_1\" value=\"%s\">\n", _("Show PID in col 1"));
d_printf("</FORM>\n");
diff --git a/source/web/swat.c b/source/web/swat.c
index 1c892559dd9..f4046b46a26 100644
--- a/source/web/swat.c
+++ b/source/web/swat.c
@@ -114,7 +114,8 @@ static int include_html(const char *fname)
fd = web_open(fname, O_RDONLY, 0);
if (fd == -1) {
- d_printf("ERROR: Can't open %s\n", fname);
+ d_printf(_("ERROR: Can't open %s"), fname);
+ d_printf("\n");
return 0;
}
@@ -261,7 +262,7 @@ static void show_parameter(int snum, struct parm_struct *parm)
break;
case P_INTEGER:
- d_printf("<input type=text size=8 name=\"parm_%s\" value=%d>", make_parm_name(parm->label), *(int *)ptr);
+ d_printf("<input type=text size=8 name=\"parm_%s\" value=\"%d\">", make_parm_name(parm->label), *(int *)ptr);
d_printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%d\'\">",
_("Set Default"), make_parm_name(parm->label),(int)(parm->def.ivalue));
break;
@@ -404,7 +405,8 @@ static int save_reload(int snum)
f = sys_fopen(dyn_CONFIGFILE,"w");
if (!f) {
- d_printf("failed to open %s for writing\n", dyn_CONFIGFILE);
+ d_printf(_("failed to open %s for writing"), dyn_CONFIGFILE);
+ d_printf("\n");
return 0;
}
@@ -426,7 +428,8 @@ static int save_reload(int snum)
lp_killunused(NULL);
if (!load_config(False)) {
- d_printf("Can't reload %s\n", dyn_CONFIGFILE);
+ d_printf(_("Can't reload %s"), dyn_CONFIGFILE);
+ d_printf("\n");
return 0;
}
iNumNonAutoPrintServices = lp_numservices();
@@ -495,7 +498,8 @@ static void show_main_buttons(void)
char *p;
if ((p = cgi_user_name()) && strcmp(p, "root")) {
- d_printf(_("Logged in as <b>%s</b><p>\n"), p);
+ d_printf(_("Logged in as <b>%s</b>"), p);
+ d_printf("<p>\n");
}
image_link(_("Home"), "", "images/home.gif");
@@ -519,10 +523,10 @@ static void show_main_buttons(void)
****************************************************************************/
static void ViewModeBoxes(int mode)
{
- d_printf("<p>%s\n", _("Current View Is:&nbsp \n"));
- d_printf("<input type=radio name=\"ViewMode\" value=0 %s>Basic\n", (mode == 0) ? "checked" : "");
- d_printf("<input type=radio name=\"ViewMode\" value=1 %s>Advanced\n", (mode == 1) ? "checked" : "");
- d_printf("<br>%s\n", _("Change View To:&nbsp"));
+ d_printf("<p>%s:&nbsp;\n", _("Current View Is"));
+ d_printf("<input type=radio name=\"ViewMode\" value=0 %s>%s\n", ((mode == 0) ? "checked" : ""), _("Basic"));
+ d_printf("<input type=radio name=\"ViewMode\" value=1 %s>%s\n", ((mode == 1) ? "checked" : ""), _("Advanced"));
+ d_printf("<br>%s:&nbsp;\n", _("Change View To"));
d_printf("<input type=submit name=\"BasicMode\" value=\"%s\">\n", _("Basic"));
d_printf("<input type=submit name=\"AdvMode\" value=\"%s\">\n", _("Advanced"));
d_printf("</p><br>\n");
@@ -572,7 +576,7 @@ static void wizard_params_page(void)
/* Here we first set and commit all the parameters that were selected
in the previous screen. */
- d_printf("<H2>Wizard Parameter Edit Page</H2>\n");
+ d_printf("<H2>%s</H2>\n", _("Wizard Parameter Edit Page"));
if (cgi_variable("Commit")) {
commit_parameters(GLOBAL_SECTION_SNUM);
@@ -601,7 +605,7 @@ static void rewritecfg_file(void)
{
commit_parameters(GLOBAL_SECTION_SNUM);
save_reload(0);
- d_printf("<H2>Note: smb.conf %s</H2>\n", _("file has been read and rewritten"));
+ d_printf("<H2>%s</H2>\n", _("Note: smb.conf file has been read and rewritten"));
}
/****************************************************************************
@@ -709,36 +713,37 @@ static void wizard_page(void)
role = lp_server_role();
/* Here we go ... */
- d_printf("<H2>Samba Configuration Wizard</H2>\n");
+ d_printf("<H2>%s</H2>\n", _("Samba Configuration Wizard"));
d_printf("<form method=post action=wizard>\n");
if (have_write_access) {
- d_printf(_("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments.\n"));
- d_printf(_("The same will happen if you press the commit button."));
- d_printf("<br><br>");
+ d_printf("%s\n", _("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments."));
+ d_printf("%s", _("The same will happen if you press the commit button."));
+ d_printf("<br><br>\n");
d_printf("<center>");
- d_printf("<input type=submit name=\"Rewrite\" value=%s> &nbsp;&nbsp;",_("Rewrite smb.conf file"));
- d_printf("<input type=submit name=\"Commit\" value=%s> &nbsp;&nbsp;",_("Commit"));
- d_printf("<input type=submit name=\"GetWizardParams\" value=%s>", _("Edit Parameter Values"));
- d_printf("</center>");
+ d_printf("<input type=submit name=\"Rewrite\" value=\"%s\"> &nbsp;&nbsp;",_("Rewrite smb.conf file"));
+ d_printf("<input type=submit name=\"Commit\" value=\"%s\"> &nbsp;&nbsp;",_("Commit"));
+ d_printf("<input type=submit name=\"GetWizardParams\" value=\"%s\">", _("Edit Parameter Values"));
+ d_printf("</center>\n");
}
d_printf("<hr>");
d_printf("<center><table border=0>");
- d_printf("<tr><td><b>%s</b></td>\n", "Server Type:&nbsp;");
- d_printf("<td><input type=radio name=\"ServerType\" value=0 %s> Stand Alone&nbsp;</td>", (role == ROLE_STANDALONE) ? "checked" : "");
- d_printf("<td><input type=radio name=\"ServerType\" value=1 %s> Domain Member&nbsp;</td>", (role == ROLE_DOMAIN_MEMBER) ? "checked" : "");
- d_printf("<td><input type=radio name=\"ServerType\" value=2 %s> Domain Controller&nbsp;</td>", (role == ROLE_DOMAIN_PDC) ? "checked" : "");
- d_printf("</tr>");
+ d_printf("<tr><td><b>%s:&nbsp;</b></td>\n", _("Server Type"));
+ d_printf("<td><input type=radio name=\"ServerType\" value=\"0\" %s> %s&nbsp;</td>", ((role == ROLE_STANDALONE) ? "checked" : ""), _("Stand Alone"));
+ d_printf("<td><input type=radio name=\"ServerType\" value=\"1\" %s> %s&nbsp;</td>", ((role == ROLE_DOMAIN_MEMBER) ? "checked" : ""), _("Domain Member"));
+ d_printf("<td><input type=radio name=\"ServerType\" value=\"2\" %s> %s&nbsp;</td>", ((role == ROLE_DOMAIN_PDC) ? "checked" : ""), _("Domain Controller"));
+ d_printf("</tr>\n");
if (role == ROLE_DOMAIN_BDC) {
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Unusual Type in smb.conf - Please Select New Mode</font></td></tr>");
+ d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Unusual Type in smb.conf - Please Select New Mode"));
}
- d_printf("<tr><td><b>%s</b></td>\n", "Configure WINS As:&nbsp;");
- d_printf("<td><input type=radio name=\"WINSType\" value=0 %s> Not Used&nbsp;</td>", (winstype == 0) ? "checked" : "");
- d_printf("<td><input type=radio name=\"WINSType\" value=1 %s> Server for client use&nbsp;</td>", (winstype == 1) ? "checked" : "");
- d_printf("<td><input type=radio name=\"WINSType\" value=2 %s> Client of another WINS server&nbsp;</td>", (winstype == 2) ? "checked" : "");
- d_printf("<tr><td></td><td></td><td></td><td>Remote WINS Server&nbsp;<input type=text size=\"16\" name=\"WINSAddr\" value=\"");
-
+ d_printf("<tr><td><b>%s:&nbsp;</b></td>\n", _("Configure WINS As"));
+ d_printf("<td><input type=radio name=\"WINSType\" value=\"0\" %s> %s&nbsp;</td>", ((winstype == 0) ? "checked" : ""), _("Not Used"));
+ d_printf("<td><input type=radio name=\"WINSType\" value=\"1\" %s> %s&nbsp;</td>", ((winstype == 1) ? "checked" : ""), _("Server for client use"));
+ d_printf("<td><input type=radio name=\"WINSType\" value=\"2\" %s> %s&nbsp;</td>", ((winstype == 2) ? "checked" : ""), _("Client of another WINS server"));
+ d_printf("</tr>\n");
+ d_printf("<tr><td></td><td></td><td></td><td>%s&nbsp;<input type=text size=\"16\" name=\"WINSAddr\" value=\"", _("Remote WINS Server"));
+
/* Print out the list of wins servers */
if(lp_wins_server_list()) {
int i;
@@ -746,28 +751,27 @@ static void wizard_page(void)
for(i = 0; wins_servers[i]; i++) d_printf("%s ", wins_servers[i]);
}
- d_printf("\"></td></tr>");
+ d_printf("\"></td></tr>\n");
if (winstype == 3) {
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Error: WINS Server Mode and WINS Support both set in smb.conf</font></td></tr>");
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Please Select desired WINS mode above.</font></td></tr>");
+ d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Error: WINS Server Mode and WINS Support both set in smb.conf"));
+ d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">%s</font></td></tr>\n", _("Please Select desired WINS mode above."));
}
- d_printf("</tr>");
- d_printf("<tr><td><b>%s</b></td>\n","Expose Home Directories:&nbsp;");
- d_printf("<td><input type=radio name=\"HomeExpo\" value=1 %s> Yes</td>", (have_home == -1) ? "" : "checked ");
- d_printf("<td><input type=radio name=\"HomeExpo\" value=0 %s> No</td>", (have_home == -1 ) ? "checked" : "");
- d_printf("<td></td></tr>");
+ d_printf("<tr><td><b>%s:&nbsp;</b></td>\n", _("Expose Home Directories"));
+ d_printf("<td><input type=radio name=\"HomeExpo\" value=\"1\" %s> Yes</td>", (have_home == -1) ? "" : "checked ");
+ d_printf("<td><input type=radio name=\"HomeExpo\" value=\"0\" %s> No</td>", (have_home == -1 ) ? "checked" : "");
+ d_printf("<td></td></tr>\n");
/* Enable this when we are ready ....
- * d_printf("<tr><td><b>%s</b></td>\n","Is Print Server:&nbsp;");
- * d_printf("<td><input type=radio name=\"PtrSvr\" value=1 %s> Yes</td>");
- * d_printf("<td><input type=radio name=\"PtrSvr\" value=0 %s> No</td>");
- * d_printf("<td></td></tr>");
+ * d_printf("<tr><td><b>%s:&nbsp;</b></td>\n", _("Is Print Server"));
+ * d_printf("<td><input type=radio name=\"PtrSvr\" value=\"1\" %s> Yes</td>");
+ * d_printf("<td><input type=radio name=\"PtrSvr\" value=\"0\" %s> No</td>");
+ * d_printf("<td></td></tr>\n");
*/
d_printf("</table></center>");
d_printf("<hr>");
- d_printf(_("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment.\n"));
+ d_printf("%s\n", _("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment."));
d_printf("</form>\n");
}
@@ -780,7 +784,7 @@ static void globals_page(void)
unsigned int parm_filter = FLAG_BASIC;
int mode = 0;
- d_printf("<H2>%s</H2>\n", _("Global Variables"));
+ d_printf("<H2>%s</H2>\n", _("Global Parameters"));
if (cgi_variable("Commit")) {
commit_parameters(GLOBAL_SECTION_SNUM);
@@ -937,7 +941,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name,
pstring msg_str;
if (demo_mode) {
- d_printf("%s<p>", _("password change in demo mode rejected\n"));
+ d_printf("%s\n<p>", _("password change in demo mode rejected"));
return False;
}
@@ -950,7 +954,7 @@ static BOOL change_password(const char *remote_machine, const char *user_name,
}
if(!initialize_password_db(True)) {
- d_printf("Can't setup password database vectors.\n<p>");
+ d_printf("%s\n<p>", _("Can't setup password database vectors."));
return False;
}
@@ -976,7 +980,7 @@ static void chg_passwd(void)
/* Make sure users name has been specified */
if (strlen(cgi_variable(SWAT_USER)) == 0) {
- d_printf("<p>%s", _(" Must specify \"User Name\" \n"));
+ d_printf("<p>%s\n", _(" Must specify \"User Name\" "));
return;
}
@@ -992,26 +996,26 @@ static void chg_passwd(void)
*/
if (((!am_root()) && (strlen( cgi_variable(OLD_PSWD)) <= 0)) ||
((cgi_variable(CHG_R_PASSWD_FLAG)) && (strlen( cgi_variable(OLD_PSWD)) <= 0))) {
- d_printf("<p>%s", _(" Must specify \"Old Password\" \n"));
+ d_printf("<p>%s\n", _(" Must specify \"Old Password\" "));
return;
}
/* If changing a users password on a remote hosts we have to know what host */
if ((cgi_variable(CHG_R_PASSWD_FLAG)) && (strlen( cgi_variable(RHOST)) <= 0)) {
- d_printf("<p>%s", _(" Must specify \"Remote Machine\" \n"));
+ d_printf("<p>%s\n", _(" Must specify \"Remote Machine\" "));
return;
}
/* Make sure new passwords have been specified */
if ((strlen( cgi_variable(NEW_PSWD)) <= 0) ||
(strlen( cgi_variable(NEW2_PSWD)) <= 0)) {
- d_printf("<p>%s", _(" Must specify \"New, and Re-typed Passwords\" \n"));
+ d_printf("<p>%s\n", _(" Must specify \"New, and Re-typed Passwords\" "));
return;
}
/* Make sure new passwords was typed correctly twice */
if (strcmp(cgi_variable(NEW_PSWD), cgi_variable(NEW2_PSWD)) != 0) {
- d_printf("<p>%s", _(" Re-typed password didn't match new password\n"));
+ d_printf("<p>%s\n", _(" Re-typed password didn't match new password "));
return;
}
}
@@ -1041,9 +1045,11 @@ static void chg_passwd(void)
if(local_flags == 0) {
d_printf("<p>");
if (rslt == True) {
- d_printf(_(" The passwd for '%s' has been changed. \n"), cgi_variable(SWAT_USER));
+ d_printf(_(" The passwd for '%s' has been changed."), cgi_variable(SWAT_USER));
+ d_printf("\n");
} else {
- d_printf(_(" The passwd for '%s' has NOT been changed. \n"), cgi_variable(SWAT_USER));
+ d_printf(_(" The passwd for '%s' has NOT been changed."), cgi_variable(SWAT_USER));
+ d_printf("\n");
}
}
@@ -1076,15 +1082,15 @@ static void passwd_page(void)
/*
* Create all the dialog boxes for data collection
*/
- d_printf("<tr><td>%s</td>\n", _(" User Name : "));
+ d_printf("<tr><td> %s : </td>\n", _("User Name"));
d_printf("<td><input type=text size=30 name=%s value=%s></td></tr> \n", SWAT_USER, new_name);
if (!am_root()) {
- d_printf("<tr><td>%s</td>\n", _(" Old Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("Old Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr> \n",OLD_PSWD);
}
- d_printf("<tr><td>%s</td>\n", _(" New Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("New Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW_PSWD);
- d_printf("<tr><td>%s</td>\n", _(" Re-type New Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("Re-type New Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW2_PSWD);
d_printf("</table>\n");
@@ -1123,15 +1129,15 @@ static void passwd_page(void)
/*
* Create all the dialog boxes for data collection
*/
- d_printf("<tr><td>%s</td>\n", _(" User Name : "));
+ d_printf("<tr><td> %s : </td>\n", _("User Name"));
d_printf("<td><input type=text size=30 name=%s value=%s></td></tr>\n",SWAT_USER, new_name);
- d_printf("<tr><td>%s</td>\n", _(" Old Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("Old Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr>\n",OLD_PSWD);
- d_printf("<tr><td>%s</td>\n", _(" New Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("New Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW_PSWD);
- d_printf("<tr><td>%s</td>\n", _(" Re-type New Password : "));
+ d_printf("<tr><td> %s : </td>\n", _("Re-type New Password"));
d_printf("<td><input type=password size=30 name=%s></td></tr>\n",NEW2_PSWD);
- d_printf("<tr><td>%s</td>\n", _(" Remote Machine : "));
+ d_printf("<tr><td> %s : </td>\n", _("Remote Machine"));
d_printf("<td><input type=text size=30 name=%s></td></tr>\n",RHOST);
d_printf("</table>");
@@ -1176,7 +1182,7 @@ static void printers_page(void)
d_printf(_("Printer names marked with [*] in the Choose Printer drop-down box "));
d_printf(_("are autoloaded printers from "));
d_printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name"));
- d_printf(_("Attempting to delete these printers from SWAT will have no effect.\n"));
+ d_printf("%s\n", _("Attempting to delete these printers from SWAT will have no effect."));
if (cgi_variable("Commit") && snum >= 0) {
commit_parameters(snum);
@@ -1222,8 +1228,8 @@ static void printers_page(void)
break;
}
d_printf("<table>\n");
- d_printf("<tr><td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Printer"));
- d_printf("<td><select name=share>\n");
+ d_printf("<tr><td><input type=submit name=\"selectshare\" value=\"%s\"></td>\n", _("Choose Printer"));
+ d_printf("<td><select name=\"share\">\n");
if (snum < 0 || !lp_print_ok(snum))
d_printf("<option value=\" \"> \n");
for (i=0;i<lp_numservices();i++) {
@@ -1248,8 +1254,8 @@ static void printers_page(void)
if (have_write_access) {
d_printf("<table>\n");
- d_printf("<tr><td><input type=submit name=createshare value=\"%s\"></td>\n", _("Create Printer"));
- d_printf("<td><input type=text size=30 name=newshare></td></tr>\n");
+ d_printf("<tr><td><input type=submit name=\"createshare\" value=\"%s\"></td>\n", _("Create Printer"));
+ d_printf("<td><input type=text size=30 name=\"newshare\"></td></tr>\n");
d_printf("</table>");
}
diff --git a/swat/help/welcome.html b/swat/help/welcome.html
index 8fc54ad5f29..59429ba47df 100644
--- a/swat/help/welcome.html
+++ b/swat/help/welcome.html
@@ -33,13 +33,12 @@ Please choose a configuration action using one of the above buttons
<li><a href="/swat/help/smbclient.1.html" target="docs">smbclient</a> - command line SMB client
<li><a href="/swat/help/smbmnt.8.html" target="docs">smbmnt</a> - helper utility for mounting SMB filesystems on Linux hosts
<li><a href="/swat/help/smbmount.8.html" target="docs">smbmount</a> - user space tool for mounting SMB filesystems under Linux
- <li><a href="/swat/help/smbspool.8.html" target="docs">smbspool</a> - command line SMB print client
<li><a href="/swat/help/smbumount.8.html" target="docs">smbumount</a> - user space tool for umounting SMB filesystems under Linux
<li><a href="/swat/help/ntlm_auth.1.html" target="docs">ntlm_auth</a> - allow external programs to use NTLM authentication
<li><a href="/swat/help/smbcquotas.1.html" target="docs">smbcquotas</a> - get or set quotas on NTFS 5 shares
<li><a href="/swat/help/smbsh.1.html" target="docs">smbsh</a> - Allow access to remote SMB shares using a UNIX shell
- <li><a href="/swat/help/smbtree.1.html" target="docs">smbtree</a> - Text-based SMB network browsing
<li><a href="/swat/help/smbspool.8.html" target="docs">smbspool</a> - Send a print job to an SMB printer
+ <li><a href="/swat/help/smbtree.1.html" target="docs">smbtree</a> - Text-based SMB network browsing
</ul>
<li><b>Diagnostic Utilities</b>
<ul>
diff --git a/swat/lang/ja/help/welcome.html b/swat/lang/ja/help/welcome.html
index f8266cf825b..fee6d2084ae 100644
--- a/swat/lang/ja/help/welcome.html
+++ b/swat/lang/ja/help/welcome.html
@@ -1,4 +1,4 @@
-<h2>SWAT : Samba Web Administaration Tool !</h2>
+<h2>SWAT : Samba Web Administration Tool !</h2>
<p>Sambaの設定は上のボタンをクリックして行います。 </p>
diff --git a/swat/lang/ja/images/globals.gif b/swat/lang/ja/images/globals.gif
deleted file mode 100644
index 5f8eb15b34a..00000000000
--- a/swat/lang/ja/images/globals.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/home.gif b/swat/lang/ja/images/home.gif
deleted file mode 100644
index a4e61229583..00000000000
--- a/swat/lang/ja/images/home.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/passwd.gif b/swat/lang/ja/images/passwd.gif
deleted file mode 100644
index c8242bf7228..00000000000
--- a/swat/lang/ja/images/passwd.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/printers.gif b/swat/lang/ja/images/printers.gif
deleted file mode 100644
index f0db94cb57a..00000000000
--- a/swat/lang/ja/images/printers.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/samba.gif b/swat/lang/ja/images/samba.gif
deleted file mode 100644
index 0c13dc9ef37..00000000000
--- a/swat/lang/ja/images/samba.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/shares.gif b/swat/lang/ja/images/shares.gif
deleted file mode 100644
index afc1b55cf5e..00000000000
--- a/swat/lang/ja/images/shares.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/status.gif b/swat/lang/ja/images/status.gif
deleted file mode 100644
index f506cda77f8..00000000000
--- a/swat/lang/ja/images/status.gif
+++ /dev/null
Binary files differ
diff --git a/swat/lang/ja/images/viewconfig.gif b/swat/lang/ja/images/viewconfig.gif
deleted file mode 100644
index ebc05f6c69d..00000000000
--- a/swat/lang/ja/images/viewconfig.gif
+++ /dev/null
Binary files differ