brag(1) Grab multipart binaries from news server


brag [-s server] [-P port] [-g group] [-l user] [-p pass] [-q] [-u] [-o dir] [-n num] [-c] [-C] [-X] [-a pattern [-a pattern] ...] [-r pattern [-r pattern] ...] [-A file] [-R file] [-t n] [-b break] [-m max]


brag -L [-s server] [-P port] [-l user] [-p pass]


brag downloads and assembles multipart binaries from an NNTP server. Attachments encoded with uuencode, Base64 or yenc are supported.


Just print a list of groups available at the server
-s server
Set news server to server
-P port
Set TCP port to port
-g group
Set newsgroup to group
-l user
Set user name to user. Setting this option turns NNTP authentication on. The password can be specified using the -p command line option, or using a passwod file (see later)
-p pass
Set password to pass.
Be silent: do not display progress information
Save subjects together with the assembled binaries. Subject files have the same name as the binary, with .sub extension added
Keep original file names when possible, only rename when necessary to avoid a collission with existing files
-o dir
Set output directory to dir
-n num
Start with message number num
Combine parts, even if they are from different newsgroups. Also, an article will be downloaded only once, even if it was crossposted to more than one newsgroups
Combine parts, even if they are from different news servers
Process single-part messages, too
-a pattern
Add pattern to the list of accept patterns. See next section on accept/reject patterns
-r pattern
Add pattern to the list of reject patterns
-A file
Read accept patterns from this file
-R file
Read reject patterns from this file
-t n
Use n number of parallel connections to the server. Default: 2. Set to 4 or more if you have a high speed network connection
-b break
Specify "break factor": the number of milliseconds to wait between retrieving lines from the server. Useful to share a low-speed connection with other applications
-m max
Specify the maximum number of messages to download


The subjects of the messages to be downloaded are matched against the list of accept and/or reject patterns if specified on the command line or in the accept/reject files (see later). Only articles matching at least one of the accept patterns will be accepted. Similarly, articles matching one of the reject patterns will be rejected.

Match operations are performed as in csh(1). For example, to accept all files with extension mp5, specify

     -a '*.mp5*'

on the command line. Note the quotes (we do not want the shell to process the pattern) and the second "*" (we are matching against subject lines, not file names).



Grabbed files are collected in ~/.brag/<server>/<group>/finished (if not specified otherwise using the -o command line option). If combining parts from multiple servers ("-C" option), the results are collected in ~/.brag/all-servers/<group>/finished.


Work files are kept in ~/.brag/<server>/<group>/unfinished or in ~/.brag/all-servers/<group>/unfinished if the "-C" option is used. It is recommended to regularly purge these directories by removing old files and subdirectories. What "old" means depends on the newsgroup's traffic; one week can be a good approximation.


Passwords can be specified on the command line, or for extra security, in password files. Each server can have its own password file, named ~/.brag/<server>/passwd. The format of these files is:




Passwords are not encoded. Take care of the file ownership and permissions.


If a file called accept is present in ~/.brag/<server>/<group>, its lines are added to the list of accept patterns. Empty ones and comments starting with "#" are ignored. Similarly, the contents of the file named reject will be added to the list of reject patterns.


Usage errors
Network errors
File system errors


If not specified on the command line, the environment variable NNTPSERVER identifies the server, while NNTPGROUP the group to read the news from.


brag is written in Tcl; you need tclsh(1) version 8.0 or later. For the actual decoding of dowloaded parts uudeview(1) ( is used.


Akos Polster ([email protected]) and many others - see README for the complete list of contributors.