Guncat was designed to tackle a problem encountered with (partically) PGP encrypted files (which may be encountered in, e.g., mailboxes). Tools to process text-files (like grep(1), or less(1)) may be used to process those files, but standard tools like cat(1) leave PGP encrypted sections within such files as-is. As a consequence, browsing the `real' contents (i.e., clear-text sections and the unencrypted contents of PGP encrypted sections) of those files is difficult.
Guncat acts comparably to cat, but unencrypts encrypted sections encountered in the files processed by guncat, copying the unencrypted information to guncat's standard output stream, which may thereupon be processed by other tools.
PGP/GPG encrypted sections are surrounded by
-----BEGIN PGP MESSAGE-----and
-----END PGP MESSAGE-----markers. Whenever guncat encounters such sections they will be processed by gpg(1). Gpg needs a passphrase to unencrypt such sections. The required passphrase may be provided to guncat, which then forwards the passphrase to gpg.
When providing an incorrect passphrase to guncat two additional attempts to provide the correct passphrase are provided. If the third attempt also fails, guncat terminates. Furthermore, when an incorrect passphrase is provided, the currently processed file must be reset to the beginning of the encrypted section. This implies that the processed file must be seekable. If the file does not support seeking operations then guncat also terminates.
Guncat returns 0 to the operating system unless an error occurs (0 is also
returned when the option
--show-gpg) is specified.
When no file arguments are provided (or when - is provided) the standard input stream is processed.
--passphrase is specified the first line of the first file
that is processed is read as the passphrase to use. When a thus specified
passphrase is incorrect, guncat terminates.
Any other argument is considered a file (path specifications are allowed) to be processed in sequence by guncat.
If an argument does not refer to a readable file, guncat terminates with an error message.
Where available, single letter options are listed between parentheses following their associated long-option variants. Single letter options require arguments if their associated long options require arguments as well.
--errors-OKthe input s continue to be processed even if gpg returns a non-zero exit value.
optionto gpg's call. If the option contains blanks, surround
optionby single or double quotes. Option
gpg-optionmay repeatedly be specified.
--passphrasecan be specified to read the passphrase from the first line of the first input stream that is read by guncat. In that case the input stream's first line is (of course) not written to the output stream. When the
--passphraseoption is specified and the provided password is incorrect, guncat terminates.
--time-limitis used to specify the max. time in seconds that gpg is allowed to run while decrypting a single encrypted section. By default no time limit is used. This option is useful when the file to process might contain errors in encrypted sections (like a missing
END PGP MESSAGEline).
--no-ttyis not specified when calling gpg. By default it is specified.
--quietis specified; with
--verbose 0gpg's option
--no-verboseis specified; otherwise
--verboseis specified once or twice.
cat(1), gpg(1), grep(1), less(1).