Revision: 90174 http://trac.macports.org/changeset/90174 Author: jeremyhu@macports.org Date: 2012-02-24 22:30:03 -0800 (Fri, 24 Feb 2012) Log Message: ----------- merge r89839 from trunk: Add an option to reinplace that will allow choosing a specific locale for sed to operate under. Revision Links: -------------- http://trac.macports.org/changeset/89839 Modified Paths: -------------- branches/release_2_0/base/src/port1.0/portutil.tcl Property Changed: ---------------- branches/release_2_0/base/ Property changes on: branches/release_2_0/base ___________________________________________________________________ Modified: svn:mergeinfo - /branches/gsoc08-privileges/base:37343-46937 /branches/gsoc09-logging/base:51231-60371 /branches/universal-sanity/base:51872-52323 /branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659 /trunk/base:79584,79586,79590-79594,79599-79600,79649,79686,79689,79692,79750,79762,79771-79774,79782,79787,79864,79943,80069,80088,80178,80220,80222,80224,80226,80229,80245,80248,80287,80335,80443,80581,80583,80586,80779,80797-80798,80894,80928,80932,80934,80969,80971,81005,81119,81146,81171,81234,81269,81361,81371,81414-81415,81454,81464,81467,81475,81522,81556-81558,81562,81565,81567,81577,81630,81657,81830-81832,82111,82135,82767,82921,82924,82947,83136,83149,83267,83270-83271,83391,83395,83443,83471,83537,84351,84908-84909,84931,84937,86131,88032,88045,88179,88185,89429,89612,89894,89988,89993-89994,90000,90002,90004,90010,90020,90032,90054,90056,90058,90075,90082-90084,90088,90100,90107,90112,90151,90154 /users/perry/base-bugs_and_notes:45682-46060 /users/perry/base-select:44044-44692 + /branches/gsoc08-privileges/base:37343-46937 /branches/gsoc09-logging/base:51231-60371 /branches/universal-sanity/base:51872-52323 /branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659 /trunk/base:79584,79586,79590-79594,79599-79600,79649,79686,79689,79692,79750,79762,79771-79774,79782,79787,79864,79943,80069,80088,80178,80220,80222,80224,80226,80229,80245,80248,80287,80335,80443,80581,80583,80586,80779,80797-80798,80894,80928,80932,80934,80969,80971,81005,81119,81146,81171,81234,81269,81361,81371,81414-81415,81454,81464,81467,81475,81522,81556-81558,81562,81565,81567,81577,81630,81657,81830-81832,82111,82135,82767,82921,82924,82947,83136,83149,83267,83270-83271,83391,83395,83443,83471,83537,84351,84908-84909,84931,84937,86131,88032,88045,88179,88185,89429,89612,89839,89894,89988,89993-89994,90000,90002,90004,90010,90020,90032,90054,90056,90058,90075,90082-90084,90088,90100,90107,90112,90151,90154 /users/perry/base-bugs_and_notes:45682-46060 /users/perry/base-select:44044-44692 Modified: branches/release_2_0/base/src/port1.0/portutil.tcl =================================================================== --- branches/release_2_0/base/src/port1.0/portutil.tcl 2012-02-25 01:31:42 UTC (rev 90173) +++ branches/release_2_0/base/src/port1.0/portutil.tcl 2012-02-25 06:30:03 UTC (rev 90174) @@ -873,13 +873,25 @@ # Provides "sed in place" functionality proc reinplace {args} { + global env set extended 0 set suppress 0 + set oldlocale_exists 0 + set oldlocale "" + set locale "" while 1 { set arg [lindex $args 0] if {[string index $arg 0] eq "-"} { set args [lrange $args 1 end] switch -- [string range $arg 1 end] { + locale { + set oldlocale_exists [info exists env(LC_CTYPE)] + if {$oldlocale_exists} { + set oldlocale $env(LC_CTYPE) + } + set locale [lindex $args 0] + set args [lrange $args 1 end] + } E { set extended 1 } @@ -928,15 +940,32 @@ lappend cmdline -n } set cmdline [concat $cmdline [list $pattern < $file >@ $tmpfd]] + if {$locale != ""} { + set env(LC_CTYPE) $locale + } if {[catch {eval exec $cmdline} error]} { global errorInfo ui_debug "$errorInfo" ui_error "reinplace: $error" file delete "$tmpfile" + if {$locale != ""} { + if {$oldlocale_exists} { + set env(LC_CTYPE) $oldlocale + } else { + unset env(LC_CTYPE) + } + } close $tmpfd return -code error "reinplace sed(1) failed" } + if {$locale != ""} { + if {$oldlocale_exists} { + set env(LC_CTYPE) $oldlocale + } else { + unset env(LC_CTYPE) + } + } close $tmpfd set attributes [file attributes $file]