#! /bin/sh # src/pl/tcl/modules/pltcl_delmod.in # # Start tclsh \ exec @TCLSH@ "$0" "$@" # # Code still has to be documented # #load /usr/local/pgsql/lib/libpgtcl.so package require Pgtcl # # Check for minimum arguments # if {$argc < 1} { puts stderr "" puts stderr "usage: pltcl_delmod dbname \[options\] modulename \[...\]" puts stderr "" puts stderr "options:" puts stderr " -host hostname" puts stderr " -port portnumber" puts stderr "" exit 1 } # # Remember database name and initialize options # set dbname [lindex $argv 0] set options "" set errors 0 set opt "" set val "" set i 1 while {$i < $argc} { if {[string compare [string index [lindex $argv $i] 0] "-"] != 0} { break; } set opt [lindex $argv $i] incr i if {$i >= $argc} { puts stderr "no value given for option $opt" incr errors continue } set val [lindex $argv $i] incr i switch -- $opt { -host { append options "-host \"$val\" " } -port { append options "-port $val " } default { puts stderr "unknown option '$opt'" incr errors } } } # # Final syntax check # if {$i >= $argc || $errors > 0} { puts stderr "" puts stderr "usage: pltcl_delmod dbname \[options\] modulename \[...\]" puts stderr "" puts stderr "options:" puts stderr " -host hostname" puts stderr " -port portnumber" puts stderr "" exit 1 } proc delmodule {conn modname} { set xname $modname regsub -all {\\} $xname {\\} xname regsub -all {'} $xname {''} xname set found 0 pg_select $conn "select * from pltcl_modules where modname = '$xname'" \ MOD { set found 1 break; } if {!$found} { puts "Module $modname not found in pltcl_modules" puts "" return } pg_result \ [pg_exec $conn "delete from pltcl_modules where modname = '$xname'"] \ -clear pg_result \ [pg_exec $conn "delete from pltcl_modfuncs where modname = '$xname'"] \ -clear puts "Module $modname removed" } set conn [eval pg_connect $dbname $options] while {$i < $argc} { delmodule $conn [lindex $argv $i] incr i } pg_disconnect $conn