- #!/bin/sh
- # 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_listmod 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 {$errors > 0} {
- puts stderr ""
- puts stderr "usage: pltcl_listmod dbname [options] [modulename [...]]"
- puts stderr ""
- puts stderr "options:"
- puts stderr " -host hostname"
- puts stderr " -port portnumber"
- puts stderr ""
- exit 1
- }
- proc listmodule {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
- }
- puts "Module $modname defines procedures:"
- pg_select $conn "select funcname from pltcl_modfuncs
- where modname = '$xname' order by funcname" FUNC {
- puts " $FUNC(funcname)"
- }
- puts ""
- }
- set conn [eval pg_connect $dbname $options]
- if {$i == $argc} {
- pg_select $conn "select distinct modname from pltcl_modules
- order by modname"
- MOD {
- listmodule $conn $MOD(modname)
- }
- } else {
- while {$i < $argc} {
- listmodule $conn [lindex $argv $i]
- incr i
- }
- }
- pg_disconnect $conn