;+ ; Project : HESSI ; ; Name : SOCK_SAME ; ; Purpose : Check if local and remote copies of files ; are the same (in size) ; ; Category : utility system sockets ; ; Syntax : IDL> same=sock_same(rfile,lfile,lsize=lsize, rsize=rsize) ; ; Example : IDL> same=sock_same('http://server.domain/filename','filename') ; ; Inputs : RFILE, LFILE = remote and local file names ; ; Outputs : SAME = 1/0 if same or different ; ; Keywords : LSIZE, RSIZE = local and remote sizes of files ; ; History : 6-Mar-2006, D.M. Zarro (L-3Com/GSFC) - Written ; ; Contact : DZARRO@SOLAR.STANFORD.EDU ;- function sock_same,rfile,lfile,lsize=lsize,rsize=rsize,err=err,_extra=extra ;-- usual error checks err='' if is_blank(lfile) or is_blank(rfile) then begin err='Missing input filenames' return,0b endif if n_elements(lfile) ne n_elements(rfile) then begin err='# of local and remote filenames do not match' return,0b endif ;-- create a http object and loop for each file ; to check local size against remote file by ; using HEAD requests nfiles=n_elements(lfile) http=obj_new('http') lsize=-1+fltarr(nfiles) & rsize=lsize same=bytarr(nfiles) for i=0,nfiles-1 do begin lsize[i]=file_size(lfile[i]) if lsize[i] lt 0 then continue http->head,rfile[i],size=bsize,err=err if is_blank(err) then rsize[i]=bsize same[i]=lsize[i] eq rsize[i] endfor if nfiles eq 1 then begin same=same[0] & lsize=lsize[0] & rsize=rsize[0] endif obj_destroy,http return,same end