From 85f7a94b3c1e4289827f2529d2e8447f3678c619 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 12 Oct 2007 00:54:15 -0400 Subject: [PATCH] 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 --- git-gui.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/git-gui.sh b/git-gui.sh index cfed62da4..a6e2d57a2 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 -- 2.30.2