| 760 | var dotFile = &fileListEntry{name: "./", isDir: true} |
| 761 | |
| 762 | func (z *Reader) openLookup(name string) *fileListEntry { |
| 763 | if name == "." { |
| 764 | return dotFile |
| 765 | } |
| 766 | |
| 767 | dir, elem := split(name) |
| 768 | |
| 769 | files := z.fileList |
| 770 | i := sort.Search(len(files), func(i int) bool { |
| 771 | idir, ielem := split(files[i].name) |
| 772 | |
| 773 | return idir > dir || idir == dir && ielem >= elem |
| 774 | }) |
| 775 | |
| 776 | if i < len(files) { |
| 777 | fname := files[i].name |
| 778 | if fname == name || len(fname) == len(name)+1 && fname[len(name)] == '/' && fname[:len(name)] == name { |
| 779 | return &files[i] |
| 780 | } |
| 781 | } |
| 782 | |
| 783 | return nil |
| 784 | } |
| 785 | |
| 786 | func (z *Reader) openReadDir(dir string) []fileListEntry { |
| 787 | files := z.fileList |