def search_dir(fnames, nusdef=false)
fnames = Dir[File.join(fnames,'*')] unless nusdef
flag = false
fnames.each{|fname|
next if File.basename(fname).upcase == "NUSDAS_DEF"
if File.directory?(fname)
flag = search_dir(fname) || flag
elsif File.file?(fname)
hash = Hash.new
file = File.open(fname,"rb")
hash[:file] = file
if nusdef
skip_record(file)
else
name, mtime, str = get_record(file)
unless name == "NUSD"
file.close
next
end
parse_nusd(str)
end
name, mtime, str = get_record(file)
unless name == "CNTL"
file.close
next
end
hash.update parse_cntl(str, nusdef)
name, mtime, str = get_record(file)
case name
when "INDX"
hash.update parse_indx(str,hash)
when "INDY"
hash.update parse_indy(str,hash)
else
file.close
next
end
flag2 = false
@meta[:nsubc].times{|i|
name, mtime, str = get_record(file)
unless name == "SUBC"
file.close
flag2 = true
break
end
@meta[:subc] ||= Hash.new
@meta[:subc].update parse_subc(str,hash)
}
next if flag2
files_push(hash, nusdef)
flag = true
end
}
return flag
end