regen
diff --git a/man/zip_add.man b/man/zip_add.man
index cac6a39..ec56b74 100644
--- a/man/zip_add.man
+++ b/man/zip_add.man
@@ -13,13 +13,13 @@
 \fIzip_int64_t\fR
 .PD 0
 .HP 4n
-\fBzip_add\fR(\fIstruct\ zip\ *archive\fR, \fIconst\ char\ *name\fR, \fIstruct\ zip_source\ *source\fR);
+\fBzip_add\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *name\fR, \fIzip_source_t\ *source\fR);
 .PD
 .PP
 \fIint\fR
 .PD 0
 .HP 4n
-\fBzip_replace\fR(\fIstruct\ zip\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIstruct\ zip_source\ *source\fR);
+\fBzip_replace\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_source_t\ *source\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_add_dir.man b/man/zip_add_dir.man
index 283cb83..9990208 100644
--- a/man/zip_add_dir.man
+++ b/man/zip_add_dir.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIzip_int64_t\fR
-.br
-\fBzip_add_dir\fR(\fIstruct zip *archive\fR,\ \fIconst char *name\fR);
+.PD 0
+.HP 4n
+\fBzip_add_dir\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *name\fR);
+.PD
 .SH "DESCRIPTION"
 The function
 \fBzip_add_dir\fR()
diff --git a/man/zip_close.man b/man/zip_close.man
index 67f07b3..d553754 100644
--- a/man/zip_close.man
+++ b/man/zip_close.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_close\fR(\fIstruct zip *archive\fR);
+.PD 0
+.HP 4n
+\fBzip_close\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_close\fR()
diff --git a/man/zip_delete.man b/man/zip_delete.man
index f894027..a4bc2cf 100644
--- a/man/zip_delete.man
+++ b/man/zip_delete.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_delete\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR);
+.PD 0
+.HP 4n
+\fBzip_delete\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR);
+.PD
 .SH "DESCRIPTION"
 The file at position
 \fIindex\fR
diff --git a/man/zip_dir_add.man b/man/zip_dir_add.man
index ae3cdce..bd255b8 100644
--- a/man/zip_dir_add.man
+++ b/man/zip_dir_add.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIzip_int64_t\fR
-.br
-\fBzip_dir_add\fR(\fIstruct zip *archive\fR,\ \fIconst char *name\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_dir_add\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *name\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The function
 \fBzip_dir_add\fR()
diff --git a/man/zip_discard.man b/man/zip_discard.man
index cf8c0ad..3a3fae1 100644
--- a/man/zip_discard.man
+++ b/man/zip_discard.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIvoid\fR
-.br
-\fBzip_discard\fR(\fIstruct zip *archive\fR);
+.PD 0
+.HP 4n
+\fBzip_discard\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_discard\fR()
diff --git a/man/zip_error_clear.man b/man/zip_error_clear.man
index 034651f..4d4df04 100644
--- a/man/zip_error_clear.man
+++ b/man/zip_error_clear.man
@@ -11,12 +11,16 @@
 \fB#include <zip.h>\fR
 .sp
 \fIvoid\fR
-.br
-\fBzip_error_clear\fR(\fIstruct zip *archive\fR);
-.sp
+.PD 0
+.HP 4n
+\fBzip_error_clear\fR(\fIzip_t\ *archive\fR);
+.PD
+.PP
 \fIvoid\fR
-.br
-\fBzip_file_error_clear\fR(\fIstruct zip_file *file\fR);
+.PD 0
+.HP 4n
+\fBzip_file_error_clear\fR(\fIzip_file_t\ *file\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_error_clear\fR()
diff --git a/man/zip_error_get.man b/man/zip_error_get.man
index e71084b..6944269 100644
--- a/man/zip_error_get.man
+++ b/man/zip_error_get.man
@@ -11,12 +11,16 @@
 \fB#include <zip.h>\fR
 .sp
 \fIvoid\fR
-.br
-\fBzip_error_get\fR(\fIstruct zip *archive\fR,\ \fIint *zep\fR,\ \fIint *sep\fR);
-.sp
+.PD 0
+.HP 4n
+\fBzip_error_get\fR(\fIzip_t\ *archive\fR, \fIint\ *zep\fR, \fIint\ *sep\fR);
+.PD
+.PP
 \fIvoid\fR
-.br
-\fBzip_file_error_get\fR(\fIstruct zip_file *file\fR,\ \fIint *zep\fR,\ \fIint *sep\fR);
+.PD 0
+.HP 4n
+\fBzip_file_error_get\fR(\fIzip_file_t\ *file\fR, \fIint\ *zep\fR, \fIint\ *sep\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_error_get\fR()
diff --git a/man/zip_fclose.man b/man/zip_fclose.man
index cec83a2..37e239e 100644
--- a/man/zip_fclose.man
+++ b/man/zip_fclose.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_fclose\fR(\fIstruct zip_file *file\fR);
+.PD 0
+.HP 4n
+\fBzip_fclose\fR(\fIzip_file_t\ *file\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_fclose\fR()
diff --git a/man/zip_fdopen.man b/man/zip_fdopen.man
index ed087ed..6a4661e 100644
--- a/man/zip_fdopen.man
+++ b/man/zip_fdopen.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct\ zip\ *\fR
-.br
-\fBzip_fdopen\fR(\fIint fd\fR,\ \fIint flags\fR,\ \fIint *errorp\fR);
+\fIzip_t *\fR
+.PD 0
+.HP 4n
+\fBzip_fdopen\fR(\fIint\ fd\fR, \fIint\ flags\fR, \fIint\ *errorp\fR);
+.PD
 .SH "DESCRIPTION"
 The zip archive specified by the open file descriptor
 \fIfd\fR
diff --git a/man/zip_file_add.man b/man/zip_file_add.man
index e2107bc..66da783 100644
--- a/man/zip_file_add.man
+++ b/man/zip_file_add.man
@@ -13,13 +13,13 @@
 \fIzip_int64_t\fR
 .PD 0
 .HP 4n
-\fBzip_file_add\fR(\fIstruct\ zip\ *archive\fR, \fIconst\ char\ *name\fR, \fIstruct\ zip_source\ *source\fR, \fIzip_flags_t\ flags\fR);
+\fBzip_file_add\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *name\fR, \fIzip_source_t\ *source\fR, \fIzip_flags_t\ flags\fR);
 .PD
 .PP
 \fIint\fR
 .PD 0
 .HP 4n
-\fBzip_file_replace\fR(\fIstruct\ zip\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIstruct\ zip_source\ *source\fR, \fIzip_flags_t\ flags\fR);
+\fBzip_file_replace\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_source_t\ *source\fR, \fIzip_flags_t\ flags\fR);
 .PD
 .SH "DESCRIPTION"
 The function
@@ -83,7 +83,7 @@
 .SH "EXAMPLES"
 .nf
 .RS 6n
-struct zip_source *s;
+zip_source_t *s;
 const char buf="teststring";
 
 if ((s=zip_source_buffer(archive, buffer, sizeof(buf), 0)) == NULL ||
diff --git a/man/zip_file_extra_field_delete.man b/man/zip_file_extra_field_delete.man
index 3ba36da..7179434 100644
--- a/man/zip_file_extra_field_delete.man
+++ b/man/zip_file_extra_field_delete.man
@@ -11,12 +11,16 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_file_extra_field_delete\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_index\fR,\ \fIzip_flags_t flags\fR);
-.sp
+.PD 0
+.HP 4n
+\fBzip_file_extra_field_delete\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_index\fR, \fIzip_flags_t\ flags\fR);
+.PD
+.PP
 \fIint\fR
-.br
-\fBzip_file_extra_field_delete_by_id\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_id\fR,\ \fIzip_uint16_t extra_field_index\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_file_extra_field_delete_by_id\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_id\fR, \fIzip_uint16_t\ extra_field_index\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_extra_field_delete\fR()
diff --git a/man/zip_file_extra_field_get.man b/man/zip_file_extra_field_get.man
index ab89b4d..5c2c883 100644
--- a/man/zip_file_extra_field_get.man
+++ b/man/zip_file_extra_field_get.man
@@ -1,4 +1,4 @@
-.TH "ZIP_FILE_EXTRA_FIELD_GET" "3" "February 20, 2013" "NiH" "Library Functions Manual"
+.TH "ZIP_FILE_EXTRA_FIELD_GET" "3" "October 8, 2014" "NiH" "Library Functions Manual"
 .nh
 .if n .ad l
 .SH "NAME"
@@ -10,13 +10,17 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ zip_uint8_t\ *\fR
-.br
-\fBzip_file_extra_field_get\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_index\fR,\ \fIzip_uint16_t *idp\fR,\ \fIzip_uint16_t *lenp\fR,\ \fIzip_flags_t flags\fR);
-.sp
-\fIconst\ zip_uint8_t\ *\fR
-.br
-\fBzip_file_extra_field_get_by_id\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_id\fR,\ \fIzip_uint16_t extra_field_index\fR,\ \fIzip_uint16_t *lenp\fR,\ \fIzip_flags_t flags\fR);
+\fIconst zip_uint8_t *\fR
+.PD 0
+.HP 4n
+\fBzip_file_extra_field_get\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_index\fR, \fIzip_uint16_t\ *idp\fR, \fIzip_uint16_t\ *lenp\fR, \fIzip_flags_t\ flags\fR);
+.PD
+.PP
+\fIconst zip_uint8_t *\fR
+.PD 0
+.HP 4n
+\fBzip_file_extra_field_get_by_id\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_id\fR, \fIzip_uint16_t\ extra_field_index\fR, \fIzip_uint16_t\ *lenp\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_extra_field_get\fR()
@@ -116,3 +120,11 @@
 Dieter Baron <\fIdillo@nih.at\fR>
 and
 Thomas Klausner <\fItk@giga.or.at\fR>
+.SH "CAVEATS"
+Please note that the extra field IDs 0x0001 (ZIP64 extension),
+0x6375 (Infozip UTF-8 comment), and
+0x7075 (Infozip UTF-8 file name) can not be read using
+\fBzip_file_extra_field_get\fR()
+since they are used by
+libzip(3)
+internally.
diff --git a/man/zip_file_extra_field_set.man b/man/zip_file_extra_field_set.man
index afd6899..0926ec0 100644
--- a/man/zip_file_extra_field_set.man
+++ b/man/zip_file_extra_field_set.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_file_extra_field_set\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_id\fR,\ \fIzip_uint16_t extra_field_index\fR,\ \fIconst zip_uint8_t *extra_field_data\fR,\ \fIzip_uint16_t len\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_file_extra_field_set\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_id\fR, \fIzip_uint16_t\ extra_field_index\fR, \fIconst\ zip_uint8_t\ *extra_field_data\fR, \fIzip_uint16_t\ len\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_extra_field_set\fR()
diff --git a/man/zip_file_extra_fields_count.man b/man/zip_file_extra_fields_count.man
index 26397ed..17d3f7e 100644
--- a/man/zip_file_extra_fields_count.man
+++ b/man/zip_file_extra_fields_count.man
@@ -11,12 +11,16 @@
 \fB#include <zip.h>\fR
 .sp
 \fIzip_int16_t\fR
-.br
-\fBzip_file_extra_fields_count\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR);
-.sp
+.PD 0
+.HP 4n
+\fBzip_file_extra_fields_count\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR);
+.PD
+.PP
 \fIzip_int16_t\fR
-.br
-\fBzip_file_extra_fields_count_by_id\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint16_t extra_field_id\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_file_extra_fields_count_by_id\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint16_t\ extra_field_id\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_extra_fields_count\fR()
diff --git a/man/zip_file_get_comment.man b/man/zip_file_get_comment.man
index 4f7bc8a..7348316 100644
--- a/man/zip_file_get_comment.man
+++ b/man/zip_file_get_comment.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_file_get_comment\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_uint32_t *lenp\fR,\ \fIzip_flags_t flags\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_file_get_comment\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_uint32_t\ *lenp\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_get_comment\fR()
diff --git a/man/zip_file_get_external_attributes.man b/man/zip_file_get_external_attributes.man
index 2013f21..7230d33 100644
--- a/man/zip_file_get_external_attributes.man
+++ b/man/zip_file_get_external_attributes.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_file_get_external_attributes\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR,\ \fIzip_uint8_t *opsys\fR,\ \fIzip_uint32_t *attributes\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_file_get_external_attributes\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR, \fIzip_uint8_t\ *opsys\fR, \fIzip_uint32_t\ *attributes\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_get_external_attributes\fR()
diff --git a/man/zip_file_rename.man b/man/zip_file_rename.man
index 1d2de69..ab2fa41 100644
--- a/man/zip_file_rename.man
+++ b/man/zip_file_rename.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_file_rename\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIconst char *name\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_file_rename\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIconst\ char\ *name\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The file at position
 \fIindex\fR
diff --git a/man/zip_file_set_comment.man b/man/zip_file_set_comment.man
index ce9188c..cc1f985 100644
--- a/man/zip_file_set_comment.man
+++ b/man/zip_file_set_comment.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_file_comment\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIconst char *comment\fR,\ \fIzip_uint16_t len\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_set_file_comment\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIconst\ char\ *comment\fR, \fIzip_uint16_t\ len\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_set_comment\fR()
diff --git a/man/zip_file_set_external_attributes.man b/man/zip_file_set_external_attributes.man
index ea458d0..859295a 100644
--- a/man/zip_file_set_external_attributes.man
+++ b/man/zip_file_set_external_attributes.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_file_set_external_attributes\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR,\ \fIzip_uint8_t opsys\fR,\ \fIzip_uint32_t attributes\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_file_set_external_attributes\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR, \fIzip_uint8_t\ opsys\fR, \fIzip_uint32_t\ attributes\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_file_set_external_attributes\fR()
diff --git a/man/zip_file_set_mtime.man b/man/zip_file_set_mtime.man
index b821bf0..a348982 100644
--- a/man/zip_file_set_mtime.man
+++ b/man/zip_file_set_mtime.man
@@ -12,7 +12,7 @@
 \fIint\fR
 .PD 0
 .HP 4n
-\fBzip_set_file_mtime\fR(\fIstruct\ zip\ *archive\fR, \fIzip_uint64_t\ index\fR, \fItime_t\ mtime\fR, \fIzip_flags_t\ flags\fR);
+\fBzip_set_file_mtime\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fItime_t\ mtime\fR, \fIzip_flags_t\ flags\fR);
 .PD
 .SH "DESCRIPTION"
 The
diff --git a/man/zip_file_strerror.man b/man/zip_file_strerror.man
index ea8a484..ae5ffde 100644
--- a/man/zip_file_strerror.man
+++ b/man/zip_file_strerror.man
@@ -10,13 +10,17 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_file_strerror\fR(\fIstruct zip_file *file\fR);
-.sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_strerror\fR(\fIstruct zip *archive\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_file_strerror\fR(\fIzip_file_t\ *file\fR);
+.PD
+.PP
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_strerror\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_strerror\fR()
diff --git a/man/zip_fopen.man b/man/zip_fopen.man
index f5580ff..8c0db87 100644
--- a/man/zip_fopen.man
+++ b/man/zip_fopen.man
@@ -10,13 +10,17 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct\ zip_file\ *\fR
-.br
-\fBzip_fopen\fR(\fIstruct zip *archive\fR,\ \fIconst char *fname\fR,\ \fIzip_flags_t flags\fR);
-.sp
-\fIstruct\ zip_file\ *\fR
-.br
-\fBzip_fopen_index\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR);
+\fIzip_file_t *\fR
+.PD 0
+.HP 4n
+\fBzip_fopen\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_flags_t\ flags\fR);
+.PD
+.PP
+\fIzip_file_t *\fR
+.PD 0
+.HP 4n
+\fBzip_fopen_index\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_fopen\fR()
diff --git a/man/zip_fopen_encrypted.man b/man/zip_fopen_encrypted.man
index 639e517..1acc6db 100644
--- a/man/zip_fopen_encrypted.man
+++ b/man/zip_fopen_encrypted.man
@@ -10,13 +10,17 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct\ zip_file\ *\fR
-.br
-\fBzip_fopen_encrypted\fR(\fIstruct zip *archive\fR,\ \fIconst char *fname\fR,\ \fIzip_flags_t flags\fR,\ \fIconst char *password\fR);
-.sp
-\fIstruct\ zip_file\ *\fR
-.br
-\fBzip_fopen_index_encrypted\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR,\ \fIconst char *password\fR);
+\fIzip_file_t *\fR
+.PD 0
+.HP 4n
+\fBzip_fopen_encrypted\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_flags_t\ flags\fR, \fIconst\ char\ *password\fR);
+.PD
+.PP
+\fIzip_file_t *\fR
+.PD 0
+.HP 4n
+\fBzip_fopen_index_encrypted\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR, \fIconst\ char\ *password\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_fopen_encrypted\fR()
diff --git a/man/zip_fread.man b/man/zip_fread.man
index ca4ad01..170d31c 100644
--- a/man/zip_fread.man
+++ b/man/zip_fread.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_fread\fR(\fIstruct zip_file *file\fR,\ \fIvoid *buf\fR,\ \fIzip_uint64_t nbytes\fR);
+.PD 0
+.HP 4n
+\fBzip_fread\fR(\fIzip_file_t\ *file\fR, \fIvoid\ *buf\fR, \fIzip_uint64_t\ nbytes\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_fread\fR()
diff --git a/man/zip_get_archive_comment.man b/man/zip_get_archive_comment.man
index 5f63c46..dfab1b1 100644
--- a/man/zip_get_archive_comment.man
+++ b/man/zip_get_archive_comment.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_get_archive_comment\fR(\fIstruct zip *archive\fR,\ \fIint *lenp\fR,\ \fIzip_flags_t flags\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_get_archive_comment\fR(\fIzip_t\ *archive\fR, \fIint\ *lenp\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_get_archive_comment\fR()
diff --git a/man/zip_get_archive_flag.man b/man/zip_get_archive_flag.man
index a7878b8..f4f73b9 100644
--- a/man/zip_get_archive_flag.man
+++ b/man/zip_get_archive_flag.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_get_archive_flag\fR(\fIstruct zip *archive\fR,\ \fIzip_flags_t flag\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_get_archive_flag\fR(\fIzip_t\ *archive\fR, \fIzip_flags_t\ flag\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_get_archive_flag\fR()
diff --git a/man/zip_get_file_comment.man b/man/zip_get_file_comment.man
index 08c7e55..70f7a57 100644
--- a/man/zip_get_file_comment.man
+++ b/man/zip_get_file_comment.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_get_file_comment\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIint *lenp\fR,\ \fIint flags\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_get_file_comment\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIint\ *lenp\fR, \fIint\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_get_file_comment\fR()
diff --git a/man/zip_get_name.man b/man/zip_get_name.man
index 162fced..2bfa6d2 100644
--- a/man/zip_get_name.man
+++ b/man/zip_get_name.man
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIconst\ char\ *\fR
-.br
-\fBzip_get_name\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_flags_t flags\fR);
+\fIconst char *\fR
+.PD 0
+.HP 4n
+\fBzip_get_name\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_get_name\fR()
diff --git a/man/zip_get_num_entries.man b/man/zip_get_num_entries.man
index b06ca36..4965e98 100644
--- a/man/zip_get_num_entries.man
+++ b/man/zip_get_num_entries.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIzip_int64_t\fR
-.br
-\fBzip_get_num_entries\fR(\fIstruct zip *archive\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_get_num_entries\fR(\fIzip_t\ *archive\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_get_num_entries\fR()
diff --git a/man/zip_get_num_files.man b/man/zip_get_num_files.man
index 298b806..162dbd2 100644
--- a/man/zip_get_num_files.man
+++ b/man/zip_get_num_files.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_get_num_files\fR(\fIstruct zip *archive\fR);
+.PD 0
+.HP 4n
+\fBzip_get_num_files\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 \fIThis function is deprecated.\fR
 \fIUse\fR
diff --git a/man/zip_name_locate.man b/man/zip_name_locate.man
index 3acf8c0..212fef7 100644
--- a/man/zip_name_locate.man
+++ b/man/zip_name_locate.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIzip_int64_t\fR
-.br
-\fBzip_name_locate\fR(\fIstruct zip *archive\fR,\ \fIconst char *fname\fR,\ \fIzip_flags_t flags\fR);
+.PD 0
+.HP 4n
+\fBzip_name_locate\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_flags_t\ flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_name_locate\fR()
diff --git a/man/zip_open.man b/man/zip_open.man
index 1033a00..9a992f5 100644
--- a/man/zip_open.man
+++ b/man/zip_open.man
@@ -1,4 +1,4 @@
-.TH "ZIP_OPEN" "3" "February 13, 2012" "NiH" "Library Functions Manual"
+.TH "ZIP_OPEN" "3" "August 17, 2014" "NiH" "Library Functions Manual"
 .nh
 .if n .ad l
 .SH "NAME"
@@ -9,9 +9,11 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct\ zip\ *\fR
-.br
-\fBzip_open\fR(\fIconst char *path\fR,\ \fIint flags\fR,\ \fIint *errorp\fR);
+\fIzip_t *\fR
+.PD 0
+.HP 4n
+\fBzip_open\fR(\fIconst\ char\ *path\fR, \fIint\ flags\fR, \fIint\ *errorp\fR);
+.PD
 .SH "DESCRIPTION"
 The zip archive specified by
 \fIpath\fR
@@ -38,6 +40,9 @@
 \fRZIP_TRUNCATE\fR
 If archive exists, ignore its current contents.
 In other words, handle it the same way as an empty archive.
+.TP 15n
+\fRZIP_RDONLY\fR
+Open archive in read-only mode.
 .RE
 .PP
 If an error occurs and
diff --git a/man/zip_rename.man b/man/zip_rename.man
index ee7c482..43b0bd5 100644
--- a/man/zip_rename.man
+++ b/man/zip_rename.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_rename\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIconst char *name\fR);
+.PD 0
+.HP 4n
+\fBzip_rename\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIconst\ char\ *name\fR);
+.PD
 .SH "DESCRIPTION"
 \fBzip_rename\fR()
 is the obsolete version of
diff --git a/man/zip_set_archive_comment.man b/man/zip_set_archive_comment.man
index 731d119..a0998bd 100644
--- a/man/zip_set_archive_comment.man
+++ b/man/zip_set_archive_comment.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_archive_comment\fR(\fIstruct zip *archive\fR,\ \fIconst char *comment\fR,\ \fIzip_uint16_t len\fR);
+.PD 0
+.HP 4n
+\fBzip_set_archive_comment\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *comment\fR, \fIzip_uint16_t\ len\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_set_archive_comment\fR()
diff --git a/man/zip_set_archive_flag.man b/man/zip_set_archive_flag.man
index bd8536d..6b0b4c1 100644
--- a/man/zip_set_archive_flag.man
+++ b/man/zip_set_archive_flag.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_archive_flag\fR(\fIstruct zip *archive\fR,\ \fIzip_flags_t flag\fR,\ \fIint value\fR);
+.PD 0
+.HP 4n
+\fBzip_set_archive_flag\fR(\fIzip_t\ *archive\fR, \fIzip_flags_t\ flag\fR, \fIint\ value\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_set_archive_flag\fR()
diff --git a/man/zip_set_default_password.man b/man/zip_set_default_password.man
index 1ca9416..2219e71 100644
--- a/man/zip_set_default_password.man
+++ b/man/zip_set_default_password.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_default_password\fR(\fIstruct zip *archive\fR,\ \fIconst char *password\fR);
+.PD 0
+.HP 4n
+\fBzip_set_default_password\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *password\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_set_default_password\fR()
diff --git a/man/zip_set_file_comment.man b/man/zip_set_file_comment.man
index 3af0bae..5a22dc4 100644
--- a/man/zip_set_file_comment.man
+++ b/man/zip_set_file_comment.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_file_comment\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIconst char *comment\fR,\ \fIint len\fR);
+.PD 0
+.HP 4n
+\fBzip_set_file_comment\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIconst\ char\ *comment\fR, \fIint\ len\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_set_file_comment\fR()
diff --git a/man/zip_set_file_compression.man b/man/zip_set_file_compression.man
index b9ad978..fd870f3 100644
--- a/man/zip_set_file_compression.man
+++ b/man/zip_set_file_compression.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_set_file_compression\fR(\fIstruct zip *archive\fR,\ \fIzip_uint64_t index\fR,\ \fIzip_int32_t comp\fR,\ \fIzip_uint32_t comp_flags\fR);
+.PD 0
+.HP 4n
+\fBzip_set_file_compression\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_int32_t\ comp\fR, \fIzip_uint32_t\ comp_flags\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_set_file_compression\fR()
diff --git a/man/zip_source.man b/man/zip_source.man
index c7b7806..ed83542 100644
--- a/man/zip_source.man
+++ b/man/zip_source.man
@@ -9,7 +9,7 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct zip_source *zs\fR;
+\fIzip_source_t *zs\fR;
 .SH "DESCRIPTION"
 A
 \fIstruct zip_source\fR
diff --git a/man/zip_source_buffer.man b/man/zip_source_buffer.man
index 45d4207..923dd2d 100644
--- a/man/zip_source_buffer.man
+++ b/man/zip_source_buffer.man
@@ -9,10 +9,10 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct zip_source *\fR
+\fIzip_source_t *\fR
 .PD 0
 .HP 4n
-\fBzip_source_buffer\fR(\fIstruct\ zip\ *archive\fR, \fIconst\ void\ *data\fR, \fIzip_uint64_t\ len\fR, \fIint\ freep\fR);
+\fBzip_source_buffer\fR(\fIzip_t\ *archive\fR, \fIconst\ void\ *data\fR, \fIzip_uint64_t\ len\fR, \fIint\ freep\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_source_file.man b/man/zip_source_file.man
index 21578c7..1cfa2b6 100644
--- a/man/zip_source_file.man
+++ b/man/zip_source_file.man
@@ -7,10 +7,10 @@
 .SH "LIBRARY"
 libzip (-lzip)
 .SH "SYNOPSIS"
-\fIstruct zip_source *\fR
+\fIzip_source_t *\fR
 .PD 0
 .HP 4n
-\fBzip_source_file\fR(\fIstruct\ zip\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
+\fBzip_source_file\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_source_filep.man b/man/zip_source_filep.man
index ce7c3d2..4e6ba2c 100644
--- a/man/zip_source_filep.man
+++ b/man/zip_source_filep.man
@@ -7,10 +7,10 @@
 .SH "LIBRARY"
 libzip (-lzip)
 .SH "SYNOPSIS"
-\fIstruct zip_source *\fR
+\fIzip_source_t *\fR
 .PD 0
 .HP 4n
-\fBzip_source_filep\fR(\fIstruct\ zip\ *archive\fR, \fIFILE\ *file\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
+\fBzip_source_filep\fR(\fIzip_t\ *archive\fR, \fIFILE\ *file\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_source_free.man b/man/zip_source_free.man
index d90b654..091bcff 100644
--- a/man/zip_source_free.man
+++ b/man/zip_source_free.man
@@ -12,7 +12,7 @@
 \fIvoid\fR
 .PD 0
 .HP 4n
-\fBzip_source_free\fR(\fIstruct\ zip_source\ *source\fR);
+\fBzip_source_free\fR(\fIzip_source_t\ *source\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_source_function.man b/man/zip_source_function.man
index e82bbc0..a7dbf56 100644
--- a/man/zip_source_function.man
+++ b/man/zip_source_function.man
@@ -1,4 +1,4 @@
-.TH "ZIP_SOURCE_FUNCTION" "3" "August 2, 2014" "NiH" "Library Functions Manual"
+.TH "ZIP_SOURCE_FUNCTION" "3" "October 9, 2014" "NiH" "Library Functions Manual"
 .nh
 .if n .ad l
 .SH "NAME"
@@ -9,10 +9,10 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct zip_source *\fR
+\fIzip_source_t *\fR
 .PD 0
 .HP 4n
-\fBzip_source_function\fR(\fIstruct\ zip\ *archive\fR, \fIzip_source_callback\ fn\fR, \fIvoid\ *userdata\fR);
+\fBzip_source_function\fR(\fIzip_t\ *archive\fR, \fIzip_source_callback\ fn\fR, \fIvoid\ *userdata\fR);
 .PD
 .SH "DESCRIPTION"
 The function
@@ -24,10 +24,14 @@
 .sp
 .RS 0n
 typedef zip_int64_t (*zip_source_callback)(void *state,
-    void *data, zip_uint64_t len, enum zip_source_cmd cmd);
+    void *data, zip_uint64_t len, zip_source_cmd_t cmd);
 .RE
 .fi
 .PP
+\fIarchive\fR
+is used for reporting errors and can be
+\fRNULL\fR.
+.PP
 When called by the library, the first argument is the
 \fIuserdata\fR
 argument supplied to
@@ -41,27 +45,108 @@
 and 0.
 The last argument,
 \fIcmd\fR,
-specifies which action the function should perform:
-.RS 6n
-.TP 21n
-\fRZIP_SOURCE_OPEN\fR
+specifies which action the function should perform.
+.PP
+Depending on the uses, there are three useful sets of commands to be supported by a
+\fBzip_source_callback\fR():
+.TP 24n
+read source
+Providing streamed data (for file data added to archives).
+Must support
+\fRZIP_SOURCE_OPEN\fR,
+\fRZIP_SOURCE_READ\fR,
+\fRZIP_SOURCE_CLOSE\fR,
+\fRZIP_SOURCE_STAT\fR,
+and
+\fRZIP_SOURCE_ERROR\fR.
+.TP 24n
+seekable read source
+Same as previous, but from a source allowing reading from arbitrary
+offsets (also for read-only zip archive).
+Must additionally support
+\fRZIP_SOURCE_SEEK\fR,
+\fRZIP_SOURCE_TELL\fR,
+and
+\fRZIP_SOURCE_SUPPORTS\fR.
+.TP 24n
+read/write source
+Same as previous, but additionally allowing writing (also for writable
+zip archives).
+Must additionally support
+\fRZIP_SOURCE_BEGIN_WRITE\fR,
+\fRZIP_SOURCE_COMMIT_WRITE\fR,
+\fRZIP_SOURCE_ROLLBACK_WRITE\fR,
+\fRZIP_SOURCE_SEEK_WRITE\fR,
+\fRZIP_SOURCE_TELL_WRITE\fR,
+and
+\fRZIP_SOURCE_REMOVE\fR.
+.SS "\fRZIP_SOURCE_BEGIN_WRITE\fR"
+Prepare the source for writing.
+Use this to create any temporary file(s).
+.SS "\fRZIP_SOURCE_CLOSE\fR"
+Reading is done.
+.SS "\fRZIP_SOURCE_COMMIT_WRITE\fR"
+Finish writing to the source.
+Replace the original data with the newly written data.
+Clean up temporary files or internal buffers.
+Subsequently opening and reading from the source should return the
+newly written data.
+.SS "\fRZIP_SOURCE_ERROR\fR"
+Get error information.
+\fIdata\fR
+points to an array of two ints, which should be filled with the libzip
+error code and the corresponding system error code for the error that
+occurred.
+See
+zip_errors(3)
+for details on the error codes.
+If the source stores error information in a zip_error_t, use
+zip_error_to_data(3)
+and return its return value.
+Otherwise, return 2 * sizeof(int).
+.SS "\fRZIP_SOURCE_FREE\fR"
+Clean up and free all resources.
+.SS "\fRZIP_SOURCE_OPEN\fR"
 Prepare for reading.
-Return 0 on success, \-1 on error.
-.TP 21n
-\fRZIP_SOURCE_READ\fR
+.SS "\fRZIP_SOURCE_READ\fR"
 Read data into the buffer
 \fIdata\fR
 of size
 \fIlen\fR.
 Return the number of bytes placed into
 \fIdata\fR
-on success, \-1 on error.
-.TP 21n
-\fRZIP_SOURCE_CLOSE\fR
-Reading is done.
-Return 0.
-.TP 21n
-\fRZIP_SOURCE_STAT\fR
+on success.
+.SS "\fRZIP_SOURCE_REMOVE\fR"
+Remove the underlying file.
+This is called if a zip archive is empty when closed.
+.SS "\fRZIP_SOURCE_ROLLBACK_WRITE\fR"
+Abort writing to the source.
+Discard written data.
+Clean up temporary files or internal buffers.
+Subsequently opening and reading from the source should return the
+original data.
+.SS "\fRZIP_SOURCE_SEEK\fR"
+Specify position to read next byte from, like
+fseek(3).
+Use
+ZIP_SOURCE_GET_ARGS
+to decode the arguments into the following struct:
+.nf
+.sp
+.RS 0n
+struct zip_source_args_seek {
+    zip_int64_t offset;
+    int whence;
+};
+.RE
+.fi
+.SS "\fRZIP_SOURCE_SEEK_WRITE\fR"
+Specify position to write next byte to, like
+fseek(3).
+See
+\fRZIP_SOURCE_SEEK\fR
+for details.
+.SS "\fRZIP_SOURCE_STAT\fR"
 Get meta information for the input data.
 \fIdata\fR
 points to an allocated
@@ -71,28 +156,33 @@
 and then filled in.
 Information only available after the source has been read (e.g. size)
 can be omitted in an earlier call.
-Return sizeof(struct zip_stat) on success, \-1 on error.
+Return sizeof(struct zip_stat) on success.
 \fINOTE\fR:
 \fBzip_source_function\fR()
 may be called with this argument even after being called with
 \fRZIP_SOURCE_CLOSE\fR.
-.TP 21n
+.SS "\fRZIP_SOURCE_SUPPORTS\fR"
+Return bitmap specifying which commands are supported.
+Use
+zip_source_make_command_bitmap(3).
+If this command is not implemented, the source is assumed to be a
+read source without seek support.
+.SS "\fRZIP_SOURCE_TELL\fR"
+Return the current read offset in the source, like
+ftell(3).
+.SS "\fRZIP_SOURCE_TELL_WRITE\fR"
+Return the current write offset in the source, like
+ftell(3).
+.SS "\fRZIP_SOURCE_WRITE\fR"
+Write data to the source.
+Return number of bytes written.
+.SS "Return Values"
+Commands should return \-1 on error.
 \fRZIP_SOURCE_ERROR\fR
-Get error information.
-\fIdata\fR
-points to an array of two ints, which should be filled with the libzip
-error code and the corresponding system error code for the error that
-occurred.
-See
-zip_errors(3)
-for details on the error codes.
-Return return(2 * sizeof(int)).
-.TP 21n
-\fRZIP_SOURCE_FREE\fR
-Clean up and free all resources.
-Return 0.
-.RE
-.PP
+will be called to retrieve the error code.
+On success, commands return 0, unless specified otherwise in the
+description above.
+.SS "Calling Conventions"
 The library will always issue
 \fRZIP_SOURCE_OPEN\fR
 before issuing
@@ -124,7 +214,10 @@
 \fRNULL\fR
 is returned and the error code in
 \fIarchive\fR
-is set to indicate the error.
+is set to indicate the error (unless
+\fIarchive\fR
+is
+\fRNULL\fR).
 .SH "ERRORS"
 \fBzip_source_function\fR()
 fails if:
diff --git a/man/zip_source_zip.man b/man/zip_source_zip.man
index ab4ca6c..a088036 100644
--- a/man/zip_source_zip.man
+++ b/man/zip_source_zip.man
@@ -9,10 +9,10 @@
 .SH "SYNOPSIS"
 \fB#include <zip.h>\fR
 .sp
-\fIstruct zip_source *\fR
+\fIzip_source_t *\fR
 .PD 0
 .HP 4n
-\fBzip_source_zip\fR(\fIstruct\ zip\ *archive\fR, \fIstruct\ zip\ *srcarchive\fR, \fIzip_uint64_t\ srcidx\fR, \fIzip_flags_t\ flags\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
+\fBzip_source_zip\fR(\fIzip_t\ *archive\fR, \fIzip_t\ *srcarchive\fR, \fIzip_uint64_t\ srcidx\fR, \fIzip_flags_t\ flags\fR, \fIzip_uint64_t\ start\fR, \fIzip_int64_t\ len\fR);
 .PD
 .SH "DESCRIPTION"
 The function
diff --git a/man/zip_stat.man b/man/zip_stat.man
index 32664e6..2419e32 100644
--- a/man/zip_stat.man
+++ b/man/zip_stat.man
@@ -11,12 +11,16 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_stat\fR(\fIstruct zip *archive\fR,\ \fIconst char *fname\fR,\ \fIzip_flags_t flags\fR,\ \fIstruct zip_stat *sb\fR);
-.sp
+.PD 0
+.HP 4n
+\fBzip_stat\fR(\fIzip_t\ *archive\fR, \fIconst\ char\ *fname\fR, \fIzip_flags_t\ flags\fR, \fIzip_stat_t\ *sb\fR);
+.PD
+.PP
 \fIint\fR
-.br
-\fBzip_stat_index\fR(\fIstruct zip *archive\fR,\ \fIint index\fR,\ \fIzip_flags_t flags\fR,\ \fIstruct zip_stat *sb\fR);
+.PD 0
+.HP 4n
+\fBzip_stat_index\fR(\fIzip_t\ *archive\fR, \fIint\ index\fR, \fIzip_flags_t\ flags\fR, \fIzip_stat_t\ *sb\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_stat\fR()
diff --git a/man/zip_stat_init.man b/man/zip_stat_init.man
index 7782b61..142a74e 100644
--- a/man/zip_stat_init.man
+++ b/man/zip_stat_init.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIvoid\fR
-.br
-\fBzip_stat_init\fR(\fIstruct zip_stat *sb\fR);
+.PD 0
+.HP 4n
+\fBzip_stat_init\fR(\fIzip_stat_t\ *sb\fR);
+.PD
 .SH "DESCRIPTION"
 The
 \fBzip_stat_init\fR()
diff --git a/man/zip_unchange.man b/man/zip_unchange.man
index 4b69958..db2697b 100644
--- a/man/zip_unchange.man
+++ b/man/zip_unchange.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_unchange\fR(\fIstruct zip *archive\fR,\ \fIint index\fR);
+.PD 0
+.HP 4n
+\fBzip_unchange\fR(\fIzip_t\ *archive\fR, \fIint\ index\fR);
+.PD
 .SH "DESCRIPTION"
 Changes to the file at position
 \fIindex\fR
diff --git a/man/zip_unchange_all.man b/man/zip_unchange_all.man
index 9a45eca..9cf0381 100644
--- a/man/zip_unchange_all.man
+++ b/man/zip_unchange_all.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_unchange_all\fR(\fIstruct zip *archive\fR);
+.PD 0
+.HP 4n
+\fBzip_unchange_all\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 All changes to files and global information in
 \fIarchive\fR
diff --git a/man/zip_unchange_archive.man b/man/zip_unchange_archive.man
index ba50cc0..9b71cfa 100644
--- a/man/zip_unchange_archive.man
+++ b/man/zip_unchange_archive.man
@@ -10,8 +10,10 @@
 \fB#include <zip.h>\fR
 .sp
 \fIint\fR
-.br
-\fBzip_unchange_archive\fR(\fIstruct zip *archive\fR);
+.PD 0
+.HP 4n
+\fBzip_unchange_archive\fR(\fIzip_t\ *archive\fR);
+.PD
 .SH "DESCRIPTION"
 Revert all global changes to the archive
 \fIarchive\fR.