package provide stead 2.0

# Fichier fileutil.tcl
# 
# Quelques procédures utiles pour la manipulation de fichiers en TCL pur...



## file:fullname - find the full path of the file (from jstools...)
# 
proc file:fullname {f} {
   set current_dir [pwd]
   # cd [exec csh -c "cd [file dirname $f]; pwd"]
   cd [file dirname $f]
   set return_dir [pwd]
   cd $current_dir
   return "$return_dir/[file tail $f]"
}

## file:read filename :  retourne le contenu du fichier "filename"
# 
proc file:read {filename} {
    if {[catch "open $filename r" fid]} {
        puts "**ERREUR : fichier $filename non lisible."
        catch "close $fid"
        exit 1
    }
    set txt [read $fid]
    close $fid
    return $txt
} ;#endproc file:read

## file:write filename txt : 
# crée (ou écrase) le fichier "filename" avec la chaine passer en parametre
# 
proc file:write {filename txt} {
    if {[catch "open $filename w" fid]} {
        puts "**ERREUR : impossible d'écrire le fichier $filename."
        catch "close $fid"
        exit 1
    }
    puts $fid $txt                   ;# return ajouter automatiquement
    close $fid
} ;#endproc file:write

## file:replaceAll filename pat1 pat2
#    remplace toute chaine régulière $pat1 par $pat2 dans le fichier
#    filename.
# 
proc file:replaceAll {filename pat1 pat2} {
    set txt [string trimright [file:read $filename]] ;# vire epaces finaux
    regsub -all -- $pat1 $txt $pat2 txt
    file:write $filename $txt
} ;#endproc file:replaceAll

# ./
