#!/usr/local/bin/tclsh

if {[llength $argv]<1} {
	puts "Usage: vfile <file-name>"
	exit 1
}

if {![info exists env(TKAPPS)]} {
	if {[file exists $env(HOME)/TKAPPS]} {
		set env(TKAPPS) $env(HOME)/TKAPPS
	} elseif {[file isdirectory /opt/TKAPPS]} {
		set env(TKAPPS) /opt/TKAPPS
	} elseif {[file isdirectory /usr/local/TKAPPS]} {
		set env(TKAPPS) /usr/local/TKAPPS
	} elseif {[file isdirectory /Apps/TKAPPS]} {
		set env(TKAPPS) /Apps/TKAPPS
	} else {
		puts stdout "Could not find where TKAPPS is installed"
		puts stdout "Please define the TKAPPS environment variable"
		exit 1
	}
}
set auto_path [linsert $auto_path 0 $env(TKAPPS)/lib]

foreach name $argv {

	set type ""

	#
	#	Try to identify the file by extension mapping
	#
	set ext [string tolower [file extension $name]]
	if {$ext!="" && $ext!="."} {
		foreach filename "$env(HOME)/.mime.types
				/etc/mime.types
				$env(TKAPPS)/etc/mime.typ" {
			if {![file exists $filename]} { continue }
			set fp [open $filename r]
			while {[gets $fp line]>=0} {
				regsub -all {[	 ]+} $line { } line
				foreach mimeext [lrange [split $line] 1 end] {
					if {$ext==".$mimeext"} {
						set type [lindex [split $line] 0]
						break
					}
				}
				if {$type!=""} {break}
			}
			close $fp
			if {$type!=""} {break}
		}
	}

	#
	#	Try a content based detection
	#
	if {$type==""} {
		set mtype [lindex [exec file -m $env(TKAPPS)/etc/magic $name] 1]
		foreach filename "$env(HOME)/.magic.types
				/etc/magic.types
				$env(TKAPPS)/etc/magic.typ" {
			if {![file exists $filename]} { continue }
			set fp [open $filename r]
			while {[gets $fp line]>=0} {
				regsub -all {[	 ]+} $line { } line
				foreach magictype [lrange [split $line] 1 end] {
					if {$mtype=="$magictype"} {
						set type [lindex [split $line] 0]
						break
					}
				}
				if {$type!=""} {break}
			}
			close $fp
			if {$type!=""} {break}
		}
	}
	
	#
	#	Give up and set the type to unknown
	#
	if {$type==""} { set type "unknown" }

	#
	#	Determine the icon associated with the type
	#
	set type_main [lindex [split $type "/"] 0]
	set icon ""
	foreach filename "$env(HOME)/.icon.types
			/etc/icon.types
			$env(TKAPPS)/etc/icon.typ" {
		if {![file exists $filename]} { continue }
		set fp [open $filename r]
		while {[gets $fp line]>=0} {
			set fields [split $line ";"]
			set mimetype [string trim [string tolower [lindex $fields 0]]]
			if {$type==$mimetype} {
				set icon [string trim [lindex $fields 1]]
				break
			}
			set mimetype [split $mimetype "/"]
			set mimetype_main [lindex $mimetype 0]
			set mimetype_sub [lindex $mimetype 1]
			if {$type_main==$mimetype_main && $mimetype_sub=="*"} {
				set icon [string trim [lindex $fields 1]]
				break
			}
		}
		close $fp
		if {$icon!=""} {break}
	}
	if {$icon==""} {set icon "unknown.xbm"}
	
	puts "$name $type $icon"

}

exit 0
