	subroutine build_filename(result,l_result,name,default)
c
c	U*nix version
c	
	implicit none

	include 'parameters.inc'

	character*(*) result,name,default
	character*(max_line_length) d_dev,d_name,d_ext,d_dir,d_node,blank
	character*(max_line_length) n_dev,n_name,n_ext,n_dir,n_node
	integer i,j,k
	integer n_length,d_length,r_length,l_result

	do i=1,max_line_length
		blank(i:i)=char(0)
	enddo
	d_node=blank
	d_dev=blank
	d_dir=blank
	d_name=blank
	d_ext=blank
	n_node=blank
	n_dev=blank
	n_dir=blank
	n_name=blank
	n_ext=blank
	d_length=len(default)
	n_length=len(name)
c
c	backscan for ext terminator "." before device/directory terminator
c
	do i=d_length,1,-1
		if((default(i:i).eq.'/'))goto 100
		if(default(i:i).eq.'.')then
			d_ext(1:(d_length-i+1))=default(i:d_length)
			d_length=i-1
			goto 100
		endif
	enddo
100	continue
	do i=n_length,1,-1
		if((name(i:i).eq.'/'))goto 101
		if(name(i:i).eq.'.')then
			n_ext(1:(n_length-i+1))=name(i:n_length)
			n_length=i-1
			goto 101
		endif
	enddo
101	continue
c
c	backscan for device/directory terminator "/"
c
	do i=d_length,1,-1
		if((default(i:i).eq.'/'))then
			d_name(1:(d_length-i))=default(i+1:d_length)
			d_length=i
			goto 110
		endif
	enddo
	if(d_length.gt.0)then
		d_name(1:d_length)=default(1:d_length)
		d_length=0
	endif
110	continue
	do i=n_length,1,-1
		if((name(i:i).eq.'/'))then
			n_name(1:(n_length-i))=name(i+1:n_length)
			n_length=i
			goto 111
		endif
	enddo
	if(n_length.gt.0)then
		n_name(1:n_length)=name(1:n_length)
		n_length=0
	endif
111	continue
c
c	next is directory
c
	if(d_length.gt.0)then
		if(default(d_length:d_length).eq.'/')
	1		d_dir(1:d_length)=default(i:d_length)
	endif
	if(n_length.gt.0)then
		if(name(n_length:n_length).eq.'/')
	1		n_dir(1:n_length)=name(1:n_length)
	endif
c
c	build result file name
c
	r_length=1
	if(ichar(n_dir(1:1)).ne.0)then
		i=1
		do while(ichar(n_dir(i:i)).ne.0)
			result(r_length:r_length)=n_dir(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	elseif(ichar(d_dir(1:1)).ne.0)then
		i=1
		do while(ichar(d_dir(i:i)).ne.0)
			result(r_length:r_length)=d_dir(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	endif
	if(ichar(n_name(1:1)).ne.0)then
		i=1
		do while(ichar(n_name(i:i)).ne.0)
			result(r_length:r_length)=n_name(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	elseif(ichar(d_name(1:1)).ne.0)then
		i=1
		do while(ichar(d_name(i:i)).ne.0)
			result(r_length:r_length)=d_name(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	endif
	if(ichar(n_ext(1:1)).ne.0)then
		i=1
		do while(ichar(n_ext(i:i)).ne.0)
			result(r_length:r_length)=n_ext(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	elseif(ichar(d_ext(1:1)).ne.0)then
		i=1
		do while(ichar(d_ext(i:i)).ne.0)
			result(r_length:r_length)=d_ext(i:i)
			i=i+1
			r_length=r_length+1
		enddo
	endif
	l_result=r_length-1
	return
	end
