function make_file_list, aaaajjjd, hd, aaaajjjf, hf, verbose=verbose, $
level=level, source=source, antset=antset, ephem_type=ephem_type, $
summary_type=summary_type, noemptyfiles=noemptyfiles
if keyword_set(verbose) then verbose=1b else verbose=0b
if keyword_set(noemptyfiles) then noemptyfiles=1b else noemptyfiles=0b
datapath=getenv('NAS_RPWS')
year1=fix(long(aaaajjjd)/1000L)
year2=fix(long(aaaajjjf)/1000L)
day1=aaaajjjd-year1*1000l
day2=aaaajjjf-year2*1000l
indbeg=0l
indend=0l
directories=make_dir_tab(year1, day1, year2, day2,verbose=verbose)
if (ptr_valid(directories) eq 0) then begin
res=ptr_new()
return, res
endif
dirnb=n_elements(*directories)
nb=0l
list=ptrarr(dirnb)
j=0l
validlevels=['k', 'n1', 'n2', 'n3', 'n3a', 'n3b', 'n3c', 'n3d', 'n3e', 'n3f', 'n3g', 'ephem', 'pdf', 'lis', 'temp']
ind=where(level eq validlevels)
if (ind eq -1) then begin
print, "# Warning ! Invalid level"
ptr_free, directories
return, ptr_new()
endif
dir='/'+level+'/'
if verbose then begin
message,/info,'Looking for files into:'
for i=0,dirnb-1 do message,/info,'- '+datapath+(*directories)(i)+dir
endif
read_data_src_list,src_list
case 1 of
(level eq 'ephem'): begin
ephem_types=[src_list.qeph,src_list.veph]
if ((where(ephem_types eq ephem_type))(0) eq -1) then begin
print, "# Warning ! Bad ephemeris file"
ptr_free, directories
return, ptr_new()
endif
for idir=0, dirnb-1 do begin
(*directories)[idir]=datapath+(*directories)[idir]+dir+'???????.'+ephem_type
if verbose then message,/info,'[file mask] '+(*directories)[idir]
endfor
end
(level eq 'pdf'): begin
if ~keyword_set(summary_type) then summary_type='raw'
summary_types=['raw','SVe','SVb','LTb']
if ((where(summary_types eq summary_type))(0) eq -1) then begin
print, "# Warning ! Bad summary file type"
ptr_free, directories
return, ptr_new()
endif
for idir=0, dirnb-1 do begin
case summary_type of
'raw': (*directories)[idir]=datapath+(*directories)[idir]+dir+'???????.pdf'
'SVe': (*directories)[idir]=datapath+(*directories)[idir]+dir+'???????-SVe.pdf'
'SVb': (*directories)[idir]=datapath+(*directories)[idir]+dir+'???????-SVb.pdf'
'LTb': (*directories)[idir]=datapath+(*directories)[idir]+dir+'???????-LTb.pdf'
endcase
if verbose then message,/info,'[file mask] '+(*directories)[idir]
endfor
end
((ind[0] gt 3) and (ind[0] lt 11)): begin
sources=src_list.df_name
ind=where(source eq sources)
if (keyword_set(source) eq 0) then begin
sc='??'
endif else begin
sc=sources[ind]
endelse
if (keyword_set(antset) eq 0) then begin
antset='?'
endif
for idir=0, dirnb-1 do begin
(*directories)[idir]=datapath+(*directories)[idir]+dir+'N'+strmid(level, 1, 2)+'_'+antset+sc+'*'
if verbose then message,/info,'[file mask] '+(*directories)[idir]
endfor
end
else: begin
for idir=0, dirnb-1 do begin
(*directories)[idir]=datapath+(*directories)[idir]+dir+'*'
endfor
end
endcase
j=0l
for idir=0l, dirnb-1l do begin
list[j]=ptr_new(file_search((*directories)[idir], count=found))
nb=nb+found
if (found ne 0) then begin
j=j+1l
endif
endfor
if (nb eq 0) then begin
res=ptr_new()
endif else begin
files=strarr(nb)
j=0l
for idir=0l, dirnb-1l do begin
if (ptr_valid(list[idir])) then begin
filenb=n_elements(*(list[idir]))
if not (filenb eq 1 and (*(list[idir]))[0] eq '') then begin
for ifile=0l, filenb-1l do begin
is_empty=0b
if noemptyfiles then is_empty=file_test((*(list[idir]))[ifile], /ZERO_LENGTH)
if is_empty then begin
if (nb > 0) then nb--
message, /info, 'warning: K file ' + (*(list[idir]))[ifile] + ' has size 0, skipping'
endif else begin
files[j]=(*(list[idir]))[ifile]
j=j+1l
endelse
endfor
endif
endif
endfor
if (level eq 'ephem') then begin
indbeg=0l
indend=j-1l
j=0l
found=0l
indend=-1l
indbeg=0l
while ((j lt nb) and (found eq 0)) do begin
if (long(strmid(files[j], 11, 7, /reverse_offset)) lt aaaajjjd) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
if (j eq nb) then begin
res=ptr_new()
ptr_free, directories
for i=0, dirnb-1 do begin
ptr_free, list[i]
endfor
return, res
endif
indbeg = j
found=0l
while ((j lt nb) and (found eq 0)) do begin
if (long(strmid(files[j], 11, 7, /reverse_offset)) lt aaaajjjf) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
if (j eq nb) then begin
indend=j-1l
endif else begin
if (long(strmid(files[j], 11, 7, /reverse_offset)) eq aaaajjjf) then begin
indend=j
endif else begin
indend=j-1l
endelse
endelse
if ((indend ne -1) and (indend ge indbeg)) then begin
res=ptr_new(files[indbeg: indend])
endif else res=ptr_new()
endif else begin
j=0l
found=0l
indend=-1l
indbeg=0l
if (level eq 'pdf' or level eq 'lis') then begin
str_rev_offset=10
if (level eq 'pdf') then begin
if (summary_type eq 'SVe' or summary_type eq 'SVb' or summary_type eq 'LTb') then str_rev_offset += 4
endif
if hf eq 0 then aaaajjjf1=aaaajjjf-1 else aaaajjjf1=aaaajjjf
nbfiles=n_elements(files)
if (long(strtrim(strmid(files[nbfiles-1], str_rev_offset, 7, /reverse_offset), 2)) lt aaaajjjd or $
long(strtrim(strmid(files[0], str_rev_offset, 7, /reverse_offset), 2)) gt aaaajjjf1) then begin
res=ptr_new()
endif else begin
i0=0l
while (long(strtrim(strmid(files[i0], str_rev_offset, 7, /reverse_offset), 2)) lt aaaajjjd) do begin
i0=i0+1l
endwhile
i1=nb-1l
while ((long(strtrim(strmid(files[i1], str_rev_offset, 7, /reverse_offset), 2))) gt aaaajjjf1) do begin
i1=i1-1l
endwhile
if (i0 gt i1) then begin
res=ptr_new()
endif else begin
if (i0 eq i1) then begin
res=ptr_new(files[i0])
endif else begin
files=files[i0:i1]
res=ptr_new(files)
endelse
endelse
endelse
endif else begin
while ((j lt nb) and (found eq 0)) do begin
if (long(strmid(files[j], 9, 7, /reverse_offset)) lt aaaajjjd) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
if (j eq nb) then begin
res=ptr_new()
ptr_free, directories
for i=0l, dirnb-1l do begin
ptr_free, list[i]
endfor
return, res
endif
if (long(strmid(files[j], 9, 7, /reverse_offset)) eq aaaajjjd) then begin
found=0
while ((j lt nb) and (found eq 0)) do begin
if ((long(strmid(files[j], 9, 7, /reverse_offset)) eq aaaajjjd) and $
long(strmid(files[j], 1, 2, /reverse_offset)) lt hd) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
if (j eq nb) then begin
res=ptr_new()
ptr_free, directories
for i=0, dirnb-1 do begin
ptr_free, list[i]
endfor
return, res
endif
endif
indbeg = j
found=0l
while ((j lt nb) and (found eq 0)) do begin
if (long(strmid(files[j], 9, 7, /reverse_offset)) lt aaaajjjf) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
found=0l
while (j lt nb and found eq 0) do begin
if (long(strmid(files[j], 9, 7, /reverse_offset)) eq aaaajjjf) and $
(long(strmid(files[j], 1, 2, /reverse_offset)) lt hf) then begin
j=j+1l
endif else begin
found=1l
endelse
endwhile
if (j eq nb) then begin
indend=j-1l
endif else begin
if (((long(strmid(files[j], 9, 7, /reverse_offset)) eq aaaajjjf) and (long(strmid(files[j], 1, 2, /reverse_offset)) ge hf)) or (long(strmid(files[j], 9, 7, /reverse_offset)) gt aaaajjjf) ) then begin
indend=j-1l
endif else begin
indend=j
endelse
endelse
if ((indend ne -1) and (indend ge indbeg)) then begin
res=ptr_new(files[indbeg: indend])
endif else res=ptr_new()
endelse
endelse
endelse
ptr_free, directories
for i=0l, dirnb-1l do begin
ptr_free, list[i]
endfor
if ptr_valid(res) and verbose then message,/info,string(n_elements(*res))+" file(s) found"
return, res
end