Add 'unchange_all' command to modify, and adapt a test case to use it.

Remove a now unnecessary test program.
Adapt hgignore for some other removed files/programs; add man/*.man.
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index 4bbc622..95b334c 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -14,7 +14,6 @@
 #  fread
   name_locate
   set_comment_all
-  set_comment_revert
 )
 
 SET(HELPER_TEST_PROGRAMS
diff --git a/regress/Makefile.am b/regress/Makefile.am
index 79da7e8..4db2320 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -11,7 +11,6 @@
 	modify \
 	name_locate \
 	set_comment_all \
-	set_comment_revert \
 	set_compression \
 	tryopen
 
diff --git a/regress/modify.c b/regress/modify.c
index dc426ce..af72f2f 100644
--- a/regress/modify.c
+++ b/regress/modify.c
@@ -497,6 +497,15 @@
 }
 
 static int
+unchange_all(int argc, char *argv[]) {
+    if (zip_unchange_all(za) < 0) {
+	fprintf(stderr, "can't revert changes to archive: %s\n", zip_strerror(za));
+	return -1;
+    }
+    return 0;
+}
+
+static int
 zin_close(int argc, char *argv[]) {
     if (zip_close(z_in) < 0) {
 	fprintf(stderr, "can't close source archive: %s\n", zip_strerror(z_in));
@@ -787,6 +796,7 @@
     { "set_file_compression", 3, "index method flags", "set file compression method", set_file_compression },
     { "set_file_mtime", 2, "index timestamp", "set file modification time", set_file_mtime },
     { "stat", 1, "index", "print information about entry", zstat },
+    { "unchange_all", 0, "", "revert all changes", unchange_all },
     { "zin_close", 0, "", "close input zip_source (for internal tests)", zin_close }
 };
 
diff --git a/regress/set_comment_revert.c b/regress/set_comment_revert.c
deleted file mode 100644
index b13f7c7..0000000
--- a/regress/set_comment_revert.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-  set_comment_revert.c -- set global and file comments, but revert
-  Copyright (C) 2006-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.
-*/
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "compat.h"
-
-const char *prg;
-const char *new_archive_comment="This is the new,\r\n"
-"multiline archive comment.\r\n"
-"Ain't it nice?";
-
-int
-main(int argc, char *argv[])
-{
-    const char *archive;
-    zip_t *za;
-    char buf[100];
-    int err;
-    zip_int64_t i;
-
-    prg = argv[0];
-
-    if (argc != 2) {
-	fprintf(stderr, "usage: %s archive\n", prg);
-	return 1;
-    }
-
-    archive = argv[1];
-    
-    if ((za=zip_open(archive, 0, &err)) == NULL) {
-	zip_error_t error;
-	zip_error_init_with_code(&error, err);
-	fprintf(stderr, "%s: can't open zip archive '%s': %s\n", prg, archive, zip_error_strerror(&error));
-	zip_error_fini(&error);
-	return 1;
-    }
-
-    if (zip_set_archive_comment(za, new_archive_comment,
-				(zip_uint16_t)strlen(new_archive_comment)) < 0) {
-	fprintf(stderr, "%s: zip_set_archive_comment failed: %s\n", prg, zip_strerror(za));
-    }
-
-    for (i=0; i<zip_get_num_entries(za, 0); i++) {
-	snprintf(buf, sizeof(buf), "File comment no %" PRId64, i);
-	if (zip_file_set_comment(za, (zip_uint64_t)i, buf, (zip_uint16_t)strlen(buf), 0) < 0) {
-	    fprintf(stderr, "%s: zip_set_file_comment on file %" PRId64 " failed: %s\n", prg, i, zip_strerror(za));
-	}
-    }
-
-    if (zip_unchange_all(za) == -1) {
-	fprintf(stderr, "%s: can't revert changes to archive '%s'\n", prg, archive);
-	return 1;
-    }
-
-    if (zip_close(za) == -1) {
-	fprintf(stderr, "%s: can't close zip archive '%s': %s\n", prg, archive, zip_strerror(za));
-	return 1;
-    }
-
-    return 0;
-}
diff --git a/regress/set_comment_revert.test b/regress/set_comment_revert.test
index 6d921b5..10baf5a 100644
--- a/regress/set_comment_revert.test
+++ b/regress/set_comment_revert.test
@@ -1,5 +1,5 @@
 # start changing local and global comments, but revert before closing
-program set_comment_revert
+program modify
 return 0
-args testcomment.zip
+args testcomment.zip  set_archive_comment "some long string, a bit longer than this at least"  set_file_comment 0 "File comment no 0"  set_file_comment 1 "File comment no 1"  set_file_comment 3 "File comment no 3"  set_file_comment 2 ""   unchange_all
 file testcomment.zip testcomment.zip testcomment.zip