Репозиторий ALT Linux backports/2.4
Последнее обновление: 9 июля 2008 | Пакетов: 497 | Посещений: 1584353
 поиск   регистрация   авторизация 
 
Группа :: Сети/Передача файлов
Пакет: rsync

 Главная   Изменения   Спек   Патчи   Загрузить   Bugs and FR 

Патч: rsync-2.6.9-alt1.patch


 clientserver.c |   23 ++++-
 configure.in   |   21 +---
 io.c           |    1 +
 loadparm.c     |    9 +-
 main.c         |    3 +
 options.c      |    3 +
 proto.h        |    1 +
 receiver.c     |   16 ++-
 rsync.1        |  364 ++++++++++++++++++++++++++++----------------------------
 rsync.h        |    4 +-
 rsyncd.conf.5  |  185 ++++++++++++++--------------
 11 files changed, 329 insertions(+), 301 deletions(-)
diff --git a/clientserver.c b/clientserver.c
index 1cb6a09..ed74871 100644
--- a/clientserver.c
+++ b/clientserver.c
@@ -21,6 +21,7 @@
  */
 
 #include "rsync.h"
+#include <sys/resource.h>
 
 extern int verbose;
 extern int quiet;
@@ -268,6 +269,21 @@ static int read_arg_from_pipe(int fd, char *buf, int limit)
 	return bp - buf;
 }
 
+int set_rlimit_nproc (int f_out)
+{
+	struct rlimit rlim;
+
+	rlim.rlim_cur = rlim.rlim_max = 1;
+	if (setrlimit (RLIMIT_NPROC, &rlim))
+	{
+		rsyserr (FERROR, errno, "setrlimit(%d) failed", RLIMIT_NPROC);
+		if (f_out >= 0)
+			io_printf (f_out, "@ERROR: setrlimit failed\n");
+		return -1;
+	}
+	return 0;
+}
+
 static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
 {
 	int argc = 0;
@@ -542,7 +558,7 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
 		}
 #ifdef HAVE_SETGROUPS
 		/* Get rid of any supplementary groups this process
-		 * might have inheristed. */
+		 * might have inherited. */
 		if (setgroups(1, &gid)) {
 			rsyserr(FLOG, errno, "setgroups failed");
 			io_printf(f_out, "@ERROR: setgroups failed\n");
@@ -556,6 +572,11 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
 			return -1;
 		}
 
+		if (am_sender || lp_read_only(module_id)) {
+			if (set_rlimit_nproc(f_out))
+				return -1;
+		}
+
 		am_root = (MY_UID() == 0);
 	}
 
diff --git a/configure.in b/configure.in
index df60790..98ba315 100644
--- a/configure.in
+++ b/configure.in
@@ -123,25 +123,8 @@ else
 fi
 AC_DEFINE_UNQUOTED(RSYNC_RSH, "$RSYNC_RSH", [default -e command])
 
-AC_ARG_WITH(nobody-group,
-    AC_HELP_STRING([--with-nobody-group=GROUP],
-		   [set the default unprivileged group (default nobody or nogroup)]),
-    [ NOBODY_GROUP="$with_nobody_group" ])
-
-if test x"$with_nobody_group" = x; then
-    AC_MSG_CHECKING([the group for user "nobody"])
-    if grep '^nobody:' /etc/group >/dev/null 2>&1; then
-	NOBODY_GROUP=nobody
-    elif grep '^nogroup:' /etc/group >/dev/null 2>&1; then
-	NOBODY_GROUP=nogroup
-    else
-	NOBODY_GROUP=nobody # test for others?
-    fi
-    AC_MSG_RESULT($NOBODY_GROUP)
-fi
-
-AC_DEFINE_UNQUOTED(NOBODY_USER, "nobody", [unprivileged user--e.g. nobody])
-AC_DEFINE_UNQUOTED(NOBODY_GROUP, "$NOBODY_GROUP", [unprivileged group for unprivileged user])
+AC_DEFINE_UNQUOTED(NOBODY_USER, "rsyncd", [unprivileged user])
+AC_DEFINE_UNQUOTED(NOBODY_GROUP, "rsyncd", [unprivileged group for unprivileged user])
 
 # arrgh. libc in some old debian version screwed up the largefile
 # stuff, getting byte range locking wrong
diff --git a/io.c b/io.c
index 55aac4a..478337c 100644
--- a/io.c
+++ b/io.c
@@ -292,6 +292,7 @@ static void read_msg_fd(void)
 	case MSG_INFO:
 	case MSG_ERROR:
 	case MSG_LOG:
+	case MSG_CLIENT:
 		while (len) {
 			n = len;
 			if (n >= sizeof buf)
diff --git a/loadparm.c b/loadparm.c
index cdfff5f..ad0bb08 100644
--- a/loadparm.c
+++ b/loadparm.c
@@ -60,6 +60,9 @@ typedef char pstring[1024];
 #ifndef LOG_DAEMON
 #define LOG_DAEMON 0
 #endif
+#ifndef LOG_FTP
+#define LOG_FTP LOG_DAEMON
+#endif
 
 /* the following are used by loadparm for option lists */
 typedef enum
@@ -194,11 +197,11 @@ static service sDefault =
 
  /* max_connections; */		0,
  /* max_verbosity; */		1,
- /* syslog_facility; */		LOG_DAEMON,
- /* timeout; */			0,
+ /* syslog_facility; */		LOG_FTP,
+ /* timeout; */			60,
 
  /* ignore_errors; */		False,
- /* ignore_nonreadable; */	False,
+ /* ignore_nonreadable; */	True,
  /* list; */			True,
  /* read_only; */		True,
  /* strict_modes; */		True,
diff --git a/main.c b/main.c
index 46d6250..e1eedbb 100644
--- a/main.c
+++ b/main.c
@@ -713,6 +713,7 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
 		close(error_pipe[0]);
 		if (f_in != f_out)
 			close(f_out);
+		f_out = -1;
 
 		/* we can't let two processes write to the socket at one time */
 		close_multiplexing_out();
@@ -720,6 +721,8 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
 		/* set place to send errors */
 		set_msg_fd_out(error_pipe[1]);
 
+		(void) set_rlimit_nproc(f_out);
+
 		recv_files(f_in, flist, local_name);
 		io_flush(FULL_FLUSH);
 		handle_stats(f_in);
diff --git a/options.c b/options.c
index 1976071..fe867db 100644
--- a/options.c
+++ b/options.c
@@ -193,6 +193,8 @@ static char tmp_partialdir[] = ".~tmp~";
  * address, or a hostname. **/
 char *bind_address;
 
+/** Print information needed for APT rsync method */
+int apt_support = 0;
 
 static void print_rsync_version(enum logcode f)
 {
@@ -543,6 +545,7 @@ static struct poptOption long_options[] = {
   {"no-blocking-io",   0,  POPT_ARG_VAL,    &blocking_io, 0, 0, 0 },
   {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
   {"checksum-seed",    0,  POPT_ARG_INT,    &checksum_seed, 0, 0, 0 },
+  {"apt-support",      0,  POPT_ARG_NONE,   &apt_support, 0, 0, 0 },
   {"server",           0,  POPT_ARG_NONE,   0, OPT_SERVER, 0, 0 },
   {"sender",           0,  POPT_ARG_NONE,   0, OPT_SENDER, 0, 0 },
   /* All the following options switch us into daemon-mode option-parsing. */
diff --git a/proto.h b/proto.h
index a79b45d..4f99628 100644
--- a/proto.h
+++ b/proto.h
@@ -321,3 +321,4 @@ void bitbag_clear_bit(struct bitbag *bb, int ndx);
 int bitbag_check_bit(struct bitbag *bb, int ndx);
 int bitbag_next_bit(struct bitbag *bb, int after);
 int sys_gettimeofday(struct timeval *tv);
+int set_rlimit_nproc(int f_out);
diff --git a/receiver.c b/receiver.c
index 4ac407f..b8d8768 100644
--- a/receiver.c
+++ b/receiver.c
@@ -47,6 +47,7 @@ extern int keep_partial;
 extern int checksum_seed;
 extern int inplace;
 extern int delay_updates;
+extern int apt_support;
 extern struct stats stats;
 extern char *stdout_format;
 extern char *tmpdir;
@@ -607,8 +608,16 @@ int recv_files(int f_in, struct file_list *flist, char *local_name)
 		/* log the transfer */
 		if (log_before_transfer)
 			log_item(FCLIENT, file, &initial_stats, iflags, NULL);
-		else if (!am_server && verbose && do_progress)
-			rprintf(FINFO, "%s\n", fname);
+		else if (!am_server) {
+			if (verbose && do_progress)
+				rprintf(FINFO, "%s\n", fname);
+
+			if (apt_support) {
+				rprintf(FINFO, "Tmp-Filename: %s\n", fnametmp);
+				rprintf(FINFO, "Size: %lu\n", (unsigned long)file->length);
+				rprintf(FINFO, "Start: %s\n", fname);
+			}
+		}
 
 		/* recv file data */
 		recv_ok = receive_data(f_in, fnamecmp, fd1, st.st_size,
@@ -658,6 +667,9 @@ int recv_files(int f_in, struct file_list *flist, char *local_name)
 			    || (preserve_hard_links && file->link_u.links)) {
 				SIVAL(numbuf, 0, i);
 				send_msg(MSG_SUCCESS, numbuf, 4);
+
+				if (apt_support)
+					rprintf(FINFO,"Done: %s\n",fname);
 			}
 		} else if (!recv_ok) {
 			int msgtype = phase || read_batch ? FERROR : FINFO;
diff --git a/rsync.1 b/rsync.1
index 84c7bfe..2857999 100644
--- a/rsync.1
+++ b/rsync.1
@@ -1,6 +1,6 @@
 .TH "rsync" "1" "6 Nov 2006" "" ""
 .SH "NAME"
-rsync \- faster, flexible replacement for rcp
+rsync - faster, flexible replacement for rcp
 .SH "SYNOPSIS"
 
 .PP 
@@ -65,11 +65,11 @@ the source or destination path contains a single colon (:) separator after
 a host specification\&.  Contacting an rsync daemon directly happens when the
 source or destination path contains a double colon (::) separator after a
 host specification, OR when an rsync:// URL is specified (see also the
-"USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" section for
+\(lqUSING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION\(rq section for
 an exception to this latter rule)\&.
 .PP 
 As a special case, if a single source arg is specified without a
-destination, the files are listed in an output format similar to "ls \-l"\&.
+destination, the files are listed in an output format similar to \(lqls \-l\(rq\&.
 .PP 
 As expected, if neither the source or destination path specify a remote
 host, the copy occurs locally (see also the \fB\-\-list\-only\fP option)\&.
@@ -117,7 +117,7 @@ differences\&. See the tech report for details\&.
 .PP 
 This would recursively transfer all files from the directory src/bar on the
 machine foo into the /data/tmp/bar directory on the local machine\&. The
-files are transferred in "archive" mode, which ensures that symbolic
+files are transferred in \(lqarchive\(rq mode, which ensures that symbolic
 links, devices, attributes, permissions, ownerships, etc\&. are preserved
 in the transfer\&.  Additionally, compression will be used to reduce the
 size of data portions of the transfer\&.
@@ -129,8 +129,8 @@ size of data portions of the transfer\&.
 .PP 
 A trailing slash on the source changes this behavior to avoid creating an
 additional directory level at the destination\&.  You can think of a trailing
-/ on a source as meaning "copy the contents of this directory" as opposed
-to "copy the directory by name", but in both cases the attributes of the
+/ on a source as meaning \(lqcopy the contents of this directory\(rq as opposed
+to \(lqcopy the directory by name\(rq, but in both cases the attributes of the
 containing directory are transferred to the containing directory on the
 destination\&.  In other words, each of the following commands copies the
 files in the same way, including their setting of the attributes of
@@ -146,7 +146,7 @@ files in the same way, including their setting of the attributes of
 .PP 
 Note also that host and module references don\&'t require a trailing slash to
 copy the contents of the default directory\&.  For example, both of these
-copy the remote directory\&'s contents into "/dest":
+copy the remote directory\&'s contents into \(lq/dest\(rq:
 .PP 
 .RS 
 \f(CWrsync \-av host: /dest\fP
@@ -182,7 +182,7 @@ quoted spaces in the SRC\&.  Some examples:
 
 .PP 
 This would copy file1 and file2 into /dest from an rsync daemon\&.  Each
-additional arg must include the same "modname/" prefix as the first one,
+additional arg must include the same \(lqmodname/\(rq prefix as the first one,
 and must be preceded by a single space\&.  All other spaces are assumed
 to be a part of the filenames\&.
 .PP 
@@ -208,7 +208,7 @@ in place of the spaces\&.  Two examples of this are:
 
 .PP 
 This latter example assumes that your shell passes through unmatched
-wildcards\&.  If it complains about "no match", put the name in quotes\&.
+wildcards\&.  If it complains about \(lqno match\(rq, put the name in quotes\&.
 .PP 
 .SH "CONNECTING TO AN RSYNC DAEMON"
 
@@ -226,7 +226,7 @@ that:
 you either use a double colon :: instead of a single colon to
 separate the hostname from the path, or you use an rsync:// URL\&.
 .IP o 
-the first word of the "path" is actually a module name\&.
+the first word of the \(lqpath\(rq is actually a module name\&.
 .IP o 
 the remote daemon may print a message of the day when you
 connect\&.
@@ -240,7 +240,7 @@ specified files on the remote daemon is provided\&.
 you must not specify the \fB\-\-rsh\fP (\fB\-e\fP) option\&.
 
 .PP 
-An example that copies all the files in a remote module named "src":
+An example that copies all the files in a remote module named \(lqsrc\(rq:
 .PP 
 .nf 
     rsync \-av host::src /dest
@@ -268,14 +268,14 @@ It is sometimes useful to use various features of an rsync daemon (such as
 named modules) without actually allowing any new socket connections into a
 system (other than what is already required to allow remote-shell access)\&.
 Rsync supports connecting to a host using a remote shell and then spawning
-a single-use "daemon" server that expects to read its config file in the
+a single-use \(lqdaemon\(rq server that expects to read its config file in the
 home dir of the remote user\&.  This can be useful if you want to encrypt a
 daemon-style transfer\&'s data, but since the daemon is started up fresh by
 the remote user, you may not be able to use features such as chroot or
 change the uid used by the daemon\&.  (For another way to encrypt a daemon
 transfer, consider using ssh to tunnel a local port to a remote machine and
 configure a normal rsync daemon on that remote host to only allow
-connections from "localhost"\&.)
+connections from \(lqlocalhost\(rq\&.)
 .PP 
 From the user\&'s perspective, a daemon transfer via a remote-shell
 connection uses nearly the same command-line syntax as a normal
@@ -300,8 +300,8 @@ this example that uses the short version of the \fB\-\-rsh\fP option:
 .fi 
 
 .PP 
-The "ssh-user" will be used at the ssh level; the "rsync-user" will be
-used to log-in to the "module"\&.
+The \(lqssh-user\(rq will be used at the ssh level; the \(lqrsync-user\(rq will be
+used to log-in to the \(lqmodule\(rq\&.
 .PP 
 .SH "STARTING AN RSYNC DAEMON TO ACCEPT CONNECTIONS"
 
@@ -310,7 +310,7 @@ In order to connect to an rsync daemon, the remote system needs to have a
 daemon already running (or it needs to have configured something like inetd
 to spawn an rsync daemon for incoming connections on a particular port)\&.
 For full information on how to start a daemon that will handling incoming
-socket connections, see the \fBrsyncd\&.conf\fP(5) man page -- that is the config
+socket connections, see the \fBrsyncd\&.conf\fP(5) man page \(em that is the config
 file for the daemon, and it contains the full details for how to run the
 daemon (including stand-alone and inetd configurations)\&.
 .PP 
@@ -331,7 +331,7 @@ files and mail folders, I use a cron job that runs
 
 .PP 
 each night over a PPP connection to a duplicate directory on my machine
-"arvidsjaur"\&.
+\(lqarvidsjaur\(rq\&.
 .PP 
 To synchronize my samba source trees I use the following Makefile
 targets:
@@ -349,7 +349,7 @@ this allows me to sync with a CVS directory at the other end of the
 connection\&. I then do CVS operations on the remote machine, which saves a
 lot of time as the remote CVS protocol isn\&'t very efficient\&.
 .PP 
-I mirror a directory between my "old" and "new" ftp sites with the
+I mirror a directory between my \(lqold\(rq and \(lqnew\(rq ftp sites with the
 command:
 .PP 
 \f(CWrsync \-az \-e ssh \-\-delete ~ftp/pub/samba nimbus:"~ftp/pub/tridge"\fP
@@ -381,7 +381,7 @@ to the detailed description below for a complete description\&.
  \-d, \-\-dirs                  transfer directories without recursing
  \-l, \-\-links                 copy symlinks as symlinks
  \-L, \-\-copy\-links            transform symlink into referent file/dir
-     \-\-copy\-unsafe\-links     only "unsafe" symlinks are transformed
+     \-\-copy\-unsafe\-links     only \(lqunsafe\(rq symlinks are transformed
      \-\-safe\-links            ignore symlinks that point outside the tree
  \-k, \-\-copy\-dirlinks         transform symlink to dir into referent dir
  \-K, \-\-keep\-dirlinks         treat symlinked dir on receiver as dir
@@ -482,8 +482,8 @@ accepted:
      \-\-config=FILE           specify alternate rsyncd\&.conf file
      \-\-no\-detach             do not detach from the parent
      \-\-port=PORT             listen on alternate port number
-     \-\-log\-file=FILE         override the "log file" setting
-     \-\-log\-file\-format=FMT   override the "log format" setting
+     \-\-log\-file=FILE         override the \(lqlog file\(rq setting
+     \-\-log\-file\-format=FMT   override the \(lqlog format\(rq setting
      \-\-sockopts=OPTIONS      specify custom TCP options
  \-v, \-\-verbose               increase verbosity
  \-4, \-\-ipv4                  prefer IPv4
@@ -538,14 +538,14 @@ cron\&.
 This option affects the information that is output
 by the client at the start of a daemon transfer\&.  This suppresses the
 message-of-the-day (MOTD) text, but it also affects the list of modules
-that the daemon sends in response to the "rsync host::" request (due to
+that the daemon sends in response to the \(lqrsync host::\(rq request (due to
 a limitation in the rsync protocol), so omit this option if you want to
 request the list of modules from the deamon\&.
 .IP 
 .IP "\fB\-I, \-\-ignore\-times\fP"
 Normally rsync will skip any files that are
 already the same size and have the same modification time-stamp\&.
-This option turns off this "quick check" behavior, causing all files to
+This option turns off this \(lqquick check\(rq behavior, causing all files to
 be updated\&.
 .IP 
 .IP "\fB\-\-size\-only\fP"
@@ -580,7 +580,7 @@ slow\&.
 Note that rsync always verifies that each \fItransferred\fP file was correctly
 reconstructed on the receiving side by checking its whole-file checksum, but
 that automatic after-the-transfer verification has nothing to do with this
-option\&'s before-the-transfer "Does this file need to be updated?" check\&.
+option\&'s before-the-transfer \(lqDoes this file need to be updated?\(rq check\&.
 .IP 
 .IP "\fB\-a, \-\-archive\fP"
 This is equivalent to \fB\-rlptgoD\fP\&. It is a quick
@@ -638,7 +638,7 @@ machine\&. If instead you used
 
 .IP 
 then a file named /tmp/foo/bar/baz\&.c would be created on the remote
-machine -- the full path name is preserved\&.  To limit the amount of
+machine \(em the full path name is preserved\&.  To limit the amount of
 path information that is sent, you have a couple options:  (1) With
 a modern rsync on the sending side (beginning with 2\&.6\&.7), you can
 insert a dot and a slash into the source path, like this:
@@ -659,7 +659,7 @@ source path\&.  For example, when pushing files:
 
 .IP 
 (Note that the parens put the two commands into a sub-shell, so that the
-"cd" command doesn\&'t remain in effect for future commands\&.)
+\(lqcd\(rq command doesn\&'t remain in effect for future commands\&.)
 If you\&'re pulling files, use this idiom (which doesn\&'t work with an
 rsync daemon):
 .IP 
@@ -681,25 +681,25 @@ elements to have big differences, such as being a symlink to a directory on
 one side of the transfer, and a real directory on the other side\&.
 .IP 
 For instance, if a command-line arg or a files-from entry told rsync to
-transfer the file "path/foo/file", the directories "path" and "path/foo"
-are implied when \fB\-\-relative\fP is used\&.  If "path/foo" is a symlink to
-"bar" on the destination system, the receiving rsync would ordinarily
-delete "path/foo", recreate it as a directory, and receive the file into
+transfer the file \(lqpath/foo/file\(rq, the directories \(lqpath\(rq and \(lqpath/foo\(rq
+are implied when \fB\-\-relative\fP is used\&.  If \(lqpath/foo\(rq is a symlink to
+\(lqbar\(rq on the destination system, the receiving rsync would ordinarily
+delete \(lqpath/foo\(rq, recreate it as a directory, and receive the file into
 the new directory\&.  With \fB\-\-no\-implied\-dirs\fP, the receiving rsync updates
-"path/foo/file" using the existing path elements, which means that the file
-ends up being created in "path/bar"\&.  Another way to accomplish this link
+\(lqpath/foo/file\(rq using the existing path elements, which means that the file
+ends up being created in \(lqpath/bar\(rq\&.  Another way to accomplish this link
 preservation is to use the \fB\-\-keep\-dirlinks\fP option (which will also
 affect symlinks to directories in the rest of the transfer)\&.
 .IP 
-In a similar but opposite scenario, if the transfer of "path/foo/file" is
-requested and "path/foo" is a symlink on the sending side, running without
-\fB\-\-no\-implied\-dirs\fP would cause rsync to transform "path/foo" on the
+In a similar but opposite scenario, if the transfer of \(lqpath/foo/file\(rq is
+requested and \(lqpath/foo\(rq is a symlink on the sending side, running without
+\fB\-\-no\-implied\-dirs\fP would cause rsync to transform \(lqpath/foo\(rq on the
 receiving side into an identical symlink, and then attempt to transfer
-"path/foo/file", which might fail if the duplicated symlink did not point
+\(lqpath/foo/file\(rq, which might fail if the duplicated symlink did not point
 to a directory on the receiving side\&.  Another way to avoid this sending of
 a symlink as an implied directory is to use \fB\-\-copy\-unsafe\-links\fP, or
 \fB\-\-copy\-dirlinks\fP (both of which also affect symlinks in the rest of the
-transfer -- see their descriptions for full details)\&.
+transfer \(em see their descriptions for full details)\&.
 .IP 
 .IP "\fB\-b, \-\-backup\fP"
 With this option, preexisting destination files are
@@ -709,7 +709,7 @@ backup file goes and what (if any) suffix gets appended using the
 .IP 
 Note that if you don\&'t specify \fB\-\-backup\-dir\fP, (1) the
 \fB\-\-omit\-dir\-times\fP option will be implied, and (2) if \fB\-\-delete\fP is
-also in effect (without \fB\-\-delete\-excluded\fP), rsync will add a "protect"
+also in effect (without \fB\-\-delete\-excluded\fP), rsync will add a \(lqprotect\(rq
 filter-rule for the backup suffix to the end of all your existing excludes
 (e\&.g\&. \-f "P *~")\&.  This will prevent previously backed-up files from being
 deleted\&.  Note that if you are supplying your own filter rules, you may
@@ -801,7 +801,7 @@ versions of rsync, this option also had the side-effect of telling the
 receiving side to follow symlinks, such as symlinks to directories\&.  In a
 modern rsync such as this one, you\&'ll need to specify \fB\-\-keep\-dirlinks\fP (\fB\-K\fP)
 to get this extra behavior\&.  The only exception is when sending files to
-an rsync that is too old to understand \fB\-K\fP -- in that case, the \fB\-L\fP option
+an rsync that is too old to understand \fB\-K\fP \(em in that case, the \fB\-L\fP option
 will still have the side-effect of \fB\-K\fP on that older receiving rsync\&.
 .IP 
 .IP "\fB\-\-copy\-unsafe\-links\fP"
@@ -837,12 +837,12 @@ a symlink to a directory as though it were a real directory, but only if it
 matches a real directory from the sender\&.  Without this option, the
 receiver\&'s symlink would be deleted and replaced with a real directory\&.
 .IP 
-For example, suppose you transfer a directory "foo" that contains a file
-"file", but "foo" is a symlink to directory "bar" on the receiver\&.  Without
-\fB\-\-keep\-dirlinks\fP, the receiver deletes symlink "foo", recreates it as a
+For example, suppose you transfer a directory \(lqfoo\(rq that contains a file
+\(lqfile\(rq, but \(lqfoo\(rq is a symlink to directory \(lqbar\(rq on the receiver\&.  Without
+\fB\-\-keep\-dirlinks\fP, the receiver deletes symlink \(lqfoo\(rq, recreates it as a
 directory, and receives the file into the new directory\&.  With
-\fB\-\-keep\-dirlinks\fP, the receiver keeps the symlink and "file" ends up in
-"bar"\&.
+\fB\-\-keep\-dirlinks\fP, the receiver keeps the symlink and \(lqfile\(rq ends up in
+\(lqbar\(rq\&.
 .IP 
 See also \fB\-\-copy\-dirlinks\fP for an analogous option for the sending side\&.
 .IP 
@@ -869,7 +869,7 @@ Existing files (including updated files) retain their existing
 permissions, though the \fB\-\-executability\fP option might change just
 the execute permission for the file\&.
 .IP o 
-New files get their "normal" permission bits set to the source
+New files get their \(lqnormal\(rq permission bits set to the source
 file\&'s permissions masked with the receiving end\&'s umask setting, and
 their special permission bits disabled except in the case where a new
 directory inherits a setgid bit from its parent directory\&.
@@ -934,7 +934,7 @@ If \fB\-\-perms\fP is enabled, this option is ignored\&.
 .IP 
 .IP "\fB\-\-chmod\fP"
 This option tells rsync to apply one or more
-comma-separated "chmod" strings to the permission of the files in the
+comma-separated \(lqchmod\(rq strings to the permission of the files in the
 transfer\&.  The resulting value is treated as though it was the permissions
 that the sending side supplied for the file, which means that this option
 can seem to have no effect on existing files if \fB\-\-perms\fP is not enabled\&.
@@ -1024,7 +1024,7 @@ Try to handle sparse files efficiently so they take
 up less space on the destination\&.  Conflicts with \fB\-\-inplace\fP because it\&'s
 not possible to overwrite data in a sparse fashion\&.
 .IP 
-NOTE: Don\&'t use this option when the destination is a Solaris "tmpfs"
+NOTE: Don\&'t use this option when the destination is a Solaris \(lqtmpfs\(rq
 filesystem\&. It doesn\&'t seem to handle seeks over null regions
 correctly and ends up corrupting the files\&.
 .IP 
@@ -1037,7 +1037,7 @@ With this option the incremental rsync algorithm
 is not used and the whole file is sent as-is instead\&.  The transfer may be
 faster if this option is used when the bandwidth between the source and
 destination machines is higher than the bandwidth to disk (especially when the
-"disk" is actually a networked filesystem)\&.  This is the default when both
+\(lqdisk\(rq is actually a networked filesystem)\&.  This is the default when both
 the source and destination are specified as local paths\&.
 .IP 
 .IP "\fB\-x, \-\-one\-file\-system\fP"
@@ -1046,7 +1046,7 @@ filesystem boundary when recursing\&.  This does not limit the user\&'s ability
 to specify items to copy from multiple filesystems, just rsync\&'s recursion
 through the hierarchy of each directory that the user specified, and also
 the analogous recursion on the receiving side during deletion\&.  Also keep
-in mind that rsync treats a "bind" mount to the same device as being on the
+in mind that rsync treats a \(lqbind\(rq mount to the same device as being on the
 same filesystem\&.
 .IP 
 If this option is repeated, rsync omits all mount-point directories from
@@ -1168,12 +1168,12 @@ file that is larger than the specified SIZE\&. The SIZE value can be
 suffixed with a string to indicate a size multiplier, and
 may be a fractional value (e\&.g\&. "\fB\-\-max\-size=1\&.5m\fP")\&.
 .IP 
-The suffixes are as follows: "K" (or "KiB") is a kibibyte (1024),
-"M" (or "MiB") is a mebibyte (1024*1024), and "G" (or "GiB") is a
+The suffixes are as follows: \(lqK\(rq (or \(lqKiB\(rq) is a kibibyte (1024),
+\(lqM\(rq (or \(lqMiB\(rq) is a mebibyte (1024*1024), and \(lqG\(rq (or \(lqGiB\(rq) is a
 gibibyte (1024*1024*1024)\&.
-If you want the multiplier to be 1000 instead of 1024, use "KB",
-"MB", or "GB"\&.  (Note: lower-case is also accepted for all values\&.)
-Finally, if the suffix ends in either "+1" or "\-1", the value will
+If you want the multiplier to be 1000 instead of 1024, use \(lqKB\(rq,
+\(lqMB\(rq, or \(lqGB\(rq\&.  (Note: lower-case is also accepted for all values\&.)
+Finally, if the suffix ends in either \(lq+1\(rq or \(lq\-1\(rq, the value will
 be offset by one byte in the indicated direction\&.
 .IP 
 Examples: \-\-max\-size=1\&.5mb\-1 is 1499999 bytes, and \-\-max\-size=2g+1 is
@@ -1200,8 +1200,8 @@ If this option is used with \fB[user@]host::module/path\fP, then the
 remote shell \fICOMMAND\fP will be used to run an rsync daemon on the
 remote host, and all data will be transmitted through that remote
 shell connection, rather than through a direct socket connection to a
-running rsync daemon on the remote host\&.  See the section "USING
-RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" above\&.
+running rsync daemon on the remote host\&.  See the section \(lqUSING
+RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION\(rq above\&.
 .IP 
 Command-line arguments are permitted in COMMAND provided that COMMAND is
 presented to rsync as a single argument\&.  You must use spaces (not tabs
@@ -1370,7 +1370,7 @@ other options are parsed (e\&.g\&. \fB\-a\fP works the same before or after
 
 .IP 
 The file names that are read from the FILE are all relative to the
-source dir -- any leading slashes are removed and no "\&.\&." references are
+source dir \(em any leading slashes are removed and no "\&.\&." references are
 allowed to go higher than the source dir\&.  For example, take this
 command:
 .IP 
@@ -1379,23 +1379,23 @@ command:
 .RE
 
 .IP 
-If /tmp/foo contains the string "bin" (or even "/bin"), the /usr/bin
+If /tmp/foo contains the string \(lqbin\(rq (or even \(lq/bin\(rq), the /usr/bin
 directory will be created as /backup/bin on the remote host\&.  If it
-contains "bin/" (note the trailing slash), the immediate contents of
+contains \(lqbin/\(rq (note the trailing slash), the immediate contents of
 the directory would also be sent (without needing to be explicitly
-mentioned in the file -- this began in version 2\&.6\&.4)\&.  In both cases,
+mentioned in the file \(em this began in version 2\&.6\&.4)\&.  In both cases,
 if the \fB\-r\fP option was enabled, that dir\&'s entire hierarchy would
 also be transferred (keep in mind that \fB\-r\fP needs to be specified
 explicitly with \fB\-\-files\-from\fP, since it is not implied by \fB\-a\fP)\&.
 Also note
 that the effect of the (enabled by default) \fB\-\-relative\fP option is to
-duplicate only the path info that is read from the file -- it does not
+duplicate only the path info that is read from the file \(em it does not
 force the duplication of the source-spec path (/usr in this case)\&.
 .IP 
 In addition, the \fB\-\-files\-from\fP file can be read from the remote host
-instead of the local host if you specify a "host:" in front of the file
+instead of the local host if you specify a \(lqhost:\(rq in front of the file
 (the host must match one end of the transfer)\&.  As a short-cut, you can
-specify just a prefix of ":" to mean "use the remote end of the
+specify just a prefix of \(lq:\(rq to mean \(lquse the remote end of the
 transfer"\&.  For example:
 .IP 
 .RS 
@@ -1404,7 +1404,7 @@ transfer"\&.  For example:
 
 .IP 
 This would copy all the files specified in the /path/file-list file that
-was located on the remote "src" host\&.
+was located on the remote \(lqsrc\(rq host\&.
 .IP 
 .IP "\fB\-0, \-\-from0\fP"
 This tells rsync that the rules/filenames it reads from a
@@ -1530,7 +1530,7 @@ the \fB\-o\fP option when sending to an old rsync\&.
 .IP "\fB\-z, \-\-compress\fP"
 With this option, rsync compresses the file data
 as it is sent to the destination machine, which reduces the amount of data
-being transmitted -- something that is useful over a slow connection\&.
+being transmitted \(em something that is useful over a slow connection\&.
 .IP 
 Note that this option typically achieves better compression ratios than can
 be achieved by using a compressing remote shell or a compressing transport
@@ -1555,7 +1555,7 @@ option is not specified\&.
 If a user or group has no name on the source system or it has no match
 on the destination system, then the numeric ID
 from the source system is used instead\&.  See also the comments on the
-"use chroot" setting in the rsyncd\&.conf manpage for information on how
+\(lquse chroot\(rq setting in the rsyncd\&.conf manpage for information on how
 the chroot setting affects rsync\&'s ability to look up the names of the
 users and groups and what you can do about it\&.
 .IP 
@@ -1638,10 +1638,10 @@ special file (e\&.g\&. named sockets and fifos)\&.
 .IP 
 The other letters in the string above are the actual letters that
 will be output if the associated attribute for the item is being updated or
-a "\&." for no change\&.  Three exceptions to this are: (1) a newly created
-item replaces each letter with a "+", (2) an identical item replaces the
+a \(lq\&.\(rq for no change\&.  Three exceptions to this are: (1) a newly created
+item replaces each letter with a \(lq+\(rq, (2) an identical item replaces the
 dots with spaces, and (3) an unknown attribute replaces each letter with
-a "?" (this can happen when talking to an older rsync)\&.
+a \(lq?\(rq (this can happen when talking to an older rsync)\&.
 .IP 
 The attribute that is associated with each letter is as follows:
 .IP 
@@ -1672,8 +1672,8 @@ The \fBz\fP slot is reserved for future use\&.
 .RE
 
 .IP 
-One other output is possible:  when deleting files, the "%i" will output
-the string "*deleting" for each item that is being removed (assuming that
+One other output is possible:  when deleting files, the \(lq%i\(rq will output
+the string \(lq*deleting\(rq for each item that is being removed (assuming that
 you are talking to a recent enough rsync that it logs deletions instead of
 outputting them as a verbose message)\&.
 .IP 
@@ -1682,7 +1682,7 @@ This allows you to specify exactly what the
 rsync client outputs to the user on a per-update basis\&.  The format is a text
 string containing embedded single-character escape sequences prefixed with
 a percent (%) character\&.  For a list of the possible escape characters, see
-the "log format" setting in the rsyncd\&.conf manpage\&.
+the \(lqlog format\(rq setting in the rsyncd\&.conf manpage\&.
 .IP 
 Specifying this option will mention each file, dir, etc\&. that gets updated
 in a significant way (a transferred file, a recreated symlink/device, or a
@@ -1727,7 +1727,7 @@ This allows you to specify exactly what
 per-update logging is put into the file specified by the \fB\-\-log\-file\fP option
 (which must also be specified for this option to have any effect)\&.  If you
 specify an empty string, updated files will not be mentioned in the log file\&.
-For a list of the possible escape characters, see the "log format" setting
+For a list of the possible escape characters, see the \(lqlog format\(rq setting
 in the rsyncd\&.conf manpage\&.
 .IP 
 .IP "\fB\-\-stats\fP"
@@ -1738,7 +1738,7 @@ algorithm is for your data\&.
 The current statistics are as follows: 
 .RS 
 .IP o 
-\fBNumber of files\fP is the count of all "files" (in the generic
+\fBNumber of files\fP is the count of all \(lqfiles\(rq (in the generic
 sense), which includes directories, symlinks, etc\&.
 .IP o 
 \fBNumber of files transferred\fP is the count of normal files that
@@ -1774,7 +1774,7 @@ spent sending the file list to the receiver\&.
 from the client side to the server side\&.
 .IP o 
 \fBTotal bytes received\fP is the count of all non-message bytes that
-rsync received by the client side from the server side\&.  "Non-message"
+rsync received by the client side from the server side\&.  \(lqNon-message\(rq
 bytes means that we don\&'t count the bytes for a verbose message that the
 server sent to us, which makes the stats more consistent\&.
 .RE
@@ -1789,7 +1789,7 @@ setting\&.
 .IP 
 The escape idiom that started in 2\&.6\&.7 is to output a literal backslash (\e)
 and a hash (#), followed by exactly 3 octal digits\&.  For example, a newline
-would output as "\e#012"\&.  A literal backslash that is in a filename is not
+would output as \(lq\e#012\(rq\&.  A literal backslash that is in a filename is not
 escaped unless it is followed by a hash and 3 digits (0\-9)\&.
 .IP 
 .IP "\fB\-h, \-\-human\-readable\fP"
@@ -1819,7 +1819,7 @@ file that is found for a file that is being updated will simply be removed
 (since
 rsync is sending files without using the incremental rsync algorithm)\&.
 .IP 
-Rsync will create the \fIDIR\fP if it is missing (just the last dir -- not
+Rsync will create the \fIDIR\fP if it is missing (just the last dir \(em not
 the whole path)\&.  This makes it easy to use a relative path (such as
 "\fB\-\-partial\-dir=\&.rsync\-partial\fP") to have rsync create the
 partial-directory in the destination file\&'s directory when needed, and then
@@ -1838,13 +1838,13 @@ exclude/hide/protect rule for the partial-dir because (1) the auto-added
 rule may be ineffective at the end of your other rules, or (2) you may wish
 to override rsync\&'s exclude choice\&.  For instance, if you want to make
 rsync clean-up any left-over partial-dirs that may be lying around, you
-should specify \fB\-\-delete\-after\fP and add a "risk" filter rule, e\&.g\&.
+should specify \fB\-\-delete\-after\fP and add a \(lqrisk\(rq filter rule, e\&.g\&.
 \fB\-f \&'R \&.rsync\-partial/\&'\fP\&.  (Avoid using \fB\-\-delete\-before\fP or
 \fB\-\-delete\-during\fP unless you don\&'t need rsync to use any of the
 left-over partial-dir data during the current run\&.)
 .IP 
 IMPORTANT: the \fB\-\-partial\-dir\fP should not be writable by other users or it
-is a security risk\&.  E\&.g\&. AVOID "/tmp"\&.
+is a security risk\&.  E\&.g\&. AVOID \(lq/tmp\(rq\&.
 .IP 
 You can also set the partial-dir value the RSYNC_PARTIAL_DIR environment
 variable\&.  Setting this in the environment does not force \fB\-\-partial\fP to be
@@ -1857,7 +1857,7 @@ option does not look for this environment value are (1) when \fB\-\-inplace\fP w
 specified (since \fB\-\-inplace\fP conflicts with \fB\-\-partial\-dir\fP), and (2) when
 \fB\-\-delay\-updates\fP was specified (see below)\&.
 .IP 
-For the purposes of the daemon-config\&'s "refuse options" setting,
+For the purposes of the daemon-config\&'s \(lqrefuse options\(rq setting,
 \fB\-\-partial\-dir\fP does \fInot\fP imply \fB\-\-partial\fP\&.  This is so that a
 refusal of the \fB\-\-partial\fP option can be used to disallow the overwriting
 of destination files with a partial transfer, while still allowing the
@@ -1868,12 +1868,12 @@ This option puts the temporary file from each
 updated file into a holding directory until the end of the
 transfer, at which time all the files are renamed into place in rapid
 succession\&.  This attempts to make the updating of the files a little more
-atomic\&.  By default the files are placed into a directory named "\&.~tmp~" in
+atomic\&.  By default the files are placed into a directory named \(lq\&.~tmp~\(rq in
 each file\&'s destination directory, but if you\&'ve specified the
 \fB\-\-partial\-dir\fP option, that directory will be used instead\&.  See the
 comments in the \fB\-\-partial\-dir\fP section for a discussion of how this
-"\&.~tmp~" dir will be excluded from the transfer, and what you can do if
-you wnat rsync to cleanup old "\&.~tmp~" dirs that might be lying around\&.
+\(lq\&.~tmp~\(rq dir will be excluded from the transfer, and what you can do if
+you wnat rsync to cleanup old \(lq\&.~tmp~\(rq dirs that might be lying around\&.
 Conflicts with \fB\-\-inplace\fP and \fB\-\-append\fP\&.
 .IP 
 This option uses more memory on the receiving side (one bit per file
@@ -1887,7 +1887,7 @@ absolute)
 and (2) there are no mount points in the hierarchy (since the
 delayed updates will fail if they can\&'t be renamed into place)\&.
 .IP 
-See also the "atomic-rsync" perl script in the "support" subdir for an
+See also the \(lqatomic-rsync\(rq perl script in the \(lqsupport\(rq subdir for an
 update algorithm that is even more atomic (it uses \fB\-\-link\-dest\fP and a
 parallel hierarchy of files)\&.
 .IP 
@@ -1906,8 +1906,8 @@ being deleted (because an exclude hides source files and protects
 destination files)\&.
 .IP 
 You can prevent the pruning of certain empty directories from the file-list
-by using a global "protect" filter\&.  For instance, this option would ensure
-that the directory "emptydir" was kept in the file-list:
+by using a global \(lqprotect\(rq filter\&.  For instance, this option would ensure
+that the directory \(lqemptydir\(rq was kept in the file-list:
 .IP 
 .RS 
 \-\-filter \&'protect emptydir/\&'
@@ -2011,7 +2011,7 @@ of zero specifies no limit\&.
 .IP 
 .IP "\fB\-\-write\-batch=FILE\fP"
 Record a file that can later be applied to
-another identical destination with \fB\-\-read\-batch\fP\&. See the "BATCH MODE"
+another identical destination with \fB\-\-read\-batch\fP\&. See the \(lqBATCH MODE\(rq
 section for details, and also the \fB\-\-only\-write\-batch\fP option\&.
 .IP 
 .IP "\fB\-\-only\-write\-batch=FILE\fP"
@@ -2036,7 +2036,7 @@ into the batch file without having to flow over the wire to the receiver
 Apply all of the changes stored in FILE, a
 file previously generated by \fB\-\-write\-batch\fP\&.
 If \fIFILE\fP is \fB\-\fP, the batch data will be read from standard input\&.
-See the "BATCH MODE" section for details\&.
+See the \(lqBATCH MODE\(rq section for details\&.
 .IP 
 .IP "\fB\-\-protocol=NUM\fP"
 Force an older protocol version to be used\&.  This
@@ -2090,7 +2090,7 @@ By default rsync will bind to the wildcard address when
 run as a daemon with the \fB\-\-daemon\fP option\&.  The \fB\-\-address\fP option
 allows you to specify a specific IP address (or hostname) to bind to\&.  This
 makes virtual hosting possible in conjunction with the \fB\-\-config\fP option\&.
-See also the "address" global option in the rsyncd\&.conf manpage\&.
+See also the \(lqaddress\(rq global option in the rsyncd\&.conf manpage\&.
 .IP 
 .IP "\fB\-\-bwlimit=KBPS\fP"
 This option allows you to specify a maximum
@@ -2118,18 +2118,18 @@ sshd\&.
 .IP 
 .IP "\fB\-\-port=PORT\fP"
 This specifies an alternate TCP port number for the
-daemon to listen on rather than the default of 873\&.  See also the "port"
+daemon to listen on rather than the default of 873\&.  See also the \(lqport\(rq
 global option in the rsyncd\&.conf manpage\&.
 .IP 
 .IP "\fB\-\-log\-file=FILE\fP"
 This option tells the rsync daemon to use the
-given log-file name instead of using the "log file" setting in the config
+given log-file name instead of using the \(lqlog file\(rq setting in the config
 file\&.
 .IP 
 .IP "\fB\-\-log\-file\-format=FORMAT\fP"
 This option tells the rsync daemon to use the
-given FORMAT string instead of using the "log format" setting in the config
-file\&.  It also enables "transfer logging" unless the string is empty, in which
+given FORMAT string instead of using the \(lqlog format\(rq setting in the config
+file\&.  It also enables \(lqtransfer logging\(rq unless the string is empty, in which
 case transfer logging is turned off\&.
 .IP 
 .IP "\fB\-\-sockopts\fP"
@@ -2140,14 +2140,14 @@ rsyncd\&.conf file and has the same syntax\&.
 This option increases the amount of information the
 daemon logs during its startup phase\&.  After the client connects, the
 daemon\&'s verbosity level will be controlled by the options that the client
-used and the "max verbosity" setting in the module\&'s config section\&.
+used and the \(lqmax verbosity\(rq setting in the module\&'s config section\&.
 .IP 
 .IP "\fB\-4, \-\-ipv4\fP or \fB\-6, \-\-ipv6\fP"
 Tells rsync to prefer IPv4/IPv6
 when creating the incoming sockets that the rsync daemon will use to
 listen for connections\&.  One of these options may be required in older
 versions of Linux to work around an IPv6 bug in the kernel (if you see
-an "address already in use" error when nothing else is using the port,
+an \(lqaddress already in use\(rq error when nothing else is using the port,
 try specifying \fB\-\-ipv6\fP or \fB\-\-ipv4\fP when starting the daemon)\&.
 .IP 
 .IP "\fB\-h, \-\-help\fP"
@@ -2210,15 +2210,15 @@ Here are the available rule prefixes:
 
 .PP 
 When rules are being read from a file, empty lines are ignored, as are
-comment lines that start with a "#"\&.
+comment lines that start with a \(lq#\(rq\&.
 .PP 
 Note that the \fB\-\-include\fP/\fB\-\-exclude\fP command-line options do not allow the
-full range of rule parsing as described above -- they only allow the
-specification of include/exclude patterns plus a "!" token to clear the
+full range of rule parsing as described above \(em they only allow the
+specification of include/exclude patterns plus a \(lq!\(rq token to clear the
 list (and the normal comment parsing when rules are read from a file)\&.
 If a pattern
-does not begin with "\- " (dash, space) or "+ " (plus, space), then the
-rule will be interpreted as if "+ " (for an include option) or "\- " (for
+does not begin with \(lq\- \(rq (dash, space) or \(lq+ \(rq (plus, space), then the
+rule will be interpreted as if \(lq+ \(rq (for an include option) or \(lq\- \(rq (for
 an exclude option) were prefixed to the string\&.  A \fB\-\-filter\fP option, on
 the other hand, must always contain either a short or long rule name at the
 start of the rule\&.
@@ -2231,8 +2231,8 @@ the \fB\-\-include\-from\fP/\fB\-\-exclude\-from\fP options\&.
 .SH "INCLUDE/EXCLUDE PATTERN RULES"
 
 .PP 
-You can include and exclude files by specifying patterns using the "+",
-"\-", etc\&. filter rules (as introduced in the FILTER RULES section above)\&.
+You can include and exclude files by specifying patterns using the \(lq+\(rq,
+\(lq\-\(rq, etc\&. filter rules (as introduced in the FILTER RULES section above)\&.
 The include/exclude rules each specify a pattern that is matched against
 the names of the files that are going to be transferred\&.  These patterns
 can take several forms:
@@ -2242,16 +2242,16 @@ if the pattern starts with a / then it is anchored to a
 particular spot in the hierarchy of files, otherwise it is matched
 against the end of the pathname\&.  This is similar to a leading ^ in
 regular expressions\&.
-Thus "/foo" would match a file named "foo" at either the "root of the
-transfer" (for a global rule) or in the merge-file\&'s directory (for a
+Thus \(lq/foo\(rq would match a file named \(lqfoo\(rq at either the \(lqroot of the
+transfer\(rq (for a global rule) or in the merge-file's directory (for a
 per-directory rule)\&.
-An unqualified "foo" would match any file or directory named "foo"
+An unqualified \(lqfoo\(rq would match any file or directory named \(lqfoo\(rq
 anywhere in the tree because the algorithm is applied recursively from
 the
 top down; it behaves as if each path component gets a turn at being the
-end of the file name\&.  Even the unanchored "sub/foo" would match at
-any point in the hierarchy where a "foo" was found within a directory
-named "sub"\&.  See the section on ANCHORING INCLUDE/EXCLUDE PATTERNS for
+end of the file name\&.  Even the unanchored \(lqsub/foo\(rq would match at
+any point in the hierarchy where a \(lqfoo\(rq was found within a directory
+named \(lqsub\(rq\&.  See the section on ANCHORING INCLUDE/EXCLUDE PATTERNS for
 a full discussion of how to specify a pattern that matches at the root
 of the transfer\&.
 .IP o 
@@ -2273,25 +2273,25 @@ a \&'[\&' introduces a character class, such as [a\-z] or [[:alpha:]]\&.
 in a wildcard pattern, a backslash can be used to escape a wildcard
 character, but it is matched literally when no wildcards are present\&.
 .IP o 
-if the pattern contains a / (not counting a trailing /) or a "**",
+if the pattern contains a / (not counting a trailing /) or a \(lq**\(rq,
 then it is matched against the full pathname, including any leading
-directories\&. If the pattern doesn\&'t contain a / or a "**", then it is
+directories\&. If the pattern doesn\&'t contain a / or a \(lq**\(rq, then it is
 matched only against the final component of the filename\&.
-(Remember that the algorithm is applied recursively so "full filename"
+(Remember that the algorithm is applied recursively so \(lqfull filename\(rq
 can actually be any portion of a path from the starting directory on
 down\&.)
 .IP o 
-a trailing "dir_name/***" will match both the directory (as if
-"dir_name/" had been specified) and all the files in the directory
-(as if "dir_name/**" had been specified)\&.  (This behavior is new for
+a trailing \(lqdir_name/***\(rq will match both the directory (as if
+\(lqdir_name/\(rq had been specified) and all the files in the directory
+(as if \(lqdir_name/**\(rq had been specified)\&.  (This behavior is new for
 version 2\&.6\&.7\&.)
 
 .PP 
 Note that, when using the \fB\-\-recursive\fP (\fB\-r\fP) option (which is implied by
 \fB\-a\fP), every subcomponent of every path is visited from the top down, so
 include/exclude patterns get applied recursively to each subcomponent\&'s
-full name (e\&.g\&. to include "/foo/bar/baz" the subcomponents "/foo" and
-"/foo/bar" must not be excluded)\&.
+full name (e\&.g\&. to include \(lq/foo/bar/baz\(rq the subcomponents \(lq/foo\(rq and
+\(lq/foo/bar\(rq must not be excluded)\&.
 The exclude patterns actually short-circuit the directory traversal stage
 when rsync finds the files to send\&.  If a pattern excludes a particular
 parent directory, it can render a deeper include pattern ineffectual
@@ -2309,11 +2309,11 @@ For instance, this won\&'t work:
 .RE
 
 .PP 
-This fails because the parent directory "some" is excluded by the \&'*\&'
-rule, so rsync never visits any of the files in the "some" or "some/path"
+This fails because the parent directory \(lqsome\(rq is excluded by the \&'*\&'
+rule, so rsync never visits any of the files in the \(lqsome\(rq or \(lqsome/path\(rq
 directories\&.  One solution is to ask for all directories in the hierarchy
-to be included by using a single rule: "+ */" (put it somewhere before the
-"\- *" rule), and perhaps use the \fB\-\-prune\-empty\-dirs\fP option\&.  Another
+to be included by using a single rule: \(lq+ */\(rq (put it somewhere before the
+\(lq\- *\(rq rule), and perhaps use the \fB\-\-prune\-empty\-dirs\fP option\&.  Another
 solution is to add specific include rules for all
 the parent dirs that need to be visited\&.  For instance, this set of rules
 works fine:
@@ -2335,26 +2335,26 @@ works fine:
 Here are some examples of exclude/include matching:
 .PP 
 .IP o 
-"\- *\&.o" would exclude all filenames matching *\&.o
+\(lq\- *\&.o\(rq would exclude all filenames matching *\&.o
 .IP o 
-"\- /foo" would exclude a file (or directory) named foo in the
+\(lq\- /foo\(rq would exclude a file (or directory) named foo in the
 transfer-root directory
 .IP o 
-"\- foo/" would exclude any directory named foo
+\(lq\- foo/\(rq would exclude any directory named foo
 .IP o 
-"\- /foo/*/bar" would exclude any file named bar which is at two
+\(lq\- /foo/*/bar\(rq would exclude any file named bar which is at two
 levels below a directory named foo in the transfer-root directory
 .IP o 
-"\- /foo/**/bar" would exclude any file named bar two
+\(lq\- /foo/**/bar\(rq would exclude any file named bar two
 or more levels below a directory named foo in the transfer-root directory
 .IP o 
-The combination of "+ */", "+ *\&.c", and "\- *" would include all
+The combination of \(lq+ */\(rq, \(lq+ *\&.c\(rq, and \(lq\- *\(rq would include all
 directories and C source files but nothing else (see also the
 \fB\-\-prune\-empty\-dirs\fP option)
 .IP o 
-The combination of "+ foo/", "+ foo/bar\&.c", and "\- *" would include
+The combination of \(lq+ foo/\(rq, \(lq+ foo/bar\&.c\(rq, and \(lq\- *\(rq would include
 only the foo directory and foo/bar\&.c (the foo directory must be
-explicitly included or it would be excluded by the "*")
+explicitly included or it would be excluded by the \(lq*\(rq)
 
 .PP 
 .SH "MERGE-FILE FILTER RULES"
@@ -2364,16 +2364,16 @@ You can merge whole files into your filter rules by specifying either a
 merge (\&.) or a dir-merge (:) filter rule (as introduced in the FILTER RULES
 section above)\&.
 .PP 
-There are two kinds of merged files -- single-instance (\&'\&.\&') and
+There are two kinds of merged files \(em single-instance (\&'\&.\&') and
 per-directory (\&':\&')\&.  A single-instance merge file is read one time, and
-its rules are incorporated into the filter list in the place of the "\&."
+its rules are incorporated into the filter list in the place of the \(lq\&.\(rq
 rule\&.  For per-directory merge files, rsync will scan every directory that
 it traverses for the named file, merging its contents when the file exists
 into the current list of inherited rules\&.  These per-directory rule files
 must be created on the sending side because it is the sending side that is
 being scanned for the available files to transfer\&.  These rule files may
 also need to be transferred to the receiving side if you want them to
-affect what files don\&'t get deleted (see PER-DIRECTORY RULES AND DELETE
+affect what files don't get deleted (see PER-DIRECTORY RULES AND DELETE
 below)\&.
 .PP 
 Some examples:
@@ -2404,43 +2404,43 @@ patterns, with no other rule-parsing except for in-file comments\&.
 A \fBC\fP is a way to specify that the file should be read in a
 CVS-compatible manner\&.  This turns on \&'n\&', \&'w\&', and \&'\-\&', but also
 allows the list-clearing token (!) to be specified\&.  If no filename is
-provided, "\&.cvsignore" is assumed\&.
+provided, \(lq\&.cvsignore\(rq is assumed\&.
 .IP o 
 A \fBe\fP will exclude the merge-file name from the transfer; e\&.g\&.
-"dir-merge,e \&.rules" is like "dir-merge \&.rules" and "\- \&.rules"\&.
+\(lqdir-merge,e \&.rules\(rq is like \(lqdir-merge \&.rules\(rq and \(lq\- \&.rules\(rq\&.
 .IP o 
 An \fBn\fP specifies that the rules are not inherited by subdirectories\&.
 .IP o 
 A \fBw\fP specifies that the rules are word-split on whitespace instead
 of the normal line-splitting\&.  This also turns off comments\&.  Note: the
 space that separates the prefix from the rule is treated specially, so
-"\- foo + bar" is parsed as two rules (assuming that prefix-parsing wasn\&'t
+\(lq\- foo + bar\(rq is parsed as two rules (assuming that prefix-parsing wasn\&'t
 also disabled)\&.
 .IP o 
-You may also specify any of the modifiers for the "+" or "\-" rules
+You may also specify any of the modifiers for the \(lq+\(rq or \(lq\-\(rq rules
 (below) in order to have the rules that are read in from the file
-default to having that modifier set\&.  For instance, "merge,\-/ \&.excl" would
+default to having that modifier set\&.  For instance, \(lqmerge,\-/ \&.excl\(rq would
 treat the contents of \&.excl as absolute-path excludes,
-while "dir-merge,s \&.filt" and ":sC" would each make all their
+while \(lqdir-merge,s \&.filt\(rq and \(lq:sC\(rq would each make all their
 per-directory rules apply only on the sending side\&.
 
 .PP 
-The following modifiers are accepted after a "+" or "\-":
+The following modifiers are accepted after a \(lq+\(rq or \(lq\-\(rq:
 .PP 
 .IP o 
-A "/" specifies that the include/exclude rule should be matched
+A \(lq/\(rq specifies that the include/exclude rule should be matched
 against the absolute pathname of the current item\&.  For example,
-"\-/ /etc/passwd" would exclude the passwd file any time the transfer
-was sending files from the "/etc" directory, and "\-/ subdir/foo"
-would always exclude "foo" when it is in a dir named "subdir", even
-if "foo" is at the root of the current transfer\&.
+\(lq\-/ /etc/passwd\(rq would exclude the passwd file any time the transfer
+was sending files from the \(lq/etc\(rq directory, and \(lq\-/ subdir/foo\(rq
+would always exclude \(lqfoo\(rq when it is in a dir named \(lqsubdir\(rq, even
+if \(lqfoo\(rq is at the root of the current transfer\&.
 .IP o 
-A "!" specifies that the include/exclude should take effect if
-the pattern fails to match\&.  For instance, "\-! */" would exclude all
+A \(lq!\(rq specifies that the include/exclude should take effect if
+the pattern fails to match\&.  For instance, \(lq\-! */\(rq would exclude all
 non-directories\&.
 .IP o 
 A \fBC\fP is used to indicate that all the global CVS-exclude rules
-should be inserted as excludes in place of the "\-C"\&.  No arg should
+should be inserted as excludes in place of the \(lq\-C\(rq\&.  No arg should
 follow\&.
 .IP o 
 An \fBs\fP is used to indicate that the rule applies to the sending
@@ -2459,18 +2459,18 @@ specify receiver-side includes/excludes\&.
 .PP 
 Per-directory rules are inherited in all subdirectories of the directory
 where the merge-file was found unless the \&'n\&' modifier was used\&.  Each
-subdirectory\&'s rules are prefixed to the inherited per-directory rules
+subdirectory's rules are prefixed to the inherited per-directory rules
 from its parents, which gives the newest rules a higher priority than the
 inherited rules\&.  The entire set of dir-merge rules are grouped together in
 the spot where the merge-file was specified, so it is possible to override
 dir-merge rules via a rule that got specified earlier in the list of global
-rules\&.  When the list-clearing rule ("!") is read from a per-directory
+rules\&.  When the list-clearing rule (\(lq!\(rq) is read from a per-directory
 file, it only clears the inherited rules for the current merge file\&.
 .PP 
 Another way to prevent a single rule from a dir-merge file from being inherited is to
 anchor it with a leading slash\&.  Anchored rules in a per-directory
-merge-file are relative to the merge-file\&'s directory, so a pattern "/foo"
-would only match the file "foo" in the directory where the dir-merge filter
+merge-file are relative to the merge-file\&'s directory, so a pattern \(lq/foo\(rq
+would only match the file \(lqfoo\(rq in the directory where the dir-merge filter
 file was found\&.
 .PP 
 Here\&'s an example filter file which you\&'d specify via \fB\-\-filter="\&. file":\fP
@@ -2490,7 +2490,7 @@ Here\&'s an example filter file which you\&'d specify via \fB\-\-filter="\&. fil
 
 .PP 
 This will merge the contents of the /home/user/\&.global\-filter file at the
-start of the list and also turns the "\&.rules" filename into a per-directory
+start of the list and also turns the \(lq\&.rules\(rq filename into a per-directory
 filter file\&.  All rules read in prior to the start of the directory scan
 follow the global anchoring rules (i\&.e\&. a leading slash matches at the root
 of the transfer)\&.
@@ -2509,7 +2509,7 @@ That rule tells rsync to scan for the file \&.rsync\-filter in all
 directories from the root down through the parent directory of the
 transfer prior to the start of the normal directory scan of the file in
 the directories that are sent as a part of the transfer\&.  (Note: for an
-rsync daemon, the root is always the same as the module\&'s "path"\&.)
+rsync daemon, the root is always the same as the module\&'s \(lqpath\(rq\&.)
 .PP 
 Some examples of this pre-scanning for per-directory files:
 .PP 
@@ -2523,18 +2523,18 @@ Some examples of this pre-scanning for per-directory files:
 .RE
 
 .PP 
-The first two commands above will look for "\&.rsync\-filter" in "/" and
-"/src" before the normal scan begins looking for the file in "/src/path"
+The first two commands above will look for \(lq\&.rsync\-filter\(rq in \(lq/\(rq and
+\(lq/src\(rq before the normal scan begins looking for the file in \(lq/src/path\(rq
 and its subdirectories\&.  The last command avoids the parent-dir scan
-and only looks for the "\&.rsync\-filter" files in each directory that is
+and only looks for the \(lq\&.rsync\-filter\(rq files in each directory that is
 a part of the transfer\&.
 .PP 
-If you want to include the contents of a "\&.cvsignore" in your patterns,
-you should use the rule ":C", which creates a dir-merge of the \&.cvsignore
+If you want to include the contents of a \(lq\&.cvsignore\(rq in your patterns,
+you should use the rule \(lq:C\(rq, which creates a dir-merge of the \&.cvsignore
 file, but parsed in a CVS-compatible manner\&.  You can
 use this to affect where the \fB\-\-cvs\-exclude\fP (\fB\-C\fP) option\&'s inclusion of the
 per-directory \&.cvsignore file gets placed into your rules by putting the
-":C" wherever you like in your filter rules\&.  Without this, rsync would
+\(lq:C\(rq wherever you like in your filter rules\&.  Without this, rsync would
 add the dir-merge rule for the \&.cvsignore file at the end of all your other
 rules (giving it a lower priority than your command-line rules)\&.  For
 example:
@@ -2561,14 +2561,14 @@ at the end\&.  This allows their dir-specific rules to supersede the rules
 that follow the :C instead of being subservient to all your rules\&.  To
 affect the other CVS exclude rules (i\&.e\&. the default list of exclusions,
 the contents of $HOME/\&.cvsignore, and the value of $CVSIGNORE) you should
-omit the \fB\-C\fP command-line option and instead insert a "\-C" rule into
-your filter rules; e\&.g\&. "\-\-filter=\-C"\&.
+omit the \fB\-C\fP command-line option and instead insert a \(lq\-C\(rq rule into
+your filter rules; e\&.g\&. \(lq\-\-filter=\-C\(rq\&.
 .PP 
 .SH "LIST-CLEARING FILTER RULE"
 
 .PP 
-You can clear the current include/exclude list by using the "!" filter
-rule (as introduced in the FILTER RULES section above)\&.  The "current"
+You can clear the current include/exclude list by using the \(lq!\(rq filter
+rule (as introduced in the FILTER RULES section above)\&.  The \(lqcurrent\(rq
 list is either the global list of rules (if the rule is encountered while
 parsing the filter options) or a set of per-directory rules (which are
 inherited in their own sub-list, so a subdirectory can use this to clear
@@ -2578,7 +2578,7 @@ out the parent\&'s rules)\&.
 
 .PP 
 As mentioned earlier, global include/exclude patterns are anchored at the
-"root of the transfer" (as opposed to per-directory patterns, which are
+\(lqroot of the transfer\(rq (as opposed to per-directory patterns, which are
 anchored at the merge-file\&'s directory)\&.  If you think of the transfer as
 a subtree of names that are being sent from sender to receiver, the
 transfer-root is where the tree starts to be duplicated in the destination
@@ -2591,7 +2591,7 @@ changing how much of the file tree is duplicated on the destination
 host)\&.  The following examples demonstrate this\&.
 .PP 
 Let\&'s say that we want to match two source files, one with an absolute
-path of "/home/me/foo/bar", and one with a path of "/home/you/bar/baz"\&.
+path of \(lq/home/me/foo/bar\(rq, and one with a path of \(lq/home/you/bar/baz\(rq\&.
 Here is how the various command choices differ for a 2-source transfer:
 .PP 
 .RS 
@@ -2611,9 +2611,9 @@ Target file: /dest/you/bar/baz
 .RS 
 Example cmd: rsync \-a /home/me/ /home/you/ /dest 
 .br 
-+/\- pattern: /foo/bar               (note missing "me") 
++/\- pattern: /foo/bar               (note missing \(lqme\(rq) 
 .br 
-+/\- pattern: /bar/baz               (note missing "you") 
++/\- pattern: /bar/baz               (note missing \(lqyou\(rq) 
 .br 
 Target file: /dest/foo/bar 
 .br 
@@ -2723,7 +2723,7 @@ source tree and those changes need to be propagated to the other
 hosts\&. In order to do this using batch mode, rsync is run with the
 write-batch option to apply the changes made to the source tree to one
 of the destination trees\&.  The write-batch option causes the rsync
-client to store in a "batch file" all the information needed to repeat
+client to store in a \(lqbatch file\(rq all the information needed to repeat
 this operation against other, identical destination trees\&.
 .PP 
 To apply the recorded changes to another destination tree, run rsync
@@ -2733,7 +2733,7 @@ using the information stored in the batch file\&.
 .PP 
 For convenience, one additional file is creating when the write-batch
 option is used\&.  This file\&'s name is created by appending
-"\&.sh" to the batch filename\&.  The \&.sh file contains
+\(lq\&.sh\(rq to the batch filename\&.  The \&.sh file contains
 a command-line suitable for updating a destination tree using that
 batch file\&. It can be executed using a Bourne (or Bourne-like) shell,
 optionally
@@ -2768,17 +2768,17 @@ Examples:
 
 .PP 
 In these examples, rsync is used to update /adest/dir/ from /source/dir/
-and the information to repeat this operation is stored in "foo" and
-"foo\&.sh"\&.  The host "remote" is then updated with the batched data going
+and the information to repeat this operation is stored in \(lqfoo\(rq and
+\(lqfoo\&.sh\(rq\&.  The host \(lqremote\(rq is then updated with the batched data going
 into the directory /bdest/dir\&.  The differences between the two examples
 reveals some of the flexibility you have in how you deal with batches:
 .PP 
 .IP o 
 The first example shows that the initial copy doesn\&'t have to be
-local -- you can push or pull data to/from a remote host using either the
+local \(em you can push or pull data to/from a remote host using either the
 remote-shell syntax or rsync daemon syntax, as desired\&.
 .IP o 
-The first example uses the created "foo\&.sh" file to get the right
+The first example uses the created \(lqfoo\&.sh\(rq file to get the right
 rsync options when running the read-batch command on the remote host\&.
 .IP o 
 The second example reads the batch data via standard input so that
@@ -2823,13 +2823,13 @@ For instance \fB\-\-write\-batch\fP changes to \fB\-\-read\-batch\fP,
 one of the \fB\-\-delete\fP options is specified\&.
 .PP 
 The code that creates the BATCH\&.sh file transforms any filter/include/exclude
-options into a single list that is appended as a "here" document to the
+options into a single list that is appended as a \(lqhere\(rq document to the
 shell script file\&.  An advanced user can use this to modify the exclude
 list if a change in what gets deleted by \fB\-\-delete\fP is desired\&.  A normal
 user can ignore this detail and just use the shell script as an easy way
 to run the appropriate \fB\-\-read\-batch\fP command for the batched data\&.
 .PP 
-The original batch mode in rsync was based on "rsync+", but the latest
+The original batch mode in rsync was based on \(lqrsync+\(rq, but the latest
 version uses a new implementation\&.
 .PP 
 .SH "SYMBOLIC LINKS"
@@ -2839,16 +2839,16 @@ Three basic behaviors are possible when rsync encounters a symbolic
 link in the source directory\&.
 .PP 
 By default, symbolic links are not transferred at all\&.  A message
-"skipping non-regular" file is emitted for any symlinks that exist\&.
+\(lqskipping non-regular\(rq file is emitted for any symlinks that exist\&.
 .PP 
 If \fB\-\-links\fP is specified, then symlinks are recreated with the same
 target on the destination\&.  Note that \fB\-\-archive\fP implies
 \fB\-\-links\fP\&.
 .PP 
-If \fB\-\-copy\-links\fP is specified, then symlinks are "collapsed" by
+If \fB\-\-copy\-links\fP is specified, then symlinks are \(lqcollapsed\(rq by
 copying their referent, rather than the symlink\&.
 .PP 
-rsync also distinguishes "safe" and "unsafe" symbolic links\&.  An
+rsync also distinguishes \(lqsafe\(rq and \(lqunsafe\(rq symbolic links\&.  An
 example where this might be used is a web site mirror that wishes
 ensure the rsync module they copy does not include symbolic links to
 \fB/etc/passwd\fP in the public section of the site\&.  Using
@@ -2858,7 +2858,7 @@ unsafe links to be omitted altogether\&.  (Note that you must specify
 \fB\-\-links\fP for \fB\-\-safe\-links\fP to have any effect\&.)
 .PP 
 Symbolic links are considered unsafe if they are absolute symlinks
-(start with \fB/\fP), empty, or if they contain enough \fB"\&.\&."\fP
+(start with \fB/\fP), empty, or if they contain enough \fB\(lq\&.\&.\(rq\fP
 components to ascend from the directory being copied\&.
 .PP 
 Here\&'s a summary of how the symlink options are interpreted\&.  The list is
@@ -2888,8 +2888,8 @@ Duplicate all symlinks\&.
 
 .PP 
 rsync occasionally produces error messages that may seem a little
-cryptic\&. The one that seems to cause the most confusion is "protocol
-version mismatch -- is your shell clean?"\&.
+cryptic\&. The one that seems to cause the most confusion is \(lqprotocol
+version mismatch \(em is your shell clean?\(rq\&.
 .PP 
 This message is usually caused by your startup scripts or remote shell
 facility producing unwanted garbage on the stream that rsync is using
@@ -2983,7 +2983,7 @@ password to a shell transport such as ssh\&.
 .IP "\fBUSER\fP or \fBLOGNAME\fP"
 The USER or LOGNAME environment variables
 are used to determine the default username sent to an rsync daemon\&.
-If neither is set, the username defaults to "nobody"\&.
+If neither is set, the username defaults to \(lqnobody\(rq\&.
 .IP "\fBHOME\fP"
 The HOME environment variable is used to find the user\&'s
 default \&.cvsignore file\&.
@@ -3056,7 +3056,7 @@ Jean-loup Gailly and Mark Adler\&.
 .PP 
 Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell
 and David Bell for helpful suggestions, patches and testing of rsync\&.
-I\&'ve probably missed some people, my apologies if I have\&.
+I've probably missed some people, my apologies if I have\&.
 .PP 
 Especial thanks also to: David Dykstra, Jos Backus, Sebastian Krahmer,
 Martin Pool, Wayne Davison, J\&.W\&. Schultz\&.
diff --git a/rsync.h b/rsync.h
index a366f8a..7039a15 100644
--- a/rsync.h
+++ b/rsync.h
@@ -168,7 +168,7 @@ enum logcode { FNONE=0, FERROR=1, FINFO=2, FLOG=3, FCLIENT=4, FSOCKERR=5 };
 enum msgcode {
 	MSG_DATA=0,	/* raw data on the multiplexed stream */
 	MSG_ERROR=FERROR, MSG_INFO=FINFO, /* remote logging */
-	MSG_LOG=FLOG, MSG_SOCKERR=FSOCKERR, /* sibling logging */
+	MSG_LOG=FLOG, MSG_CLIENT=FCLIENT, MSG_SOCKERR=FSOCKERR, /* sibling logging */
 	MSG_REDO=9,	/* reprocess indicated flist index */
 	MSG_SUCCESS=100,/* successfully updated indicated flist index */
 	MSG_DELETED=101,/* successfully deleted a file on receiving side */
@@ -878,7 +878,7 @@ size_t strlcat(char *d, const char *s, size_t bufsize);
 extern int verbose;
 
 #ifndef HAVE_INET_NTOP
-const char *inet_ntop(int af, const void *src, char *dst, size_t size);
+const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
 #endif
 
 #ifndef HAVE_INET_PTON
diff --git a/rsyncd.conf.5 b/rsyncd.conf.5
index b1f2e1e..d19f2a3 100644
--- a/rsyncd.conf.5
+++ b/rsyncd.conf.5
@@ -1,6 +1,6 @@
 .TH "rsyncd\&.conf" "5" "6 Nov 2006" "" ""
 .SH "NAME"
-rsyncd\&.conf \- configuration file for rsync in daemon mode
+rsyncd\&.conf - configuration file for rsync in daemon mode
 .SH "SYNOPSIS"
 
 .PP 
@@ -20,9 +20,9 @@ available modules\&.
 .PP 
 The file consists of modules and parameters\&. A module begins with the
 name of the module in square brackets and continues until the next
-module begins\&. Modules contain parameters of the form \&'name = value\&'\&.
+module begins\&. Modules contain parameters of the form \(oqname = value\(cq\&.
 .PP 
-The file is line-based -- that is, each newline-terminated line represents
+The file is line-based \(em that is, each newline-terminated line represents
 either a comment, a module name or a parameter\&.
 .PP 
 Only the first equals sign in a parameter is significant\&. Whitespace before
@@ -34,7 +34,7 @@ within a parameter value is retained verbatim\&.
 Any line beginning with a hash (#) is ignored, as are lines containing
 only whitespace\&.
 .PP 
-Any line ending in a \e is "continued" on the next line in the
+Any line ending in a \e is \(lqcontinued\(rq on the next line in the
 customary UNIX fashion\&.
 .PP 
 The values following the equals sign in parameters are all either a string
@@ -71,7 +71,7 @@ and a single line something like this to /etc/inetd\&.conf:
 .fi 
 
 .PP 
-Replace "/usr/bin/rsync" with the path to where you have rsync installed on
+Replace \(lq/usr/bin/rsync\(rq with the path to where you have rsync installed on
 your system\&.  You will then need to send inetd a HUP signal to tell it to
 reread its config file\&.
 .PP 
@@ -90,13 +90,13 @@ config file in which case the supplied value will override the
 default for that parameter\&.
 .PP 
 .IP "\fBmotd file\fP"
-The "motd file" option allows you to specify a
-"message of the day" to display to clients on each connect\&. This
+The \(lqmotd file\(rq option allows you to specify a
+\(lqmessage of the day\(rq to display to clients on each connect\&. This
 usually contains site information and any legal notices\&. The default
 is no motd file\&.
 .IP 
 .IP "\fBpid file\fP"
-The "pid file" option tells the rsync daemon to write
+The \(lqpid file\(rq option tells the rsync daemon to write
 its process ID to that file\&.
 .IP 
 .IP "\fBport\fP"
@@ -129,28 +129,28 @@ exported by specifying a module name in square brackets [module]
 followed by the options for that module\&.
 .PP 
 .IP "\fBcomment\fP"
-The "comment" option specifies a description string
+The \(lqcomment\(rq option specifies a description string
 that is displayed next to the module name when clients obtain a list
 of available modules\&. The default is no comment\&.
 .IP 
 .IP "\fBpath\fP"
-The "path" option specifies the directory in the daemon\&'s
+The \(lqpath\(rq option specifies the directory in the daemon\&'s
 filesystem to make available in this module\&.  You must specify this option
 for each module in \f(CWrsyncd\&.conf\fP\&.
 .IP 
 .IP "\fBuse chroot\fP"
-If "use chroot" is true, the rsync daemon will chroot
-to the "path" before starting the file transfer with the client\&.  This has
+If \(lquse chroot\(rq is true, the rsync daemon will chroot
+to the \(lqpath\(rq before starting the file transfer with the client\&.  This has
 the advantage of extra protection against possible implementation security
 holes, but it has the disadvantages of requiring super-user privileges,
 of not being able to follow symbolic links that are either absolute or outside
 of the new root path, and of complicating the preservation of usernames and groups
-(see below)\&.  When "use chroot" is false, for security reasons,
+(see below)\&.  When \(lquse chroot\(rq is false, for security reasons,
 symlinks may only be relative paths pointing to other files within the root
 path, and leading slashes are removed from most absolute paths (options
 such as \fB\-\-backup\-dir\fP, \fB\-\-compare\-dest\fP, etc\&. interpret an absolute path as
-rooted in the module\&'s "path" dir, just as if chroot was specified)\&.
-The default for "use chroot" is true\&.
+rooted in the module\&'s \(lqpath\(rq dir, just as if chroot was specified)\&.
+The default for \(lquse chroot\(rq is true\&.
 .IP 
 In order to preserve usernames and groupnames, rsync needs to be able to
 use the standard library functions for looking up names and IDs (i\&.e\&.
@@ -182,14 +182,14 @@ do this automatically, but you might as well specify both to be extra
 sure)\&.
 .IP 
 .IP "\fBmax connections\fP"
-The "max connections" option allows you to
+The \(lqmax connections\(rq option allows you to
 specify the maximum number of simultaneous connections you will allow\&.
 Any clients connecting when the maximum has been reached will receive a
 message telling them to try later\&.  The default is 0 which means no limit\&.
-See also the "lock file" option\&.
+See also the \(lqlock file\(rq option\&.
 .IP 
 .IP "\fBlog file\fP"
-When the "log file" option is set to a non-empty
+When the \(lqlog file\(rq option is set to a non-empty
 string, the rsync daemon will log messages to the indicated file rather
 than using syslog\&. This is particularly useful on systems (such as AIX)
 where 
@@ -207,67 +207,66 @@ using syslog and output an error about the failure\&.  (Note that the
 failure to open the specified log file used to be a fatal error\&.)
 .IP 
 .IP "\fBsyslog facility\fP"
-The "syslog facility" option allows you to
+The \(lqsyslog facility\(rq option allows you to
 specify the syslog facility name to use when logging messages from the
 rsync daemon\&. You may use any standard syslog facility name which is
 defined on your system\&. Common names are auth, authpriv, cron, daemon,
 ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0,
 local1, local2, local3, local4, local5, local6 and local7\&. The default
-is daemon\&.  This setting has no effect if the "log file" setting is a
+value in ALT Linux is ftp\&.  This setting has no effect if the \(lqlog file\(rq setting is a
 non-empty string (either set in the per-modules settings, or inherited
 from the global settings)\&.
 .IP 
 .IP "\fBmax verbosity\fP"
-The "max verbosity" option allows you to control
+The \(lqmax verbosity\(rq option allows you to control
 the maximum amount of verbose information that you\&'ll allow the daemon to
 generate (since the information goes into the log file)\&. The default is 1,
 which allows the client to request one level of verbosity\&.
 .IP 
 .IP "\fBlock file\fP"
-The "lock file" option specifies the file to use to
-support the "max connections" option\&. The rsync daemon uses record
+The \(lqlock file\(rq option specifies the file to use to
+support the \(lqmax connections\(rq option\&. The rsync daemon uses record
 locking on this file to ensure that the max connections limit is not
 exceeded for the modules sharing the lock file\&.
 The default is \f(CW/var/run/rsyncd\&.lock\fP\&.
 .IP 
 .IP "\fBread only\fP"
-The "read only" option determines whether clients
-will be able to upload files or not\&. If "read only" is true then any
-attempted uploads will fail\&. If "read only" is false then uploads will
+The \(lqread only\(rq option determines whether clients
+will be able to upload files or not\&. If \(lqread only\(rq is true then any
+attempted uploads will fail\&. If \(lqread only\(rq is false then uploads will
 be possible if file permissions on the daemon side allow them\&. The default
 is for all modules to be read only\&.
 .IP 
 .IP "\fBwrite only\fP"
-The "write only" option determines whether clients
-will be able to download files or not\&. If "write only" is true then any
-attempted downloads will fail\&. If "write only" is false then downloads
+The \(lqwrite only\(rq option determines whether clients
+will be able to download files or not\&. If \(lqwrite only\(rq is true then any
+attempted downloads will fail\&. If \(lqwrite only\(rq is false then downloads
 will be possible if file permissions on the daemon side allow them\&.  The
 default is for this option to be disabled\&.
 .IP 
 .IP "\fBlist\fP"
-The "list" option determines if this module should be
+The \(lqlist\(rq option determines if this module should be
 listed when the client asks for a listing of available modules\&. By
 setting this to false you can create hidden modules\&. The default is
 for modules to be listable\&.
 .IP 
 .IP "\fBuid\fP"
-The "uid" option specifies the user name or user ID that
+The \(lquid\(rq option specifies the user name or user ID that
 file transfers to and from that module should take place as when the daemon
-was run as root\&. In combination with the "gid" option this determines what
-file permissions are available\&. The default is uid \-2, which is normally
-the user "nobody"\&.
+was run as root\&. In combination with the \(lqgid\(rq option this determines what
+file permissions are available\&. The default in ALT Linux is user \(lqrsyncd\(rq\&.
 .IP 
 .IP "\fBgid\fP"
-The "gid" option specifies the group name or group ID that
+The \(lqgid\(rq option specifies the group name or group ID that
 file transfers to and from that module should take place as when the daemon
-was run as root\&. This complements the "uid" option\&. The default is gid \-2,
-which is normally the group "nobody"\&.
+was run as root\&. This complements the \(lquid\(rq option\&. The default
+in ALT Linux is group \(lqrsyncd\(rq)\&.
 .IP 
 .IP "\fBfilter\fP"
-The "filter" option allows you to specify a space-separated
+The \(lqfilter\(rq option allows you to specify a space-separated
 list of filter rules that the daemon will not allow to be read or written\&.
 This is only superficially equivalent to the client specifying these
-patterns with the \fB\-\-filter\fP option\&.  Only one "filter" option may be
+patterns with the \fB\-\-filter\fP option\&.  Only one \(lqfilter\(rq option may be
 specified, but it may contain as many rules as you like, including
 merge-file rules\&.  Note that per-directory merge-file rules do not provide
 as much protection as global rules, but they can be used to make \fB\-\-delete\fP
@@ -275,10 +274,10 @@ work better when a client downloads the daemon\&'s files (if the per-dir
 merge files are included in the transfer)\&.
 .IP 
 .IP "\fBexclude\fP"
-The "exclude" option allows you to specify a
+The \(lqexclude\(rq option allows you to specify a
 space-separated list of patterns that the daemon will not allow to be read
 or written\&.  This is only superficially equivalent to the client
-specifying these patterns with the \fB\-\-exclude\fP option\&.  Only one "exclude"
+specifying these patterns with the \fB\-\-exclude\fP option\&.  Only one \(lqexclude\(rq
 option may be specified, but you can use "\-" and "+" before patterns to
 specify exclude/include\&.
 .IP 
@@ -289,28 +288,28 @@ it doesn\&'t exclude files from being deleted on a client when receiving
 from a daemon\&.
 .IP 
 .IP "\fBexclude from\fP"
-The "exclude from" option specifies a filename
+The \(lqexclude from\(rq option specifies a filename
 on the daemon that contains exclude patterns, one per line\&.
 This is only superficially equivalent
 to the client specifying the \fB\-\-exclude\-from\fP option with an equivalent file\&.
-See the "exclude" option above\&.
+See the \(lqexclude\(rq option above\&.
 .IP 
 .IP "\fBinclude\fP"
-The "include" option allows you to specify a
+The \(lqinclude\(rq option allows you to specify a
 space-separated list of patterns which rsync should not exclude\&. This is
 only superficially equivalent to the client specifying these patterns with
 the \fB\-\-include\fP option because it applies only on the daemon\&.  This is
 useful as it allows you to build up quite complex exclude/include rules\&.
-Only one "include" option may be specified, but you can use "+" and "\-"
-before patterns to switch include/exclude\&.  See the "exclude" option
+Only one \(lqinclude\(rq option may be specified, but you can use "+" and "\-"
+before patterns to switch include/exclude\&.  See the \(lqexclude\(rq option
 above\&.
 .IP 
 .IP "\fBinclude from\fP"
-The "include from" option specifies a filename
+The \(lqinclude from\(rq option specifies a filename
 on the daemon that contains include patterns, one per line\&. This is
 only superficially equivalent to the client specifying the
 \fB\-\-include\-from\fP option with a equivalent file\&.
-See the "exclude" option above\&.
+See the \(lqexclude\(rq option above\&.
 .IP 
 .IP "\fBincoming chmod\fP"
 This option allows you to specify a set of
@@ -334,47 +333,47 @@ See the description of the \fB\-\-chmod\fP rsync option and the \fBchmod\fP(1)
 manpage for information on the format of this string\&.
 .IP 
 .IP "\fBauth users\fP"
-The "auth users" option specifies a comma and
+The \(lqauth users\(rq option specifies a comma and
 space-separated list of usernames that will be allowed to connect to
 this module\&. The usernames do not need to exist on the local
 system\&. The usernames may also contain shell wildcard characters\&. If
-"auth users" is set then the client will be challenged to supply a
+\(lqauth users\(rq is set then the client will be challenged to supply a
 username and password to connect to the module\&. A challenge response
 authentication protocol is used for this exchange\&. The plain text
 usernames and passwords are stored in the file specified by the
-"secrets file" option\&. The default is for all users to be able to
-connect without a password (this is called "anonymous rsync")\&.
+\(lqsecrets file\(rq option\&. The default is for all users to be able to
+connect without a password (this is called \(lqanonymous rsync\(rq)\&.
 .IP 
-See also the "CONNECTING TO AN RSYNC DAEMON OVER A REMOTE SHELL
-PROGRAM" section in \fBrsync\fP(1) for information on how handle an
+See also the \(lqCONNECTING TO AN RSYNC DAEMON OVER A REMOTE SHELL
+PROGRAM\(rq section in \fBrsync\fP(1) for information on how handle an
 rsyncd\&.conf\-level username that differs from the remote-shell-level
 username when using a remote shell to connect to an rsync daemon\&.
 .IP 
 .IP "\fBsecrets file\fP"
-The "secrets file" option specifies the name of
+The \(lqsecrets file\(rq option specifies the name of
 a file that contains the username:password pairs used for
-authenticating this module\&. This file is only consulted if the "auth
-users" option is specified\&. The file is line based and contains
+authenticating this module\&. This file is only consulted if the \(lqauth
+users\(rq option is specified\&. The file is line based and contains
 username:password pairs separated by a single colon\&. Any line starting
 with a hash (#) is considered a comment and is skipped\&. The passwords
 can contain any characters but be warned that many operating systems
 limit the length of passwords that can be typed at the client end, so
 you may find that passwords longer than 8 characters don\&'t work\&.
 .IP 
-There is no default for the "secrets file" option, you must choose a name
+There is no default for the \(lqsecrets file\(rq option, you must choose a name
 (such as \f(CW/etc/rsyncd\&.secrets\fP)\&.  The file must normally not be readable
-by "other"; see "strict modes"\&.
+by \(lqother\(rq; see \(lqstrict modes\(rq\&.
 .IP 
 .IP "\fBstrict modes\fP"
-The "strict modes" option determines whether or not
-the permissions on the secrets file will be checked\&.  If "strict modes" is
+The \(lqstrict modes\(rq option determines whether or not
+the permissions on the secrets file will be checked\&.  If \(lqstrict modes\(rq is
 true, then the secrets file must not be readable by any user ID other
-than the one that the rsync daemon is running under\&.  If "strict modes" is
+than the one that the rsync daemon is running under\&.  If \(lqstrict modes\(rq is
 false, the check is not performed\&.  The default is true\&.  This option
 was added to accommodate rsync running on the Windows operating system\&.
 .IP 
 .IP "\fBhosts allow\fP"
-The "hosts allow" option allows you to specify a
+The \(lqhosts allow\(rq option allows you to specify a
 list of patterns that are matched against a connecting clients
 hostname and IP address\&. If none of the patterns match then the
 connection is rejected\&.
@@ -384,7 +383,7 @@ Each pattern can be in one of five forms:
 .RS 
 .IP o 
 a dotted decimal IPv4 address of the form a\&.b\&.c\&.d, or an IPv6 address
-of the form a:b:c::d:e:f\&. In this case the incoming machine\&'s IP address
+of the form a:b:c::d:e:f\&. In this case the incoming machine's IP address
 must match exactly\&.
 .IP o 
 an address/mask in the form ipaddr/n where ipaddr is the IP address
@@ -418,32 +417,33 @@ Note IPv6 link-local addresses can have a scope in the address specification:
 .RE
 
 .IP 
-You can also combine "hosts allow" with a separate "hosts deny"
-option\&. If both options are specified then the "hosts allow" option s
+You can also combine \(lqhosts allow\(rq with a separate \(lqhosts deny\(rq
+option\&. If both options are specified then the \(lqhosts allow\(rq option s
 checked first and a match results in the client being able to
-connect\&. The "hosts deny" option is then checked and a match means
+connect\&. The \(lqhosts deny\(rq option is then checked and a match means
 that the host is rejected\&. If the host does not match either the
-"hosts allow" or the "hosts deny" patterns then it is allowed to
+\(lqhosts allow\(rq or the \(lqhosts deny\(rq patterns then it is allowed to
 connect\&.
 .IP 
-The default is no "hosts allow" option, which means all hosts can connect\&.
+The default is no \(lqhosts allow\(rq option, which means all hosts can connect\&.
 .IP 
 .IP "\fBhosts deny\fP"
-The "hosts deny" option allows you to specify a
+The \(lqhosts deny\(rq option allows you to specify a
 list of patterns that are matched against a connecting clients
 hostname and IP address\&. If the pattern matches then the connection is
-rejected\&. See the "hosts allow" option for more information\&.
+rejected\&. See the \(lqhosts allow\(rq option for more information\&.
 .IP 
-The default is no "hosts deny" option, which means all hosts can connect\&.
+The default is no \(lqhosts deny\(rq option, which means all hosts can connect\&.
 .IP 
 .IP "\fBignore errors\fP"
-The "ignore errors" option tells rsyncd to
+The \(lqignore errors\(rq option tells rsyncd to
 ignore I/O errors on the daemon when deciding whether to run the delete
 phase of the transfer\&. Normally rsync skips the \fB\-\-delete\fP step if any
 I/O errors have occurred in order to prevent disastrous deletion due
 to a temporary resource shortage or other I/O error\&. In some cases this
 test is counter productive so you can use this option to turn off this
 behavior\&.
+In ALT Linux, this option is enabled by default\&.
 .IP 
 .IP "\fBignore nonreadable\fP"
 This tells the rsync daemon to completely
@@ -452,15 +452,15 @@ public archives that may have some non-readable files among the
 directories, and the sysadmin doesn\&'t want those files to be seen at all\&.
 .IP 
 .IP "\fBtransfer logging\fP"
-The "transfer logging" option enables per-file
+The \(lqtransfer logging\(rq option enables per-file
 logging of downloads and uploads in a format somewhat similar to that
 used by ftp daemons\&.  The daemon always logs the transfer at the end, so
 if a transfer is aborted, no mention will be made in the log file\&.
 .IP 
-If you want to customize the log lines, see the "log format" option\&.
+If you want to customize the log lines, see the \(lqlog format\(rq option\&.
 .IP 
 .IP "\fBlog format\fP"
-The "log format" option allows you to specify the
+The \(lqlog format\(rq option allows you to specify the
 format used for logging file transfers when transfer logging is enabled\&.
 The format is a text string containing embedded single-character escape
 sequences prefixed with a percent (%) character\&.  An optional numeric
@@ -468,9 +468,9 @@ field width may also be specified between the percent and the escape
 letter (e\&.g\&. "%\-50n %8l %07p")\&.
 .IP 
 The default log format is "%o %h [%a] %m (%u) %f %l", and a "%t [%p] "
-is always prefixed when using the "log file" option\&.
+is always prefixed when using the \(lqlog file\(rq option\&.
 (A perl script that will summarize this default log format is included
-in the rsync source code distribution in the "support" subdirectory:
+in the rsync source code distribution in the \(lqsupport\(rq subdirectory:
 rsyncstats\&.)
 .IP 
 The single-character escapes that are understood are as follows:
@@ -485,9 +485,9 @@ The single-character escapes that are understood are as follows:
 .IP o 
 %c the checksum bytes received for this file (only when sending)
 .IP o 
-%f the filename (long form on sender; no trailing "/")
+%f the filename (long form on sender; no trailing \(lq/\(rq)
 .IP o 
-%G the gid of the file (decimal) or "DEFAULT"
+%G the gid of the file (decimal) or \(lqDEFAULT\(rq
 .IP o 
 %h the remote host name
 .IP o 
@@ -525,15 +525,16 @@ rsync versions\&.  For instance, deleted files were only output as verbose
 messages prior to rsync 2\&.6\&.4\&.
 .IP 
 .IP "\fBtimeout\fP"
-The "timeout" option allows you to override the
+The \(lqtimeout\(rq option allows you to override the
 clients choice for I/O timeout for this module\&. Using this option you
 can ensure that rsync won\&'t wait on a dead client forever\&. The timeout
-is specified in seconds\&. A value of zero means no timeout and is the
-default\&. A good choice for anonymous rsync daemons may be 600 (giving
+is specified in seconds\&. A value of zero means no timeout.
+A good choice for anonymous rsync daemons may be 600 (giving
 a 10 minute timeout)\&.
+In ALT Linux, the default value is 60 (one minute)\&.
 .IP 
 .IP "\fBrefuse options\fP"
-The "refuse options" option allows you to
+The \(lqrefuse options\(rq option allows you to
 specify a space-separated list of rsync command line options that will
 be refused by your rsync daemon\&.
 You may specify the full option name, its one-letter abbreviation, or a
@@ -548,19 +549,19 @@ delete options:
 .IP 
 The reason the above refuses all delete options is that the options imply
 \fB\-\-delete\fP, and implied options are refused just like explicit options\&.
-As an additional safety feature, the refusal of "delete" also refuses
+As an additional safety feature, the refusal of \(lqdelete\(rq also refuses
 \fBremove-sent-files\fP when the daemon is the sender; if you want the latter
-without the former, instead refuse "delete\-*" -- that refuses all the
+without the former, instead refuse \(lqdelete\-*\(rq \(em that refuses all the
 delete modes without affecting \fB\-\-remove\-sent\-files\fP\&.
 .IP 
 When an option is refused, the daemon prints an error message and exits\&.
 To prevent all compression when serving files,
-you can use "dont compress = *" (see below)
-instead of "refuse options = compress" to avoid returning an error to a
+you can use \(lqdont compress = *\(rq (see below)
+instead of \(lqrefuse options = compress\(rq to avoid returning an error to a
 client that requests compression\&.
 .IP 
 .IP "\fBdont compress\fP"
-The "dont compress" option allows you to select
+The \(lqdont compress\(rq option allows you to select
 filenames based on wildcard patterns that should not be compressed
 when pulling files from the daemon (no analogous option exists to
 govern the pushing of files to a daemon)\&.
@@ -568,7 +569,7 @@ Compression is expensive in terms of CPU usage, so it
 is usually good to not try to compress files that won\&'t compress well,
 such as already compressed files\&.
 .IP 
-The "dont compress" option takes a space-separated list of
+The \(lqdont compress\(rq option takes a space-separated list of
 case-insensitive wildcard patterns\&. Any source filename matching one
 of the patterns will not be compressed during transfer\&.
 .IP 
@@ -598,10 +599,10 @@ specific to the pre-xfer or the post-xfer environment:
 .IP o 
 \fBRSYNC_REQUEST\fP: (pre-xfer only) The module/path info specified
 by the user (note that the user can specify multiple source files,
-so the request can be something like "mod/path1 mod/path2", etc\&.)\&.
+so the request can be something like \(lqmod/path1 mod/path2\(rq, etc\&.)\&.
 .IP o 
 \fBRSYNC_ARG#\fP: (pre-xfer only) The pre-request arguments are set
-in these numbered values\&. RSYNC_ARG0 is always "rsyncd", and the last
+in these numbered values\&. RSYNC_ARG0 is always \(lqrsyncd\(rq, and the last
 value contains a single period\&.
 .IP o 
 \fBRSYNC_EXIT_STATUS\fP: (post-xfer only) the server side\&'s exit value\&.
 
design & coding: Vladimir Lettiev aka crux © 2004-2005