.\" Process this file with
.\" groff -man -Tascii <file>
.\"
.TH lib@PACKAGE@ 3 "2008-04-18" "version @PACKAGE_VERSION@" Subversion
.SH NAME
lib@PACKAGE@ \- functions to execute svnserve in tunnel mode with the
tunnel user set to the current user
.SH SYNOPSIS
.B #include <@PACKAGE@/@PACKAGE@.h>

.BI "int @PACKAGE@_exec_svnserve(const char* " svnserve_path ,
.br
.BI "                          const char* " svn_root ,
.br
.BI "                          const char* " tunnel_user ,
.br
.BI "                          const char* const* " argv ,
.br
.BI "                          const char* const* " envp );

.BI "int @PACKAGE@_get_tunnel_user_name(char* " buf ,
.br
.BI "                                 size_t " bufsize ");"

.BI "int @PACKAGE@_fso_is_changeable(const char* " path ");"
.SH DESCRIPTION
The
.B @PACKAGE@.h
header simply includes the following headers:

.B #include <@PACKAGE@/exec_svnserve.h>
.br
.B #include <@PACKAGE@/get_tunnel_user_name.h>
.br
.B #include <@PACKAGE@/fso_is_changeable.h>

See
.BR @PACKAGE@_exec_svnserve "(3), " @PACKAGE@_get_tunnel_user_name "(3), and " @PACKAGE@_fso_is_changeable "(3)"
for additional details.
.SH AUTHOR
Richard Hansen <svnstsw@ir.bbn.com>
.SH COPYING
Copyright (c) 2008 BBN Technologies Corp.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
.RS 0
.IP 1. 4
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.IP 2. 4
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.
.IP 3. 4
Neither the name of BBN Technologies nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
.RE

THIS SOFTWARE IS PROVIDED BY BBN TECHNOLOGIES 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 BBN TECHNOLOGIES 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.

