\input texinfo @c -*-texinfo-*-
@setfilename fastjar.info
@settitle Guide to GNU jar utilites

@c Note: When reading this manual you'll find lots of strange
@c circumlocutions like ``compiler for the Java language''.
@c This is necessary due to Sun's restrictions on the use of
@c the word ``Java'.

@c When this manual is copyrighted.
@set copyrights-fastjar 2002

@include gcc-common.texi

@c Versions
@set which-gcj GCC-@value{version-GCC}

@ifinfo
@format
@dircategory Programming
@direntry
* fastjar: (fastjar).       GNU jar utilities
@end direntry

@dircategory Individual utilities
@direntry
* fastjar: (fastjar)Invoking fastjar.
                            An archive tool for Java archives
* grepjar: (fastjar)Invoking grepjar.
                            Search files in a jar file for a pattern
@end direntry
@end format

@c man begin COPYRIGHT
Copyright (C) @value{copyrights-fastjar} Matthias Klose

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version. A copy of the license is included in the
@c man end
section entitled ``GNU General Public License''.
@ignore
@c man begin COPYRIGHT
man page gpl(7).
@c man end
@end ignore
@end ifinfo

@titlepage
@title GNU jar utilites
@author Brian Burns

@page
@vskip 0pt plus 1filll
Copyright @copyright{} @value{copyrights-gcj} Matthias Klose
@sp 2
For the @value{which-gcj} Version*
@sp 1
Published by the Free Software Foundation @*
59 Temple Place - Suite 330@*
Boston, MA 02111-1307, USA@*
@sp 1
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version. A copy of the license is included in the
section entitled ``GNU General Public License''.
@end titlepage
@contents
@page


@node Top
@top Introduction

This manual describes how to use @command{fastjar} and @command{grepjar}.

@menu
* Invoking fastjar::	Options supported by @command{fastjar}
* Invoking grepjar::    Options supported by @command{grepjar}
* Copying::		The GNU General Public License
@end menu

@node Invoking fastjar
@chapter Invoking fastjar

@c man title fastjar archive tool for Java archives

@c man begin DESCRIPTION fastjar

@code{fastjar} is an implementation of Sun's jar utility that comes with
the JDK, written entirely in C, and runs in a fraction of the time while
being feature compatible.

If any file is a directory then it is processed recursively.  The
manifest file name and the archive file name needs to be specified in
the same order the @option{-m} and @option{-f} flags are specified.

@c man end

@ignore
@c man begin SYNOPSIS fastjar
fastjar @option{-ctxu} [@option{OPTIONS}] [@var{jar-file}] [@var{manifest-file}] [@option{-C} @var{dir}] @var{files}@dots{}
@c man end
@c man begin SEEALSO fastjar
gcj(1), gij(1), grepjar(1)
and the Info entry for @file{gcj}.
@c man end
@end ignore

@c man begin OPTIONS fastjar

Exactly one of the following actions must be specified:

@table @gcctabopt

@item -c
Create new archive.

@item -t
List table of contents for archive.

@item -x
Extract named (or all) files from archive.

@item -u
Update existing archive.

@end table

The following parameters are optional:

@table @gcctabopt

@item -@@
Read the names of the files to add to the archive from stdin.  This
option is supported only in combination with @option{-c} or @option{-u}.
Non standard option added in the GCC version.

@item -C @var{directory}
Change to the @var{directory} and include the following file.

@item -E
Prevent fastjar from reading the content of a directory when specifying
one (and instead relying on the provided list of files to populate the
archive with regard to the directory entry). Non standard option added
in the GCC version.

@item -M
Do not create a manifest file for the entries.

@item -0
Store only; use no ZIP compression.

@item -V
@itemx --version
Display version information.

@item -f @var{archive}
Specify archive file name.

@item -m @var{manifest}
Include manifest information from specified @var{manifest} file.

@item -v
Generate verbose output on standard output.

@end table

All remaining options are considered to be names of files.

@c man end

@node Invoking grepjar
@chapter Invoking grepjar

@c man title grepjar search files in a jar file for a pattern

@c man begin DESCRIPTION grepjar

The @code{grepjar} program can be used to search files in a jar file for
a pattern.

@c man end

@ignore
@c man begin SYNOPSIS grepjar
grepjar [@option{-bcinsw}] @option{-e} @var{PATTERN} | @var{PATTERN} @var{files}@dots{}
@c man end
@c man begin SEEALSO grepjar
fastjar(1), gcj(1), gij(1), gfdl(7) and the Info entry for @file{gcj}.
@c man end
@end ignore

@c man begin OPTIONS grepjar

@table @gcctabopt
@item -b
Print byte offset of match.

@item -c
Print number of matches.

@item -i
Compare case-insensitively.

@item -n
Print line number of each match.

@item -s
Suppress error messages.

@item -w
Force @var{PATTERN} to match only whole words.

@item -e @var{PATTERN}
Use @var{PATTERN} as regular expression.

@item --help
Print help, then exit.

@item -V
@itemx --version
Print version number, then exit.
@end table

@c man end

@include gpl.texi

@bye
