svn commit: r270892 - in stable/10: etc etc/autofs etc/defaults etc/mtree etc/rc.d sbin/mount share/man/man5 sys/conf sys/fs/autofs sys/kern sys/libkern sys/modules sys/modules/autofs sys/sys usr.s...
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Aug 31 21:18:28 UTC 2014
Author: trasz
Date: Sun Aug 31 21:18:23 2014
New Revision: 270892
URL: http://svnweb.freebsd.org/changeset/base/270892
Log:
MFC r270096:
Bring in the new automounter, similar to what's provided in most other
UNIX systems, eg. MacOS X and Solaris. It uses Sun-compatible map format,
has proper kernel support, and LDAP integration.
There are still a few outstanding problems; they will be fixed shortly.
Reviewed by: allanjude@, emaste@, kib@, wblock@ (earlier versions)
Phabric: D523
Relnotes: yes
Sponsored by: The FreeBSD Foundation
Added:
stable/10/etc/auto_master
- copied unchanged from r270096, head/etc/auto_master
stable/10/etc/autofs/
- copied from r270096, head/etc/autofs/
stable/10/etc/rc.d/automount
- copied unchanged from r270096, head/etc/rc.d/automount
stable/10/etc/rc.d/automountd
- copied unchanged from r270096, head/etc/rc.d/automountd
stable/10/etc/rc.d/autounmountd
- copied unchanged from r270096, head/etc/rc.d/autounmountd
stable/10/share/man/man5/autofs.5
- copied unchanged from r270096, head/share/man/man5/autofs.5
stable/10/sys/fs/autofs/
- copied from r270096, head/sys/fs/autofs/
stable/10/sys/libkern/strndup.c
- copied unchanged from r270096, head/sys/libkern/strndup.c
stable/10/sys/modules/autofs/
- copied from r270096, head/sys/modules/autofs/
stable/10/usr.sbin/autofs/
- copied from r270096, head/usr.sbin/autofs/
Modified:
stable/10/etc/Makefile
stable/10/etc/defaults/rc.conf
stable/10/etc/mtree/BSD.root.dist
stable/10/etc/rc.d/Makefile
stable/10/sbin/mount/mntopts.h
stable/10/sbin/mount/mount.c
stable/10/share/man/man5/Makefile
stable/10/sys/conf/NOTES
stable/10/sys/conf/files
stable/10/sys/conf/options
stable/10/sys/kern/vfs_mount.c
stable/10/sys/modules/Makefile
stable/10/sys/sys/libkern.h
stable/10/sys/sys/mount.h
stable/10/usr.sbin/Makefile
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/etc/Makefile
==============================================================================
--- stable/10/etc/Makefile Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/etc/Makefile Sun Aug 31 21:18:23 2014 (r270892)
@@ -11,7 +11,8 @@ SUBDIR= sendmail
SUBDIR+=tests
.endif
-BIN1= crontab \
+BIN1= auto_master \
+ crontab \
devd.conf \
devfs.conf \
ddb.conf \
@@ -225,6 +226,7 @@ distribution:
echo "./etc/spwd.db type=file mode=0600 uname=root gname=wheel"; \
) | ${METALOG.add}
.endif
+ ${_+_}cd ${.CURDIR}/autofs; ${MAKE} install
.if ${MK_BLUETOOTH} != "no"
${_+_}cd ${.CURDIR}/bluetooth; ${MAKE} install
.endif
Copied: stable/10/etc/auto_master (from r270096, head/etc/auto_master)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/etc/auto_master Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/etc/auto_master)
@@ -0,0 +1,5 @@
+# $FreeBSD$
+#
+# Automounter master map, see auto_master(5) for details.
+#
+/net -hosts -nosuid
Modified: stable/10/etc/defaults/rc.conf
==============================================================================
--- stable/10/etc/defaults/rc.conf Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/etc/defaults/rc.conf Sun Aug 31 21:18:23 2014 (r270892)
@@ -311,6 +311,7 @@ amd_enable="NO" # Run amd service with
amd_program="/usr/sbin/amd" # path to amd, if you want a different one.
amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"
amd_map_program="NO" # Can be set to "ypcat -k amd.master"
+autofs_enable="NO" # Run automountd(8)
nfs_client_enable="NO" # This host is an NFS client (or NO).
nfs_access_cache="60" # Client cache timeout in seconds
nfs_server_enable="NO" # This host is an NFS server (or NO).
Modified: stable/10/etc/mtree/BSD.root.dist
==============================================================================
--- stable/10/etc/mtree/BSD.root.dist Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/etc/mtree/BSD.root.dist Sun Aug 31 21:18:23 2014 (r270892)
@@ -24,6 +24,8 @@
etc
X11
..
+ autofs
+ ..
bluetooth
..
defaults
Modified: stable/10/etc/rc.d/Makefile
==============================================================================
--- stable/10/etc/rc.d/Makefile Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/etc/rc.d/Makefile Sun Aug 31 21:18:23 2014 (r270892)
@@ -20,6 +20,9 @@ FILES= DAEMON \
atm3 \
auditd \
auditdistd \
+ automount \
+ automountd \
+ autounmountd \
bgfsck \
${_bluetooth} \
bootparams \
Copied: stable/10/etc/rc.d/automount (from r270096, head/etc/rc.d/automount)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/etc/rc.d/automount Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/etc/rc.d/automount)
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: automount
+# REQUIRE: nfsclient
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="automount"
+rcvar="autofs_enable"
+start_cmd="automount_start"
+stop_cmd="automount_stop"
+required_modules="autofs"
+
+automount_start()
+{
+
+ /usr/sbin/automount
+}
+
+automount_stop()
+{
+
+ /sbin/umount -At autofs
+}
+
+load_rc_config $name
+run_rc_command "$1"
Copied: stable/10/etc/rc.d/automountd (from r270096, head/etc/rc.d/automountd)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/etc/rc.d/automountd Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/etc/rc.d/automountd)
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: automountd
+# REQUIRE: automount
+# KEYWORD: nojail
+
+. /etc/rc.subr
+
+name="automountd"
+rcvar="autofs_enable"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/${name}"
+required_modules="autofs"
+
+load_rc_config $name
+run_rc_command "$1"
Copied: stable/10/etc/rc.d/autounmountd (from r270096, head/etc/rc.d/autounmountd)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/etc/rc.d/autounmountd Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/etc/rc.d/autounmountd)
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: autounmountd
+# REQUIRE: nfsclient
+# KEYWORD: nojail
+
+. /etc/rc.subr
+
+name="autounmountd"
+rcvar="autofs_enable"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/${name}"
+
+load_rc_config $name
+run_rc_command "$1"
Modified: stable/10/sbin/mount/mntopts.h
==============================================================================
--- stable/10/sbin/mount/mntopts.h Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sbin/mount/mntopts.h Sun Aug 31 21:18:23 2014 (r270892)
@@ -33,7 +33,7 @@
struct mntopt {
const char *m_option; /* option name */
int m_inverse; /* if a negative option, e.g. "atime" */
- int m_flag; /* bit to set, e.g. MNT_RDONLY */
+ long long m_flag; /* bit to set, e.g. MNT_RDONLY */
int m_altloc; /* 1 => set bit in altflags */
};
@@ -55,6 +55,7 @@ struct mntopt {
#define MOPT_MULTILABEL { "multilabel", 0, MNT_MULTILABEL, 0 }
#define MOPT_ACLS { "acls", 0, MNT_ACLS, 0 }
#define MOPT_NFS4ACLS { "nfsv4acls", 0, MNT_NFS4ACLS, 0 }
+#define MOPT_AUTOMOUNTED { "automounted",0, MNT_AUTOMOUNTED, 0 }
/* Control flags. */
#define MOPT_FORCE { "force", 0, MNT_FORCE, 0 }
@@ -89,7 +90,8 @@ struct mntopt {
MOPT_NOCLUSTERW, \
MOPT_MULTILABEL, \
MOPT_ACLS, \
- MOPT_NFS4ACLS
+ MOPT_NFS4ACLS, \
+ MOPT_AUTOMOUNTED
void getmntopts(const char *, const struct mntopt *, int *, int *);
void rmslashes(char *, char *);
Modified: stable/10/sbin/mount/mount.c
==============================================================================
--- stable/10/sbin/mount/mount.c Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sbin/mount/mount.c Sun Aug 31 21:18:23 2014 (r270892)
@@ -114,6 +114,7 @@ static struct opt {
{ MNT_ACLS, "acls" },
{ MNT_NFS4ACLS, "nfsv4acls" },
{ MNT_GJOURNAL, "gjournal" },
+ { MNT_AUTOMOUNTED, "automounted" },
{ 0, NULL }
};
Modified: stable/10/share/man/man5/Makefile
==============================================================================
--- stable/10/share/man/man5/Makefile Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/share/man/man5/Makefile Sun Aug 31 21:18:23 2014 (r270892)
@@ -7,6 +7,7 @@
MAN= acct.5 \
ar.5 \
a.out.5 \
+ autofs.5 \
bluetooth.device.conf.5 \
bluetooth.hosts.5 \
bluetooth.protocols.5 \
Copied: stable/10/share/man/man5/autofs.5 (from r270096, head/share/man/man5/autofs.5)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/share/man/man5/autofs.5 Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/share/man/man5/autofs.5)
@@ -0,0 +1,99 @@
+.\" Copyright (c) 2014 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" This software was developed by Edward Tomasz Napierala under sponsorship
+.\" from the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2014
+.Dt AUTOFS 5
+.Os
+.Sh NAME
+.Nm autofs
+.Nd "automounter filesystem"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options AUTOFS"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+autofs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver is the kernel component of the automounter infrastructure.
+Its job is to pass mount requests to the
+.Xr automountd 8
+daemon, and pause the processes trying to access the automounted filesystem
+until the mount is completed.
+It is mounted by the
+.Xr automount 8 .
+.Sh OPTIONS
+These options are available when
+mounting
+.Nm
+file systems:
+.Bl -tag -width indent
+.It Cm master_options
+Mount options for all filesystems specified in the map entry.
+.It Cm master_prefix
+Filesystem mountpoint prefix.
+.El
+.Sh EXAMPLES
+To unmount all mounted
+.Nm
+filesystems:
+.Pp
+.Dl "umount -At autofs"
+.Pp
+To mount
+.Nm
+filesystems specified in
+.Xr auto_master 5 :
+.Pp
+.Dl "automount"
+.Sh SEE ALSO
+.Xr auto_master 5 ,
+.Xr automount 8 ,
+.Xr automountd 8 ,
+.Xr autounmountd 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 10.2 .
+.Sh AUTHORS
+The
+.Nm
+was developed by
+.An Edward Tomasz Napierala Aq Mt trasz at FreeBSD.org
+under sponsorship from the FreeBSD Foundation.
Modified: stable/10/sys/conf/NOTES
==============================================================================
--- stable/10/sys/conf/NOTES Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/conf/NOTES Sun Aug 31 21:18:23 2014 (r270892)
@@ -1017,6 +1017,7 @@ options FFS #Fast filesystem
options NFSCLIENT #Network File System client
# The rest are optional:
+options AUTOFS #Automounter filesystem
options CD9660 #ISO 9660 filesystem
options FDESCFS #File descriptor filesystem
options FUSE #FUSE support module
Modified: stable/10/sys/conf/files
==============================================================================
--- stable/10/sys/conf/files Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/conf/files Sun Aug 31 21:18:23 2014 (r270892)
@@ -2589,6 +2589,9 @@ dev/xen/xenpci/xenpci.c optional xenpci
dev/xen/timer/timer.c optional xen | xenhvm
dev/xl/if_xl.c optional xl pci
dev/xl/xlphy.c optional xl pci
+fs/autofs/autofs.c optional autofs
+fs/autofs/autofs_vfsops.c optional autofs
+fs/autofs/autofs_vnops.c optional autofs
fs/deadfs/dead_vnops.c standard
fs/devfs/devfs_devs.c standard
fs/devfs/devfs_dir.c standard
@@ -3125,6 +3128,7 @@ libkern/strcmp.c standard
libkern/strcpy.c standard
libkern/strcspn.c standard
libkern/strdup.c standard
+libkern/strndup.c standard
libkern/strlcat.c standard
libkern/strlcpy.c standard
libkern/strlen.c standard
Modified: stable/10/sys/conf/options
==============================================================================
--- stable/10/sys/conf/options Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/conf/options Sun Aug 31 21:18:23 2014 (r270892)
@@ -218,6 +218,7 @@ INCLUDE_CONFIG_FILE opt_config.h
# time, since the corresponding lkms cannot work if there are any static
# dependencies. Unusability is enforced by hiding the defines for the
# options in a never-included header.
+AUTOFS opt_dontuse.h
CD9660 opt_dontuse.h
EXT2FS opt_dontuse.h
FDESCFS opt_dontuse.h
Modified: stable/10/sys/kern/vfs_mount.c
==============================================================================
--- stable/10/sys/kern/vfs_mount.c Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/kern/vfs_mount.c Sun Aug 31 21:18:23 2014 (r270892)
@@ -649,6 +649,10 @@ vfs_donmount(struct thread *td, uint64_t
fsflags |= MNT_SYNCHRONOUS;
else if (strcmp(opt->name, "union") == 0)
fsflags |= MNT_UNION;
+ else if (strcmp(opt->name, "automounted") == 0) {
+ fsflags |= MNT_AUTOMOUNTED;
+ vfs_freeopt(optlist, opt);
+ }
}
/*
Copied: stable/10/sys/libkern/strndup.c (from r270096, head/sys/libkern/strndup.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/sys/libkern/strndup.c Sun Aug 31 21:18:23 2014 (r270892, copy of r270096, head/sys/libkern/strndup.c)
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2003 Networks Associates Technology, Inc.
+ * All rights reserved.
+ *
+ * This software was developed for the FreeBSD Project by Network
+ * Associates Laboratories, the Security Research Division of Network
+ * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+ * ("CBOSS"), as part of the DARPA CHATS research program.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/libkern.h>
+#include <sys/malloc.h>
+
+char *
+strndup(const char *string, size_t maxlen, struct malloc_type *type)
+{
+ size_t len;
+ char *copy;
+
+ len = strnlen(string, maxlen) + 1;
+ copy = malloc(len, type, M_WAITOK);
+ bcopy(string, copy, len);
+ copy[len - 1] = '\0';
+ return (copy);
+}
Modified: stable/10/sys/modules/Makefile
==============================================================================
--- stable/10/sys/modules/Makefile Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/modules/Makefile Sun Aug 31 21:18:23 2014 (r270892)
@@ -44,6 +44,7 @@ SUBDIR= \
ata \
ath \
ath_pci \
+ autofs \
${_auxio} \
${_bce} \
bfe \
Modified: stable/10/sys/sys/libkern.h
==============================================================================
--- stable/10/sys/sys/libkern.h Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/sys/libkern.h Sun Aug 31 21:18:23 2014 (r270892)
@@ -117,6 +117,7 @@ int strcmp(const char *, const char *);
char *strcpy(char * __restrict, const char * __restrict);
size_t strcspn(const char * __restrict, const char * __restrict) __pure;
char *strdup(const char *__restrict, struct malloc_type *);
+char *strndup(const char *__restrict, size_t, struct malloc_type *);
size_t strlcat(char *, const char *, size_t);
size_t strlcpy(char *, const char *, size_t);
size_t strlen(const char *);
Modified: stable/10/sys/sys/mount.h
==============================================================================
--- stable/10/sys/sys/mount.h Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/sys/sys/mount.h Sun Aug 31 21:18:23 2014 (r270892)
@@ -260,6 +260,7 @@ void __mnt_vnode_markerfree_act
#define MNT_NOCLUSTERR 0x0000000040000000ULL /* disable cluster read */
#define MNT_NOCLUSTERW 0x0000000080000000ULL /* disable cluster write */
#define MNT_SUJ 0x0000000100000000ULL /* using journaled soft updates */
+#define MNT_AUTOMOUNTED 0x0000000200000000ULL /* mounted by automountd(8) */
/*
* NFS export related mount flags.
@@ -296,7 +297,7 @@ void __mnt_vnode_markerfree_act
MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \
MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \
MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \
- MNT_NFS4ACLS)
+ MNT_NFS4ACLS | MNT_AUTOMOUNTED)
/* Mask of flags that can be updated. */
#define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \
@@ -304,7 +305,8 @@ void __mnt_vnode_markerfree_act
MNT_NOATIME | \
MNT_NOSYMFOLLOW | MNT_IGNORE | \
MNT_NOCLUSTERR | MNT_NOCLUSTERW | MNT_SUIDDIR | \
- MNT_ACLS | MNT_USER | MNT_NFS4ACLS)
+ MNT_ACLS | MNT_USER | MNT_NFS4ACLS | \
+ MNT_AUTOMOUNTED)
/*
* External filesystem command modifier flags.
Modified: stable/10/usr.sbin/Makefile
==============================================================================
--- stable/10/usr.sbin/Makefile Sun Aug 31 20:47:10 2014 (r270891)
+++ stable/10/usr.sbin/Makefile Sun Aug 31 21:18:23 2014 (r270892)
@@ -5,6 +5,7 @@
SUBDIR= adduser \
arp \
+ autofs \
binmiscctl \
bootparamd \
bsdconfig \
More information about the svn-src-stable-10
mailing list