I also find the way brag transforms file names quite annoying. Attached is patch which adds a comamnd line option "-k" to keep the original file names.
Cheers -Ralf. PS: the package could use a brushing up: DH compatibility level, Standards version, ...
diff -us brag-1.4.1/brag brag-1.4.1.new/brag --- brag-1.4.1/brag 2003-12-27 20:58:03.000000000 +0100 +++ brag-1.4.1.new/brag 2005-08-01 22:02:16.000000000 +0200 @@ -332,6 +332,7 @@ ;# different newsgroups variable combineServers 0 ;# Don't combine parts from different ;# servers + variable keepFileNames 0 ;# Don't keep original file names variable getSingle 0 ;# If true, get single-part msgs, too variable finishedThread 1 ;# Flag to signify that a thread is ;# ready for another task @@ -443,6 +444,7 @@ variable password variable combine variable combineServers + variable keepFileNames variable total variable max variable getSingle @@ -508,6 +510,9 @@ "-C" { set combineServers 1 } + "-k" { + set keepFileNames 1 + } "-A" { incr i loadAcceptFile [lindex $argList $i] @@ -1220,26 +1225,32 @@ proc brag::getDestination {file dir subject} { + variable keepFileNames + # The message subject might be well formatted, so we gan get a good file # name from it. Otherwise use the original file name - regsub -all -- { - } $subject "|" subject - regsub -all -- {y[eE]nc} $subject "" subject - set fields [split $subject "|"] - if {[llength $fields] > 1} { - set base [lindex $fields end] - if {[regexp {[0-9,]+ bytes} $base] || [regexp {[0-9,]+[KM]} $base]} { - set base [lindex $fields [expr {[llength $fields] - 2}]] - } - regsub "\\(\\)|\\\[\\\]" $base "" base - set base [file tail [string trim [string trim $base {~}]]] + if {$keepFileNames} { + set base $file } else { - set base [file tail [string trim $file {~}]] + regsub -all -- { - } $subject "|" subject + regsub -all -- {y[eE]nc} $subject "" subject + set fields [split $subject "|"] + if {[llength $fields] > 1} { + set base [lindex $fields end] + if {[regexp {[0-9,]+ bytes} $base] || [regexp {[0-9,]+[KM]} $base]} { + set base [lindex $fields [expr {[llength $fields] - 2}]] + } + regsub "\\(\\)|\\\[\\\]" $base "" base + set base [file tail [string trim [string trim $base {~}]]] + } else { + set base [file tail [string trim $file {~}]] + } + regsub -all -- { [0-9,]+ bytes} $base {} base + regsub -all -- { [0-9,]+[KM]B*} $base {} base + set base [string trim $base {"}] + regsub -all -- {[^a-zA-Z0-9_. ]} $base "_" base } - regsub -all -- { [0-9,]+ bytes} $base {} base - regsub -all -- { [0-9,]+[KM]B*} $base {} base - set base [string trim $base {"}] - regsub -all -- {[^a-zA-Z0-9_. ]} $base "_" base # If the file doesn't already exist in the destination directory, # return it, otherwise create a unique name based on the original @@ -1262,7 +1273,7 @@ puts stderr "brag - Grab multipart binaries from news server Usage: brag \[-s server\] \[-P port\] \[-g group\] \[-l user\] \[-p pass\] - \[-o dir\] \[-n n\] \[-q\] \[-u\] \[-c\] \[-C\] \[-X\] + \[-o dir\] \[-n n\] \[-q\] \[-u\] \[-c\] \[-C\] \[-k\] \[-X\] \[-a pattern \[-a pattern\] ...\] \[-r pattern \[-r pattern\] ...\] \[-A file\] \[-R file\] \[-t number\] \[ -m max \] or @@ -1280,6 +1291,7 @@ -u Save message subjects, too -c Combine parts even if they are from different groups -C Combine parts even if they are from different servers + -k Keep original filenames when possible -X Process single-part messages, too -a pattern Accept messages matching the pattern -r pattern Reject messages matching the pattern diff -us brag-1.4.1/brag.1 brag-1.4.1.new/brag.1 --- brag-1.4.1/brag.1 2003-12-27 20:58:03.000000000 +0100 +++ brag-1.4.1.new/brag.1 2005-08-01 22:06:00.000000000 +0200 @@ -58,6 +58,10 @@ .I ".sub" extension added .TP +.I "-k" +Keep original file names when possible, only rename when necessary to +avoid a collission with existing files +.TP .I "\-o dir" Set output directory to .I "dir"
signature.asc
Description: Digital signature