<?xml version="1.0" encoding="utf-8"?>

<!--

Copyright ©	2006	Joey Hess

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA

-->

<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"
[]>

<refentry>

	<refentryinfo>
		<author>
			<firstname>Joey</firstname>
			<surname>Hess</surname>
		</author>
		<date>2006-02-19</date>
	</refentryinfo>

	<refmeta>
		<refentrytitle>sponge</refentrytitle>
		<manvolnum>1</manvolnum>
		<refmiscinfo class="manual">moreutils</refmiscinfo>
		<refmiscinfo class="source">moreutils</refmiscinfo>
	</refmeta>

	<refnamediv>
		<refname>sponge</refname>
		<refpurpose>soak up standard input and write to a file</refpurpose>
	</refnamediv>

	<refsynopsisdiv>
		<cmdsynopsis>
			<command>sed '...' file | grep '...' | sponge [-a] file</command>
		</cmdsynopsis>
	</refsynopsisdiv>

	<refsect1>
		<title>DESCRIPTION</title>
		
		<para><command>sponge</command> reads standard input and
			writes it out to the specified file. Unlike a shell
			redirect, <command>sponge</command> soaks up all its input before
			writing the output file. This allows constructing
			pipelines that read from and write to
			the same file.
		</para>
		<para>
			<command>sponge</command> preserves the
			permissions of the output file
			if it already exists.
		</para>
		<para>
			When possible, <command>sponge</command> creates or updates the
			output file atomically by renaming a temp
			file into place. (This cannot be done
			if TMPDIR is not in the same filesystem.)
		</para>
		<para>
			If the output file is a special file or symlink,
			the data will be written to it, non-atomically.
		</para>
		<para>
			If no file is specified, <command>sponge</command> outputs to
			stdout.
		</para>
	</refsect1>

	<refsect1>
		<title>OPTIONS</title>

		<variablelist>

		<varlistentry>
			<term><option>-a</option></term>
			<listitem>
				<para>
					Replace the file
					with a new file that contains
					the file's original content,
					with the standard input
					appended to it. This is done
					atomically when possible.
				</para>
			</listitem>
		</varlistentry>

		</variablelist>
	</refsect1>
	
	<refsect1>
		<title>AUTHOR</title>
		<para>
			Colin Watson and Tollef Fog Heen
		</para>
	</refsect1>
</refentry>
