pro rd_spc_rdmap, lun_filnam, header, roadmap
;+
;	NAME:
;		rd_spc_rdmap v 0.9
;
;	PURPOSE:
;		Read the roadmap section of record locations
;
;	CALLING SEQUENCE:
;		rd_spc_rdmap, lun_filnam, header, roadmap
;
;	INPUT:
;		lun_filnam	input file specification or the
;				unit number of an opened BTH(SPC) file
;
;               Header 		The SPC_header record for the current file.
;
;	OUTPUT:
;		roadmap   	SPC_roadmap structure. see SPC_struct.pro for 
;				details.
;
;	HISTORY:
;		JTM: (24 Oct 91)
; 		atp: march 1992 - mods for new bsd structures/cleanup
;		atp: july  1992 - converted to spc files.
;		atp: (7/7/92) - header, minor fixes, heterogenous rdmap sizes:-)
;
;-
;
; open the spc file if not already open
;
spc_struct
siz = size(lun_filnam)
vtyp = siz(siz(0) + 1)
;
if (vtyp eq 7) then begin	;passed file name
	get_lun, lun
	openr, lun, lun_filnam, /block
endif else begin
	lun = lun_filnam
endelse
;
; get pointing info from header
;
if (header.numbsd(0) gt 0) then p0 = header.numbsd(0) else p0 = 0
if (header.numbsd(1) gt 0) then p1 = header.numbsd(1) else p1 = 0
if (header.numbsd(2) gt 0) then p2 = header.numbsd(2) else p2 = 0
if (header.numbsd(3) gt 0) then p3 = header.numbsd(3) else p3 = 0

pall = [p0,p1,p2,p3]

n_rdmap = max(pall)

if (n_rdmap eq 0) then begin
    print,'spc_rdmap: There appear to be no data records here'
    stop
    endif
;
; create roadmap array
;
roadmap = replicate({spc_road},n_rdmap)
;
; read by channel - initial hack is to use a for loop 
; 
roadmap(*).offset(*) = 0
roadmap(*).exist(*) = 0

for ii = 0,3 do begin
  if pall(ii) gt 0 then begin
   pointer = header.ptrdmp(ii) -1
   point_lun, lun, pointer*64L
   temp = lonarr(pall(ii))
   readu, lun, temp
   roadmap(0:(header.numbsd(ii)-1)).offset(ii) = temp
   endif
  roadmap(*).exist(ii) = (roadmap(*).offset(ii) gt 0)
  endfor

if (vtyp eq 7) then free_lun, lun

end

