############################################################################
#
#	File:     hostname.icn
#
#	Subject:  Procedures to produce host name
#
#	Author:   Richard L. Goerwitz
#
#	Date:     April 30, 1993
#
############################################################################
#
#   This file is in the public domain.
#
############################################################################
#
#	Version:  1.1
#
############################################################################
#  
#  This procedure determines the name of the current host.  It takes no
#  arguments.  Aborts with an error message if the necessary commands
#  are not found.  Geared specifically for UNIX machines.
#
############################################################################
#
#  Requires: UNIX, pipes
#
############################################################################

procedure hostname()
    local fname, get_name

    static h_name
    initial {
	(find("UNIX",&features), find("pipes",&features)) |
	    stop("hostname:  works only under UNIX")
	close(open(fname <- "/usr/bin/hostname"|"/bin/uuname"|"/bin/uname"))
        fname := {
	    case \fname of {
		"/usr/bin/hostname" :  "/usr/bin/hostname"
		"/usr/bin/uuname"   :  "/usr/bin/uuname -l"
		"/bin/uname"        :  "/bin/uname -n"
            } | "/usr/bin/uuname -l"
	}
	get_name := open(fname, "pr") |
	    stop("hostname:  can't find hostname/uuname/uname commands")
        h_name := !get_name
        close(get_name)
    }

    return h_name

end
