fs::lsdir() improvements

Bug #986580 reported by Paul J. Lucas
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Zorba
Fix Released
Low
Paul J. Lucas

Bug Description

I noticed that this function was added. There are a few of problems with its implementation:

1. It forces the user to use a vector. What if I want to use a list? Or something else?

2. It uses std::string. The majority of the Zorba code base uses zstring.

3. It always reads the entire directory whether you want it or not. (WHat if there are 10,000 files in a directory?) Instead, it ought to provide an iterator that you can stop any time you please.

4. After the initial check for an error from opendir(), the code doesn't check for any subsequent errors, e.g., it does not check closedir() for error.

Related branches

Revision history for this message
Paul J. Lucas (paul-lucas) wrote :

I also took a look at the win32/dirent.h file that implements opendir(), readdir(), etc., for Windows. That code uses only the ASCII Win32 API and so won't work for Unicode path/file names. Hence, this code should not be used.

I also noticed that the files util/dir.h and util/dir.cpp exist and ALREADY implement iterating over a directory and the code ALRAEDY works properly with Unicode path/file names under Windows.

So why was fs::lsdir() added at all?

I'll clean-up the code in util/dir.h and absorb it into fs_util.h

Changed in zorba:
status: Triaged → In Progress
Changed in zorba:
status: In Progress → Fix Committed
milestone: none → 2.5
Changed in zorba:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.