;+ ;PROCEDURE: get_file_names_ind, fnames ;PURPOSE: ; Gets an array of filenames within a masterfile within a time range ;INPUT: ; fnames: named variable in which the output array of filenames is placed. ;KEYWORDS: ; TIME_RANGE: Two element vector (double or string) specifying the time range. ; If time range is not set, then "GET_TIMESPAN" will be called ; to get a time range. ; MASTERFILE: Name of a masterfile that contains times and associated ; filenames. The file should have the format: ;yyyy-mm-dd/hh:mm:ss yyyy-mm-dd/hh:mm:ss fullpathfilename ; with one line for each file. ; (Hint: for CDF files, the masterfile can be created using the ; UNIX program 'kpdfile' or the IDL procedure "MAKE_CDF_INDEX".) ; ROOT_DIR: Optional root_directory of the masterfile. This will properly ; manage operating system dependancies. ; NO_DUPLICATES: (N; integer) ; when set the first N characters of file names are compared and only ; the highest version is returned. ; ;CREATED BY: Davin Larson ;VERSION: @(#)get_file_names_ind.pro 1.1 97/06/23 ; ;- pro get_file_names_ind,fnames, $ starttimes = starttimes, $ endtimes= endtimes, $ numrecs = nrecs, $ TIME_RANGE=trange, $ MASTERFILE=masterfile, $ NO_DUPLICATES = no_dup, $ ROOT_DIR=dir, $ NFILES=nfiles if not keyword_set(trange) then get_timespan,tr else tr= time_double(trange) if n_elements(tr) ne 2 then tr = [tr(0),tr(0)+24.*3600.] if data_type(masterfile) ne 7 then begin masterfile='' read,masterfile,prompt="Name of master file? " endif nfiles = 0 fnames = 0 starttimes = 0 endtimes = 0 nrecs = 0 if keyword_set(dir) then mfile=filepath(masterfile,root=dir) $ else mfile = masterfile on_ioerror,bad_file openr,lun,mfile,/get_lun ;ts_ = systime(1) while not eof(lun) do begin s = '' readf,lun,s s = strcompress(strtrim(s,2)) ss = str_sep(s,' ') n = dimen1(ss) ts = time_double(ss(0)) te = time_double(ss(1)) fname = ss(2) if n gt 3 then nr=long(ss(3)) else nr=0 if(te ge tr(0)) and (ts lt tr(1)) then begin append_array,fnames,fname append_array,starttimes,ts append_array,endtimes,te append_array,nrecs,nr nfiles = nfiles+1 endif endwhile ;print,systime(1)-ts_ ,' seconds' free_lun,lun if keyword_set(fnames) eq 0 then begin btime = time_string(tr(0)) etime = time_string(tr(1)) dprint, 'No data available from ',btime, ' to ',etime,' in ',mfile endif if keyword_set(no_dup) then begin stpth = strippath(fnames) fn = stpth.file_name w = where(strlen(fn) lt 26,c) if c ne 0 then dprint,"Warning non-standard file name(s)" s = sort(fn) u = uniq(strmid(fn(s),0,no_dup)) i = bytarr(n_elements(s)) i(s(u)) = 1 w = where(i eq 0,c) if c ne 0 then begin bnames = fnames(w) dprint,'The following obsolete files have been ignored:' dprint, transpose(bnames) ;print,transpose('mv '+bnames+' '+stpth(w).dir_name+'extra') endif fnames = fnames(s(u)) starttimes = starttimes(s(u)) endtimes = endtimes(s(u)) nrecs = nrecs(s(u)) endif return bad_file: dprint,'Unable to open master file: '+mfile return end