From: Sergey Matveev Date: Fri, 3 Oct 2025 18:12:57 +0000 (+0300) Subject: Escape filename-like lines X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a11ba10500ff2b40d5cee8aab9feef363e1f36a9e9573704748787917f665735;p=dsc.git Escape filename-like lines --- diff --git a/dsc b/dsc index 8a78b28..e6b411a 100755 --- a/dsc +++ b/dsc @@ -113,6 +113,17 @@ proc assure-exists {opt} { } } +proc txtar-filename {line} { + if { + [string length $line] > 6 && + [string range $line 0 2] == "-- " && + [string range $line end-2 end] == " --" + } { + return [string range $line 3 end-3] + } + return "" +} + set opt [lindex $argv 1] switch [lindex $argv 0] { list { @@ -254,7 +265,14 @@ switch [lindex $argv 0] { foreach dir $dirs { foreach fn [walk $dir f] { puts "-- [string range $fn [string length $Saved]+1 end] --" - puts -nonewline [fileread $fn] + set fh [open $fn] + while {[gets $fh line] >= 0} { + if {[txtar-filename $line] != ""} { + set line "-- $line --" + } + puts $line + } + close $fh } } } @@ -278,18 +296,17 @@ switch [lindex $argv 0] { close $fh } while {[gets stdin line] >= 0} { - if { - [string length $line] > 6 && - [string range $line 0 2] == "-- " && - [string range $line end-2 end] == " --" - } { + set newFn [txtar-filename $line] + if {$newFn == ""} { + lappend lines $line + } elseif {[string range $newFn 0 2] == "-- "} { + lappend lines $newFn + } else { if {$fn != ""} { filewrite $fn $lines set lines [list] } - set fn [string range $line 3 end-3] - } else { - lappend lines $line + set fn $newFn } } if {$fn != ""} {