From: Shawn O. Pearce Date: Fri, 12 Oct 2007 04:54:15 +0000 (-0400) Subject: git-gui: Support LFs embedded in config file values X-Git-Tag: gitgui-0.9.0~28 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=85f7a94b3c1e4289827f2529d2e8447f3678c619;p=git-core%2Fgit.git 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 --- 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