#!/usr/local/bin/tcl

# free_space
#
# Copyright 1992, Tom Poindexter
#
# this tcl script prints the amount of database free space as a percentage
# the default server is used (DSQUERY).
# not much error checking is done.

# usage: free_space userid password
#

global sybmsg

set uid [lindex $argv 0]
set pw  [lindex $argv 1]

set dbnames ""

# normally, i would catch errors from sybconnect
# in this case, just let tcl print an error & exit

set syb [sybconnect $uid $pw]

sybuse $syb master

sybsql $syb "sp_helpdb"
set row [sybnext $syb]

while {[string compare $sybmsg(nextrow) REG_ROW] == 0} {
  if "[regexp model $row] == 0" {
    lappend dbnames [lindex $row 0]
  }
  set row [sybnext $syb]
}

foreach db $dbnames {
  sybcancel $syb
  sybuse $syb $db
  sybsql $syb "sp_spaceused"
  set row [sybnext $syb]
  set dbsize [lindex [lindex $row 1] 0]
  sybnext $syb
  set row [sybnext $syb]
  set resrvd [lindex [lindex $row 0] 0]
  set per [format "%4.1f%%" \
	    [expr "(( $dbsize * 1024.0 ) - $resrvd ) / ( $dbsize * 10.240 )"] ]
  echo "Database ${db}: $dbsize MB total, $resrvd KB Used, $per free"

}

sybclose $syb

exit

# finis
