pro diva_file,os_name,def_path,def_file,good_f

CASE os_name OF
    'X':    	path = def_path[0]    
    'WIN':  	path = def_path[1]
ENDCASE

f=dialog_pickfile(path=path,file=def_file,/multiple)	

;get file extensions - we only want '.dat', '.img' and '.raw' in good_f
;filter others out
ext=strarr(n_elements(f))
for i=0,n_elements(f)-1 do ext[i]=strmid(f[i],strpos(f[i],'.',/reverse_search)+1)

if (f[0] ne '') then begin
    any_good_f = total(where(ext eq 'dat' or ext eq 'img' or ext eq 'raw'   $
    	    	    	    	or ext eq 'fit' or ext eq 'fits'))
    if (any_good_f ne -1) then begin
    	good_f=      f(where(ext eq 'dat' or ext eq 'img' or ext eq 'raw'   $
    	    	    	    	or ext eq 'fit' or ext eq 'fits'))
    endif else  good_f = ''
endif else begin
    good_f=''
    return
endelse

end
;------------------------------------------------------------------------------;
Pro diva_file__define
;------------------------------------------------------------------------------;
;PURPOSE:
;   define named structure: 'diva_file'
;------------------------------------------------------------------------------;
junk = {     diva_file,	    	    	    	                            $
    	    	    	f   	    :'',     	                            $
		    	pathname    :'',	                            $
		    	filename    :'',	                            $
		    	file_str    :'',	                            $
		    	file_ext    :'',	                            $
		    	file_unit   :0	    	                            $
    	}
End
;------------------------------------------------------------------------------;
;------------------------------------------------------------------------------;
;------------------------------------------------------------------------------;
Pro diva_file_init, diva_file, f, pathname=pathname,    	    	    $
    	    filename=filename,file_str=file_str, file_ext=file_ext, 	    $
	    file_unit=file_unit
;------------------------------------------------------------------------------;
;PURPOSE:
;   assign real values to diva_file structure tags.
;------------------------------------------------------------------------------;
If n_elements(f) gt 0 Then Begin
    ;where f = full_filename    	eg; '/home/jar24/data/images/data.raw'
    diva_file.f=f

    ;pathname   	    	    	eg; '/home/jar24/data/images/'
    pathname=strmid(f,0,strpos(f,'/',/reverse_search)+1)  
    diva_file.pathname=pathname

    ;filename   	    	    	eg; 'data.raw'
    filename=strmid(f,  strpos(f,'/',/reverse_search)+1) 
    diva_file.filename=filename

    ;remove pathname and extension    	eg; 'data'
    file_str=strmid(filename,0,strpos(filename,'.',/reverse_search))
    diva_file.file_str=file_str

    ;extension  	    	    	eg; 'raw'
    file_ext=strmid(f,  strpos(f,'.',/reverse_search)+1)  
    diva_file.file_ext=file_ext

EndIf Else Begin

    If Keyword_Set(pathname)  Then diva_file.pathname  = pathname
    If Keyword_Set(filename)  Then diva_file.filename  = filename
    If Keyword_Set(file_str)  Then diva_file.file_str  = file_str
    If Keyword_Set(file_ext)  Then diva_file.file_ext  = file_ext
    If Keyword_Set(file_unit) Then diva_file.file_unit = file_unit
    
EndElse    
End;---------------------------------------------------------------------------;
;------------------------------------------------------------------------------;
