Ignore:
Timestamp:
May 16, 2007, 7:58:32 PM (10 years ago)
Author:
eridius@…
Message:

Add -E flag to reinplace

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/port1.0/portutil.tcl

    r25147 r25251  
    662662# reinplace
    663663# Provides "sed in place" functionality
    664 proc reinplace {pattern args}  {
    665     if {$args == ""} {
    666         ui_error "reinplace: no value given for parameter \"file\""
    667         return -code error "no value given for parameter \"file\" to \"reinplace\""
    668     }
    669    
    670     foreach file $args {
     664proc reinplace {args}  {
     665    set extended 0
     666    while 1 {
     667        set arg [lindex $args 0]
     668        if {[string first - $arg] != -1} {
     669            set args [lrange $args 1 end]
     670            switch [string range $arg 1 end] {
     671                E {
     672                    set extended 1
     673                }
     674                - {
     675                    break
     676                }
     677                default {
     678                    error "reinplace: unknown flag '-$arg'"
     679                }
     680            }
     681        } else {
     682            break
     683        }
     684    }
     685    if {[llength $args] < 2} {
     686        error "reinplace ?-E? pattern file ..."
     687    }
     688    set pattern [lindex $args 0]
     689    set files [lrange $args 1 end]
     690   
     691    foreach file $files {
    671692        if {[catch {set tmpfile [mkstemp "/tmp/[file tail $file].sed.XXXXXXXX"]} error]} {
    672693                global errorInfo
     
    681702        }
    682703       
    683         if {[catch {exec sed $pattern < $file >@ $tmpfd} error]} {
     704        set cmdline sed
     705        if {$extended} {
     706            lappend cmdline -E
     707        }
     708        set cmdline [concat $cmdline [list $pattern < $file >@ $tmpfd]]
     709        if {[catch {eval exec $cmdline} error]} {
    684710                global errorInfo
    685711                ui_debug "$errorInfo"
Note: See TracChangeset for help on using the changeset viewer.