diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-10-12 00:54:15 -0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-10-12 00:54:15 -0400 |
commit | 85f7a94b3c1e4289827f2529d2e8447f3678c619 (patch) | |
tree | 07b4342c17673e451fa2a64e11360d009a413a85 | |
parent | f00d504a6fcf29944311a497d0eb76f0fe5ef8f0 (diff) | |
download | git-85f7a94b3c1e4289827f2529d2e8447f3678c619.tar.gz |
git-gui: Support LFs embedded in config file values
Using the new --null option added to git-config in git 1.5.3 we
can safely accept LFs that are embedded in configuration options.
This does require a completely different configuration file parser
then the pre 1.5.3 version as we are splitting on very different
values.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-x | git-gui.sh | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/git-gui.sh b/git-gui.sh index cfed62da44..a6e2d57a2f 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -749,6 +749,26 @@ unset -nocomplain idx fd ## config file parsing git-version proc _parse_config {arr_name args} { + >= 1.5.3 { + upvar $arr_name arr + array unset arr + set buf {} + catch { + set fd_rc [eval [list git_read config --null --list] $args] + fconfigure $fd_rc -translation binary + set buf [read $fd_rc] + close $fd_rc + } + foreach line [split $buf "\0"] { + if {[regexp {^([^\n]+)\n(.*)$} $line line name value]} { + if {[is_many_config $name]} { + lappend arr($name) $value + } else { + set arr($name) $value + } + } + } + } default { upvar $arr_name arr array unset arr |