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 like 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 will then forward the passphrase to gpg, or gpg will itself ask for the required passphrase.
When providing an incorrect passphrase to guncat two additional attempts to provide the correct passphrase are granted. 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 usage info (option
--help), guncat's version number (option
--version), or the configured gpg call (option
When no file arguments are provided (or when - is provided) the standard
input stream is processed. Note that when the standard input stream is
specified and option
--passphrase is specified the standard input stream's
first line is used as gpg's passphrase.
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.
--batchis omitted when calling gpg.
optionto gpg's call. If the option contains blanks, surround
optionby single or double quotes.
--no-ttyis omitted when calling gpg.
--quietis specified; with
--verbose 0gpg's option
--no-verboseis specified; otherwise
--verboseis specified once or twice.
cat(1), gpg(1), gpg-agent(1), grep(1), less(1).