2006-02-28  Release Manager

	* GCC 4.1.0 released.

2006-02-08  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* jartool.h (ACTION_INDEX): New macro.
	* jartool.c (main): Handle -i option.
	* fastjar.texi (Invoking fastjar): Add description of -i option.

2006-01-31  Tom Tromey  <tromey@redhat.com>

	* jartool.c (version): Use 2006.
	* jargrep.c (version): Use 2006.

2005-06-29  Kelley Cook  <kcook@gcc.gnu.org>

	* all files: Update FSF address.

2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
	* Makefile.am: Remove ACLOCAL_AMFLAGS.
	* aclocal.m4, Makefile.in, configure, config.h.in: Regenerate.

2005-03-28  Marcin Dalecki  <martin@dalecki.de>

	* jartool.c (main): Indentation fixlet.
	(add_entry): Likewise.
	(init_args): Don't use K&R style.
	(jt_strdup): Likewise.
	(get_next_arg): Add explicit '(void)'.
	(init_headers): Likewise.
	(version): Likewise.

2005-03-15  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.am (fastjar_TEXINFOS): Add gcc-vers.texi.
	(BASEVER, DEVPHASE): New variables.
	(POD2MAN): Adjust setting of --release option.
	(fastjar.1, grepjar.1, gcc-vers.texi): New rules.
	* Makefile.in: Regenerate.
	* configure.ac: Do not invoke TL_AC_GCC_VERSION.
	* aclocal.m4, configure: Regenerate.

2004-12-02  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
	* configure, aclocal.m4, Makefile.in: Regenerate.

2004-11-15  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Remove -no-dependencies.
	* Makefile.in: Regenerate.

2004-11-13  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Define ACLOCAL_AMFLAGS.
	* acinclude.m4: Remove unnecessary sinclude.
	* aclocal.m4, Makefile.in, configure: Regenerate (autoreconf 1.9.3).

2004-09-23  Tom Tromey  <tromey@redhat.com>

	* jartool.c (extract_jar): Unconditionally read extra data in the
	entry header; don't read it after the file contents.

2004-08-11  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/16164
	* Makefile.am: Force fastjar.info to be built in build directory.
	* Makefile.in: Regenerate.

2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* Makefile.am: Rename jar binary to fastjar.
	* Makefile.in: Regenerate.
	* fastjar.texi: Rename references to jar binary with fastjar.

2004-07-19  Bryce McKinlay  <mckinlay@redhat.com>

	* jartool.c (main): Ensure that only one of ftruncate and _chsize
	is used.

2004-07-11  Bryce McKinlay  <mckinlay@redhat.com>

	PR 16472
	* configure.ac: Check for ftruncate() and _chsize().
	* jartool.c (main): Use _chsize if ftruncate not available.
	* configure, config.h.in: Rebuilt.

2004-07-09  Richard Sandiford  <rsandifo@redhat.com>

	* jartool.c (find_entry, looks_like_dir): Remove inline spec.

2004-07-07  Matthias Klose  <doko@debian.org>

	* Makefile.am (jar_CPPFLAGS): Add AM_CPPFLAGS.
	* Makefile.in: Regenerate.

2004-07-06  Matthias Klose  <doko@debian.org>

	* Makefile.in: Regenerate.
	* fastjar.texi: Update for '-u'.

2004-07-06  Casey Marshall <csm@gnu.org>

	PR 7854
	* Makefile.am
	(jar_SOURCES): added shift.c, shift.h.
	(jar_CPPFLAGS): define WITH_SHIFT_DOWN.

	* compress.c
	Added FSF copyright.
	(write_data): new function.
	(compress_file): call write_data.

	* jartool.c
	Updated copyright year.
	(progname): new variable.
	(end_of_entries): new variable.
	(main): open and read file when updating.
	(find_entry): new function.
	(looks_like_dir): new function.
	(read_entries): new function.
	(make_manifest): added parameter `updating'.
	Call `add_file_to_jar' with `updating'.
	(add_to_jar_with_dir): added parameter `updating'.
	Call `add_to_jar' with `updating'.
	(add_to_jar): added parameter `updating'.
	Call `add_file_to_jar' with `updating'.
	Don't add directories if they already exist.
	(add_file_to_jar): added parameter `updating'.
	Update entries if they already exist.

	* jartool.h
	Added #ifndef __FASTJAR_JARTOOL_H__.
	(struct zipentry): added `flags'.

	* shift.c: new file.

	* shift.h: new file.

	* zipfile.h
	(CEN_FLAGS): new constant.

2004-07-05  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Silence two automake warnings.
	* Makefile.in: Regenerate.

2004-06-25  Kelley Cook  <kcook@gcc.gnu.org>

	PR other/15194
	* configure.ac: Add check for long long.
	* jartool.h: Check for long long before using it.
	* configure: Regenerate
	* config.h.in: Regenerate.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* acinclude.m4: Quote first argument of AC_DEFUNs.
	* aclocal.m4: Regenerate with automake 1.8.
	* Makefile.in: Likewise.
	* configure: Regenerate.
	* .cvsignore: New file.

2004-04-12  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/14905
	* configure.ac: Parse --enable-generated-files-in-srcdir.
	* Makefile.am: Copy man and info files to srcdir if requested.
	* configure: Regenerate.
	* Makefile.in Regenerate.

2004-03-10  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Bump AC_PREREQ to 2.59.
	* configure: Regenerate.

2004-03-09  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for config/accross.m4 correction.

2004-01-09  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.in: Rename file to ...
	* configure.ac: ... this.  Add in AC_PREREQ(2.57)
	* config.h.in: Regenerate.
	* aclocal.m4: Regenerate.
	* Makefile.in: Regenerate.

2004-01-07  Andreas Tobler  <a.tobler@schweiz.ch>

	* jartool.c (make_manifest): Fix off-by-one bug when creating
	an empty MANIFEST.MF.

2003-12-01  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Define AM_MAKINFOFLAGS.  Remove Automake 1.4 hack.
	* Makefile.in: Regenerate with automake 1.7.6 & autoconf 2.57 tools.
	* aclocal.m4, config.h.in, configure: Likewise.
	* install-sh, missing, mkinstalldirs, stamp-h.in: Remove.

2003-11-21  Kelley Cook  <kcook@gcc.gnu.org>

	* .cvsignore: Delete.

2003-10-30  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am (my_make_i_flags): Add $(srcdir) and update comment
	to match.
	(fastjar.info): Update target to write to build directory.
	(%.1): New implicit rule from a .pod file.
	(jar.1): Delete.
	(grepjar.1): Delete.
	(jar.pod): New intermediate rule.
	(grepjar.pod): Likewise.
	* Makefile.in: Regenerate.

2003-08-13  Matthias Klose  <doko@debian.org>

	* fastjar.texi: License manual under the GPL.
	* Makefile.am: Remove reference to fdl.texi
	* Makefile.in: Regenerate

2003-07-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* mkinstalldirs: Import autoconf 2.57 / automake 1.7 version.

2003-07-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README: Note that FastJar is not part of GCC.

2003-07-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR java/9532
	* jartool.c (add_to_jar): Return 1 on failure to open file.
	Split out -C case to:
	* jartool.c (add_to_jar_with_dir): New function.

2003-06-15  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR java/9532
	* jartool.c (main) Give proper error messages with -C, and
	check for missing arguments properly.  Send error messages
	to stderr.
	* jartool.c (add_to_jar): Make getcwd() call portable,
	and check for error return.

2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* fastjar.texi: Remove @ at start of file.

2003-03-10  Mohan Embar  <gnustuff@thisiscool.com>

	* dostime.c: add #include <stddef.h> for definition of NULL

2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* fastjar.texi: Update to GFDL 1.2.

2003-01-31  Daiki Ueno  <ueno@unixuser.org>

	* jartool.c (extract_jar): Don't lseek to skip extra fields.
	(consume): If the stream is seekable, do lseek.

2003-01-28  Ranjit Mathew  <rmathew@hotmail.com>

	* jargrep.c: Include xregex.h from libiberty instead of
	system regex.h for better portability.

2003-01-21  Ranjit Mathew  <rmathew@hotmail.com>

	* jartool.c (list_jar): Terminate the 'ascii_date' buffer
	with a '\0' to guard against the case where the formatted
	time string is more than the size allowed by the buffer.

2003-01-14  Tom Tromey  <tromey@redhat.com>

	* config.h.in: Rebuilt.

2002-12-30  DJ Delorie  <dj@redhat.com>

	* Makefile.am (jar.1, grepjar.1): Protect against
	texi2pod/pod2man failing.
	* Makefile.in: Regenerated.

2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	* fastjar.texi: Include Cover Texts in man page.

2002-12-04  Jakub Jelinek  <jakub@redhat.com>

	* fastjar.texi (jar @direntry, grepjar @direntry): Add (fastjar).

2002-11-23  H.J. Lu <hjl@gnu.org>

	* acinclude.m4: Include ../config/accross.m4.
	(gcc_AC_COMPILE_CHECK_SIZEOF): Removed.
	(gcc_AC_EXAMINE_OBJECT): Removed.
	(gcc_AC_C_COMPILE_ENDIAN): Removed.
	* aclocal.m4; Rebuild.

	* configure.in: Replace AC_C_BIGENDIAN with AC_C_BIGENDIAN_CROSS.
	Replace AC_CHECK_SIZEOF with AC_COMPILE_CHECK_SIZEOF.
	* configure: Likewise.

2002-11-21  Ranjit Mathew <rmathew@hotmail.com>

	* jartool.c (extract_jar): Use "open" with O_BINARY instead of
	"creat" to create extracted files.

2002-11-11  Tom Tromey  <tromey@redhat.com>

	* dostime.c (dos2unixtime): Mask for seconds is 0x1f.  Correctly
	compute month.
	(unix2dostime): Handle years before 1980.  Correctly compute month
	and day of month.

2002-11-10  Jakub Jelinek  <jakub@redhat.com>

	* jartool.c (add_to_jar): Only compare file to jarfile if jarfile is
	non-NULL.

	* configure.in (AC_CHECK_HEADERS): Add limits.h.
	* configure, config.h.in: Rebuilt.

2002-11-07  Tom Tromey  <tromey@redhat.com>

	* dostime.c: Rewrote from scratch.
	* dostime.h (dostime): Removed.

2002-10-20  Tom Tromey  <tromey@redhat.com>

	* jartool.c: Use mode 0666 when opening new file.

2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* jargrep.c (chk_wrd): Remove unused variable(s).
	* jartool.c (main, create_central_header, list_jar): Likewise.

2002-10-15  Ranjit Mathew  <rmathew@hotmail.com>

	* configure, config.h.in: Rebuilt.
	* configure.in: Call gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG.

2002-09-11  Tom Tromey  <tromey@redhat.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (TEXINFO_TEX): New macro.
	(info_TEXINFOS): Likewise.
	(fastjar_TEXINFOS): Likewise.
	(man_MANS): Likewise.
	(EXTRA_DIST): Likewise.
	(my_makei_flags): Likewise.
	(fastjar.info): New rule.
	(fastjar_TEXINFOS): Don't mention `$(srcdir)'.
	(TEXINFO_TEX): Likewise.
	(AUTOMAKE_OPTIONS): Added `cygnus'.

2002-09-11  Matthias Klose  <doko@debian.org>

	* Makefile.am: Revert the previous patch.
	* Makefile.in: Regenerated.

2002-09-10  Matthias Klose  <doko@debian.org>

	* fastjar.texi: New.
	* Makefile.am: Support building info docs and manpages.
	* Makefile.in: Regenerated.
	* configure.in: Set gcc_version.
	* configure: Regenerated.
	* jargrep.c: Update usage and help strings.

2002-09-09  Tom Tromey  <tromey@redhat.com>

	* jartool.c (mkdir): Define.
	* config.h.in: Rebuilt.
	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4: New file.  Copied gcc_AC_COMPILE_CHECK_SIZEOF,
	gcc_AC_EXAMINE_OBJECT, and fastjar_AC_COMPILE_C_BIGENDIAN from
	aclocal.m4.

2002-09-04  Tom Tromey  <tromey@redhat.com>

	From greenrd@hotmail.com:
	* jartool.c (list_jar): Correctly determine when new `filename'
	buffer must be allocated.  Fixes PR java/7830.

2002-06-03  Geoffrey Keating  <geoffk@redhat.com>

	* configure.in: Support cross-compiling.
	* configure: Regenerate.
	* aclocal.m4 (gcc_AC_COMPILE_CHECK_SIZEOF): New.
	(gcc_AC_EXAMINE_OBJECT): New.
	(fastjar_AC_COMPILE_C_BIGENDIAN): New.

2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* jartool.c (expand_options): Handle tar-style argument list with a
	leading "-".

2002-02-23  Anthony Green  <green@redhat.com>

	* jartool.c (main): Fix handling of -C.

2002-01-30  Tom Tromey  <tromey@redhat.com>

	* jartool.c (main): NULL-terminate new_argv.  Pass 0 as argument
	to init_args.

2002-01-11  Tom Tromey  <tromey@redhat.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (AUTOMAKE_OPTIONS): New macro.

2002-01-09  Tom Tromey  <tromey@redhat.com>

	For PR libgcj/5303:
	* jargrep.h: Removed RCS keywords.
	(GVERSION): Removed.
	* configure, Makefile.in, config.h.in: Rebuilt.
	* configure.in: Added AM_MAINTAINER_MODE.
	Don't look for getopt.h.  Use `fastjar' as package name.
	* Makefile.am (INCLUDES): Look in ../include.
	(LIBIBERTY): New macro.
	(jar_LDADD): Use it.
	(jar_DEPENDENCIES): Likewise.
	(grepjar_LDADD): Likewise.
	(grepjar_DEPENDENCIES): Likewise.
	* jargrep.c: Removed RCS keywords.  Always include getopt.h.
	(LONG_OPT): New macro.
	(OPT_HELP): Likewise.
	(main): Use getopt_long.  Let getopt print invalid argument
	message.  Handle --help.  Use version().
	(version): New function.
	(optarg, optind): Don't declare.
	(option_vec): New global.
	(help): New function.
	(Usage): Updated to GNU standards.
	* jartool.c: Removed RCS keywords.  Include getopt.h.
	(LONG_OPT): New macro.
	(OPT_HELP): Likewise.
	(options): New global.
	(help): New function.
	(usage): Print a single line.
	(version): New function.
	(expand_options): New function.
	(main): Use getopt_long and expand_options.  Fail if `-u'
	specified.  Changed handling of -f, -m, -V options.
	(OPTION_STRING): New macro.
	(version_string): Removed.

2001-01-02  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR bootstrap/5117
	* configure.in (AC_CHECK_HEADERS): Check for stdlib.h.
	* Makefile.am: Move grepjar to bin_PROGRAMS.
	* config.h.in: Regenerated.
	* Makefile.in: Regenerated.
	* aclocal.m4: Regenerated.
	* stamp-h.in: Regenerated.
	* jargrep.c: Eliminate some signed/unsigned and default
	uninitialized warnings. Use HAVE_STDLIB_H instead of
	STDC_HEADERS macro.
	* jartool.c: Likewise.
	* compress.c: Likewise.

2001-09-17  Tom Tromey  <tromey@redhat.com>

	For PR java/4295:
	* aclocal.m4, configure, Makefile.in: Rebuilt.
	* configure.in: Added AC_EXEEXT.

2001-10-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* jatool.c (extract_jar): Account for null termination when determining
	whether to expand "filename".

2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jartool.c (add_to_jar): Return 1 if `stat' initialy failed.
	Fixes PR java/3949.

2001-08-27  Tom Tromey  <tromey@redhat.com>

	* jartool.c (jarfile): Remove length limitation.
	(main): Use jt_strdup when initializing jarfile.

2001-07-04  Tom Tromey  <tromey@redhat.com>

	Modified from patch by Julian Hall <jules@acris.co.uk>:
	* jartool.c (errno): Conditionally declare.
	(O_BINARY): Conditionally define.
	(main): Use open, not creat.  Use O_BINARY everywhere.
	(make_manifest): Use O_BINARY.
	(add_to_jar): Likewise.

2001-06-28  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuilt.
	* configure.in: Accept --with-system-zlib.  Fixes PR java/3441.

2001-05-15  Per Bothner  <per@bothner.com>

	* Makefile.am (bin_PROGRAMS):  Renamed from "fastjar" to "jar".

2001-05-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* jartool.c (jt_strdup): New function.
	(get_next_arg): Use jt_strdup instead of strdup.

2001-01-21  Tom Tromey  <tromey@redhat.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (bin_PROGRAMS): Remove grepjar.
	(EXTRA_PROGRAMS): New macro.

2000-12-28  Robert Lipe <robertl@sco.com>

	* jartool.c (MAXPATHLEN): Provide if not defined.

2000-12-15  Tom Tromey  <tromey@redhat.com>
	    Kelley Cook <kelleycook@home.com>

	* jargrep.c: Include getopt.h if it exists.
	(optind): Declare.
	* configure, config.h: Rebuilt.
	* configure.in: Check for getopt.h.

2000-12-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (fastjar_warn_cflags): Set when using gcc.

	* Makefile.am (AM_CFLAGS): Set to @fastjar_warn_cflags@.

2000-12-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* compress.c: Include stdlib.h and compress.h.
	(rcsid): Delete.
	(report_str_error): Make static.
	(ez_inflate_str): Delete unused variable.  Add parens in if-stmt.
	(hrd_inflate_str): Likewise.

	* compress.h (init_compression, end_compression, init_inflation,
	end_inflation): Prototype void arguments.

	* dostime.c (rcsid): Delete.

	* jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h.
	Make functions static.  Cast ctype function argument to `unsigned
	char'.  Add parens in if-stmts.  Constify.
	(Usage): Change into a macro.
	(jargrep): Remove unused parameter.

	* jartool.c: Constify.  Add parens in if-stmts.  Align
	signed/unsigned char pointers in functions calls using casts.
	(rcsid): Delete.
	(list_jar): Fix printf format specifier.
	(usage): Chop long string into bits.  Reformat.

	* pushback.c (rcsid): Delete.

2000-12-13  Tom Tromey  <tromey@redhat.com>

	* jartool.c (extract_jar): Use strchr, not index.

2000-12-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* install-defs.sh: Removed.

2000-12-10  Robert Lipe <robertlipe@usa.net>

	* jargrep.c (jargrep): Added null statement after case.

2000-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile: Removed.
	* Makefile.in: Rebuilt with `-i' and `--enable-foreign'.

Tue Nov 16 15:11:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.am: New file.
	* Makefile.in: Rebuilt.
	* aclocal.m4: Likewise.
	* stamp-h.in: Likewise.
	* config.h.in: Likewise.
	* configure.in (AM_INIT_AUTOMAKE): Added.
	(AM_CONFIG_HEADER): Likewise.
	(AC_CHECK_HEADERS): Check for sys/param.h
	(AC_CHECK_LIB): Don't check for system's zlib.
	(AC_CHECK_FUNC): Removed system's zlib function checks.
	(ZDEPS. ZLIBS, ZINCS): Added.
	* configure: Rebuilt.
	* jartool.c (sys/param.h): Conditionally included or define MAXPATHLEN.
	(init_args, get_next_arg): New function.
	(use_explicit_list_only, read_names_from_stdin): New global
	(main): Parse new non standard options 'E' and '@', check and
	report their usage if necessary. Use init_args and get_next_arg.
	Fixed indentation.
	(add_to_jar): Don't read directory content if `use_explicit_list_only'.
	(usage): Added `-E' and `-@'.
	* jartool.h (VERSION): Macro removed.

Tue Nov 14 15:10:44 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* fastjar imported from sourceforge.net/projects/fastjar with
	Bryan Burns' permission. Check `CHANGES' for post import changes.
	* ChangeLog: Created.
	* NEWS: Likewise.
	* mkinstalldirs: Likewise.
	* COPYING: Likewise.
	* AUTHORS: Likewise.
