More documentation.
diff --git a/man/zip_source_begin_write.mdoc b/man/zip_source_begin_write.mdoc
index fe5393e..057194c 100644
--- a/man/zip_source_begin_write.mdoc
+++ b/man/zip_source_begin_write.mdoc
@@ -49,8 +49,10 @@
 for writing.
 Usually this involves creating temporary files or allocating buffers.
 .Sh RETURN VALUES
-.Fn zip_source_begin_write
-returns 0 on success and \-1 on error.
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_close.mdoc b/man/zip_source_close.mdoc
new file mode 100644
index 0000000..5890b0b
--- /dev/null
+++ b/man/zip_source_close.mdoc
@@ -0,0 +1,64 @@
+.\" zip_source_close.mdoc -- close zip source (open for reading)
+.\" Copyright (C) 2014 Dieter Baron and Thomas Klausner
+.\"
+.\" This file is part of libzip, a library to manipulate ZIP archives.
+.\" The authors can be contacted at <libzip@nih.at>
+.\"
+.\" 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.
+.\" 3. The names of the authors may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 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.
+.\"
+.Dd November 18, 2014
+.Dt ZIP_SOURCE_CLOSE 3
+.Os
+.Sh NAME
+.Nm zip_source_close
+.Nd open zip_source (which was open for reading)
+.Sh LIBRARY
+libzip (-lzip)
+.Sh SYNOPSIS
+.In zip.h
+.Ft int
+.Fn zip_source_close "zip_source_t *zs"
+.Sh DESCRIPTION
+The function
+.Fn zip_source_close
+closes the zip_source
+.Fa zs
+which was open for reading.
+.Sh RETURN VALUES
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
+.Sh SEE ALSO
+.Xr libzip 3 ,
+.Xr zip_source 3 ,
+.Xr zip_source_free 3 ,
+.Xr zip_source_open 3
+.Sh AUTHORS
+.An -nosplit
+.An Dieter Baron Aq Mt dillo@nih.at
+and
+.An Thomas Klausner Aq Mt tk@giga.or.at
diff --git a/man/zip_source_commit_write.mdoc b/man/zip_source_commit_write.mdoc
index 42e7aa8..3712ebc 100644
--- a/man/zip_source_commit_write.mdoc
+++ b/man/zip_source_commit_write.mdoc
@@ -49,8 +49,10 @@
 Usually this involves flushing buffers, replacing original files with
 temporary files or cleaning up buffers.
 .Sh RETURN VALUES
-.Fn zip_source_commit_write
-returns 0 on success and \-1 on error.
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_keep.mdoc b/man/zip_source_keep.mdoc
index e5912f7..4518706 100644
--- a/man/zip_source_keep.mdoc
+++ b/man/zip_source_keep.mdoc
@@ -45,7 +45,7 @@
 The function
 .Fn zip_source_keep
 increments the reference count of
-.Ar source
+.Ar source .
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3
diff --git a/man/zip_source_open.mdoc b/man/zip_source_open.mdoc
new file mode 100644
index 0000000..fe70487
--- /dev/null
+++ b/man/zip_source_open.mdoc
@@ -0,0 +1,67 @@
+.\" zip_source_open.mdoc -- open zip source for reading
+.\" Copyright (C) 2014 Dieter Baron and Thomas Klausner
+.\"
+.\" This file is part of libzip, a library to manipulate ZIP archives.
+.\" The authors can be contacted at <libzip@nih.at>
+.\"
+.\" 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.
+.\" 3. The names of the authors may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 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.
+.\"
+.Dd November 18, 2014
+.Dt ZIP_SOURCE_OPEN 3
+.Os
+.Sh NAME
+.Nm zip_source_open
+.Nd open zip_source for reading
+.Sh LIBRARY
+libzip (-lzip)
+.Sh SYNOPSIS
+.In zip.h
+.Ft int
+.Fn zip_source_open "zip_source_t *zs"
+.Sh DESCRIPTION
+The function
+.Fn zip_source_open
+opens the zip_source
+.Fa zs
+for reading.
+.Sh RETURN VALUES
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
+.Sh SEE ALSO
+.Xr libzip 3 ,
+.Xr zip_source 3 ,
+.Xr zip_source_begin_write 3 ,
+.Xr zip_source_close 3 ,
+.Xr zip_source_read 3 ,
+.Xr zip_source_seek 3 ,
+.Xr zip_source_tell 3
+.Sh AUTHORS
+.An -nosplit
+.An Dieter Baron Aq Mt dillo@nih.at
+and
+.An Thomas Klausner Aq Mt tk@giga.or.at
diff --git a/man/zip_source_read.mdoc b/man/zip_source_read.mdoc
index 933874c..50cf174 100644
--- a/man/zip_source_read.mdoc
+++ b/man/zip_source_read.mdoc
@@ -51,8 +51,10 @@
 at the current read offset and writes them to the buffer
 .Ar data .
 .Sh RETURN VALUES
-.Fn zip_source_read
-returns the number of bytes read on success or \-1 on error.
+Upon successful completion the number of bytes read is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_rollback_write.mdoc b/man/zip_source_rollback_write.mdoc
index a339dcc..12e0754 100644
--- a/man/zip_source_rollback_write.mdoc
+++ b/man/zip_source_rollback_write.mdoc
@@ -48,8 +48,10 @@
 .Fa zs .
 Usually this removes temporary files or freeing buffers.
 .Sh RETURN VALUES
-.Fn zip_source_rollback_write
-returns 0 on success and \-1 on error.
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_seek.mdoc b/man/zip_source_seek.mdoc
index 56d12cc..9caf0aa 100644
--- a/man/zip_source_seek.mdoc
+++ b/man/zip_source_seek.mdoc
@@ -65,8 +65,10 @@
 end of file
 .El
 .Sh RETURN VALUES
-.Fn zip_source_seek
-returns 0 on success and \-1 on error.
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_seek_write.mdoc b/man/zip_source_seek_write.mdoc
index 65793c4..df9e0f8 100644
--- a/man/zip_source_seek_write.mdoc
+++ b/man/zip_source_seek_write.mdoc
@@ -65,8 +65,10 @@
 end of file
 .El
 .Sh RETURN VALUES
-.Fn zip_source_seek_write
-returns 0 on success and \-1 on error.
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_stat.mdoc b/man/zip_source_stat.mdoc
new file mode 100644
index 0000000..08143b8
--- /dev/null
+++ b/man/zip_source_stat.mdoc
@@ -0,0 +1,120 @@
+.\" zip_source_stat.mdoc -- get information about zip source
+.\" Copyright (C) 2014 Dieter Baron and Thomas Klausner
+.\"
+.\" This file is part of libzip, a library to manipulate ZIP archives.
+.\" The authors can be contacted at <libzip@nih.at>
+.\"
+.\" 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.
+.\" 3. The names of the authors may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 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.
+.\"
+.Dd November 18, 2014
+.Dt ZIP_SOURCE_STAT 3
+.Os
+.Sh NAME
+.Nm zip_source_stat
+.Nd get information about zip_source
+.Sh LIBRARY
+libzip (-lzip)
+.Sh SYNOPSIS
+.In zip.h
+.Ft int
+.Fn zip_source_stat "zip_source_t *zs" "zip_stat_t *sb"
+.Sh DESCRIPTION
+The
+.Fn zip_source_stat
+function obtains information about the zip source
+.Ar zs
+.Pp
+The
+.Ar sb
+argument is a pointer to a
+.Ft struct zip_source_stat
+(shown below), into which information about the zip source is placed.
+.Bd -literal
+struct zip_source_stat {
+    zip_uint64_t valid;                 /* which fields have valid values */
+    const char *name;                   /* name of the file */
+    zip_uint64_t index;                 /* index within archive */
+    zip_uint64_t size;                  /* size of file (uncompressed) */
+    zip_uint64_t comp_size;             /* size of file (compressed) */
+    time_t mtime;                       /* modification time */
+    zip_uint32_t crc;                   /* crc of file data */
+    zip_uint16_t comp_method;           /* compression method used */
+    zip_uint16_t encryption_method;     /* encryption method used */
+    zip_uint32_t flags;                 /* reserved for future use */
+};
+.Ed
+The structure pointed to by
+.Ar sb
+must be allocated before calling
+.Fn zip_source_stat .
+.Pp
+The
+.Ar valid
+field of the structure specifies which other fields are valid.
+Check if the flag defined by the following defines are in
+.Ar valid
+before accessing the fields:
+.Bl -tag -width ZIP_SOURCE_STAT_ENCRYPTION_METHODXX -compact -offset indent
+.It Dv ZIP_SOURCE_STAT_NAME
+.Ar name
+.It Dv ZIP_SOURCE_STAT_INDEX
+.Ar index
+.It Dv ZIP_SOURCE_STAT_SIZE
+.Ar size
+.It Dv ZIP_SOURCE_STAT_COMP_SIZE
+.Ar comp_size
+.It Dv ZIP_SOURCE_STAT_MTIME
+.Ar mtime
+.It Dv ZIP_SOURCE_STAT_CRC
+.Ar crc
+.It Dv ZIP_SOURCE_STAT_COMP_METHOD
+.Ar comp_method
+.It Dv ZIP_SOURCE_STAT_ENCRYPTION_METHOD
+.Ar encryption_method
+.It Dv ZIP_SOURCE_STAT_FLAGS
+.Ar flags
+.El
+.Pp
+.Em NOTE :
+Some fields may only be filled out after all data has been read from
+the source, for example the
+.Ar crc
+or
+.Ar size
+fields.
+.Sh RETURN VALUES
+Upon successful completion 0 is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
+.Sh SEE ALSO
+.Xr libzip 3 ,
+.Xr zip_source 3
+.Sh AUTHORS
+.An -nosplit
+.An Dieter Baron Aq Mt dillo@nih.at
+and
+.An Thomas Klausner Aq Mt tk@giga.or.at
diff --git a/man/zip_source_tell.mdoc b/man/zip_source_tell.mdoc
index 55791ea..114e355 100644
--- a/man/zip_source_tell.mdoc
+++ b/man/zip_source_tell.mdoc
@@ -55,8 +55,10 @@
 .Dv SEEK_SET
 to return to the same location in the file.
 .Sh RETURN VALUES
-.Fn zip_source_tell
-returns the current write offset on success or \-1 on error.
+Upon successful completion the current read offset is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_tell_write.mdoc b/man/zip_source_tell_write.mdoc
index 4ceb8af..433e307 100644
--- a/man/zip_source_tell_write.mdoc
+++ b/man/zip_source_tell_write.mdoc
@@ -55,8 +55,10 @@
 .Dv SEEK_SET
 to return to the same location in the file.
 .Sh RETURN VALUES
-.Fn zip_source_tell_write
-returns the current write offset on success and \-1 on error.
+Upon successful completion the current write offset is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,
diff --git a/man/zip_source_write.mdoc b/man/zip_source_write.mdoc
index f3de078..c9a1a71 100644
--- a/man/zip_source_write.mdoc
+++ b/man/zip_source_write.mdoc
@@ -58,8 +58,10 @@
 .Xr zip_source_begin_write 3
 first.
 .Sh RETURN VALUES
-.Fn zip_source_write
-returns the number of written bytes on success and \-1 on error.
+Upon successful completion the number of bytes written is returned.
+Otherwise, \-1 is returned and the error information in
+.Ar zs
+is set to indicate the error.
 .Sh SEE ALSO
 .Xr libzip 3 ,
 .Xr zip_source 3 ,