#!/usr/bin/tclsh
#
# The contents of this file are subject to the AOLserver Public License
# Version 1.1 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://aolserver.lcs.mit.edu/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is AOLserver Code and related documentation
# distributed by AOL.
# 
# The Initial Developer of the Original Code is America Online,
# Inc. Portions created by AOL are Copyright (C) 1999 America Online,
# Inc. All Rights Reserved.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU General Public License (the "GPL"), in which case the
# provisions of GPL are applicable instead of those above.  If you wish
# to allow use of your version of this file only under the terms of the
# GPL and not to allow others to use your version of this file under the
# License, indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by the GPL.
# If you do not delete the provisions above, a recipient may use your
# version of this file under either the License or the GPL.
#

# translate-tcl --
#
#	This Tcl script attempts to translates a new-style nsd.tcl into an 
#	old-style nsd.ini.
#
#       Note:  This script is entirely unsupported.
#
#  Usage:
#	tclsh bin/translate-tcl < nsd.tcl > nsd.ini
#


#
# ns_log --
#
#	Emulate ns_log command.
#

proc ns_log args {
	puts stderr $args
}

#
# ns_info --
#
#	Emulate ns_info command.
#

proc ns_info cmd {
	switch $cmd {
		hostname {
			set result [exec hostname]
		}
		home {
			set result [pwd]
		}
		default {
			set result ?
		}
	}
	return $result
}

#
# ns_config --
#
#	Emulate ns_config command.  Does not handle
#	the -bool, -int, etc. options yet.
#

proc ns_config {section key value {default ""}} {
	global sections

	set section [string tolower $section]
	set result $default
	if [info exists sections($section)] {
		foreach config $sections($section) {
			if ![string compare $key [lindex $config 0]] {
				set result [lindex $config 1]
				break
			}
		}
	}
	return $result
}

#
# ns_section --
#
#	Emulate ns_section command.
#

proc ns_section name {
	global section
	set section [string tolower $name]
}

#
# ns_param --
#
#	Emulate ns_param command.
#

proc ns_param {key value} {
	global sections section
	lappend sections($section) [list $key $value]
}


#
# Read and evaluate stdin and then dump out the 
# resulting sections in order.
#

eval [read stdin]

puts "#\n# Translated on [exec date]\n# from .tcl format with $argv0\n#"
puts "#\n# WARNING: .ini FILES ARE OBSOLETE.  USE .tcl FORMAT\n#"
foreach section [lsort [array names sections]] {
	puts "\n\[$section\]"
	foreach config $sections($section) {
		set key [lindex $config 0]
		set value [lindex $config 1]
		puts "$key=$value"
	}
}
