;+ ; NAME: ; EXPAND_TILDE() ; ; PURPOSE: ; Expand tilde in UNIX directory names ; ; CALLING SEQUENCE: ; IDL> output=expand_tilde(input) ; ; INPUTS: ; INPUT = input file or directory name, scalar string ; ; OUTPUT: ; Returns expanded filename, scalar string ; ; EXAMPLES: ; output=expand_tilde('~zarro/test.doc') ; ---> output='/usr/users/zarro' ; ; NOTES: ; This version of EXPAND_TILDE differs from the version in the Solar ; Library in that it does not call the functions EXIST and IDL_RELEASE. ; However, it should work identically. ; PROCEDURE CALLS: ; None. ; REVISION HISTORY: ; Version 1, 17-Feb-1997, D M Zarro. Written ; Transfered from Solar Library W. Landsman Sep. 1997 ; Made more robust D. Zarro/W. Landsman Sep. 2000 ; Made even more robust (since things like ~zarro weren't being expanded) ; Zarro (EITI/GSFC, Mar 2001) ;- function expand_tilde,name if N_elements(name) EQ 0 then return,'' if size(name,/TNAME) ne 'STRING' then return,name tpos=strpos(name,'~') if tpos eq -1 then return,name apos = strpos(name,'~/') bpos = strpos(name,'/~') tilde=name if apos GT -1 then begin tilde = strmid(name,0,apos+1) post = strmid(name,apos+1,strlen(name)) endif else begin if bpos gt -1 then begin pre = strmid(name,0,bpos+1) tilde = strmid(name,bpos+1,strlen(name)) endif endelse error=0 catch,error if error ne 0 then begin catch,/cancel return,name endif cd,tilde,curr=curr cd,curr,curr=dcurr tname = dcurr if N_elements(pre) GT 0 then tname = pre+tname else $ if N_elements(post) GT 0 then tname = tname + post return,tname & end