pro read_sxt, filelist, dset, index, data, outsize=outsize
;+
;   Name: read_sxt
;
;   Purpose: read various types of sxt files (sda, old fits etc)->standard struct
;
;   Method:
;      For 'standard' sxt formats, call rd_xda
;      For FITS, call mreadfits, struct2ssw, rederive some info from fits
;
;   History:
;      10-March-1998 - S.L.Freeland - standard interface to several sxt formats
;      19-May-1999 - S.L.Freeland - permit NEW fits as well as OLD fits
;-
if n_params() lt 3 or (1-data_chk(filelist,/string)) or (n_elements(dset) eq 0 )then begin 
   box_message,['Need at least filelist, dset and an output parameter...',$
                'IDL> read_sxt, filelist, dset, index [,data] [outsize=outsize]']
   return
endif

break_file,filelist,ll,pp,ff,ee,vv

case 1 of 
   ee(0) eq '.fits' or ee(0) eq '.fts': begin 
      if dset eq -1 then dset=lindgen(n_elements(filelist))
      mreadfits, filelist(dset), index, data, outsize=outsize, $ ; fits reader
                   nodata=(n_params() le 3),/add_standard
      index=struct2ssw(index)                                    ; 1st pass rationalize
      if gt_tagval(index(0),/cdelt1,missing=0.) eq 0 then begin  ; OLD sxt fits
         pborx=pb0r(index(0).date_obs,/arcsec)
         radius=gt_tagval(index(0),/radius)
         index.cdelt1=pborx(2)/radius
         index.cdelt2=pborx(2)/radius
      endif
      if gt_tagval(index(0),/FILTER_D$B,missing='')  ne '' then begin  
         index.wavelnth=gt_tagval(index,/FILTER_D$B,missing='')
         index.telescop='Yohkoh'
         index.instrume='SXT'
      endif
   endcase
   else: begin 
      estat=execute('rd_xda,filelist,dset,index,data,nodata=n_params() lt 4')
      if not estat then begin 
         box_message,'rd_xda problem - you need SXT in $SSW_INSTR list for this format'
         return
      endif
   endcase
endcase

index=struct2ssw(index)        ; fill in missing tags

return
end    
