#
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# Define public interface.

SUNWprivate_1.1 {
	global:
		Java_java_util_jar_JarFile_getMetaInfEntryNames;
		Java_java_util_zip_Adler32_update;
		Java_java_util_zip_Adler32_updateBytes;
		Java_java_util_zip_Adler32_updateByteBuffer;
		Java_java_util_zip_CRC32_update;
		Java_java_util_zip_CRC32_updateBytes;
		Java_java_util_zip_CRC32_updateByteBuffer;
		Java_java_util_zip_Deflater_deflateBytes;
		Java_java_util_zip_Deflater_end;
		Java_java_util_zip_Deflater_getAdler;
		Java_java_util_zip_Deflater_init;
		Java_java_util_zip_Deflater_initIDs;
		Java_java_util_zip_Deflater_reset;
		Java_java_util_zip_Deflater_setDictionary;
		Java_java_util_zip_Inflater_end;
		Java_java_util_zip_Inflater_getAdler;
		Java_java_util_zip_Inflater_inflateBytes;
		Java_java_util_zip_Inflater_init;
		Java_java_util_zip_Inflater_initIDs;
		Java_java_util_zip_Inflater_reset;
		Java_java_util_zip_Inflater_setDictionary;
		Java_java_util_zip_ZipFile_close;
		Java_java_util_zip_ZipFile_getCommentBytes;
		Java_java_util_zip_ZipFile_freeEntry;
		Java_java_util_zip_ZipFile_getEntry;
		Java_java_util_zip_ZipFile_getEntryBytes;
		Java_java_util_zip_ZipFile_getEntryCrc;
		Java_java_util_zip_ZipFile_getEntryCSize;
		Java_java_util_zip_ZipFile_getEntryFlag;
		Java_java_util_zip_ZipFile_getEntryMethod;
		Java_java_util_zip_ZipFile_getEntrySize;
		Java_java_util_zip_ZipFile_getEntryTime;
		Java_java_util_zip_ZipFile_getNextEntry;
		Java_java_util_zip_ZipFile_getZipMessage;
		Java_java_util_zip_ZipFile_getTotal;
		Java_java_util_zip_ZipFile_initIDs;
		Java_java_util_zip_ZipFile_open;
		Java_java_util_zip_ZipFile_read;
		Java_java_util_zip_ZipFile_startsWithLOC;

		ZIP_Close;
		ZIP_CRC32;
		ZIP_FindEntry;
		ZIP_GetEntry;
		ZIP_GetNextEntry;
		ZIP_Lock;
		ZIP_Open;
		ZIP_Read;
		ZIP_ReadEntry;
		ZIP_Unlock;

	local:
		*;
};
