This is the fifth version of a patch series that implements the GSoC microproject of converting a recursive call to readdir() to use dir_iterator. v1: https://public-inbox.org/git/CAGZ79kZwT-9mHTiOJ5CEjk2wDFkn6+NcogjX0=vjhsAh16ANYg@xxxxxxxxxxxxxx/T/#t v2: https://public-inbox.org/git/CACsJy8Dxh-QPBBLfaFWPAWUsbA9GVXA7x+mXLjEvYKhk1zOpig@xxxxxxxxxxxxxx/T/#t v3: https://public-inbox.org/git/CAGZ79kYtpmURSQWPumobA=e3JBFjKhWCdv_LPhKCd71ZRwMovA@xxxxxxxxxxxxxx/T/#t v4: https://public-inbox.org/git/1490747533-89143-1-git-send-email-bnmvco@xxxxxxxxx/T/#e437a63e0c22c00c69b5d92977c9b438ed2b9fd3a I would like to really thank Michael for the incredibly thorough review of the last version of this series. I never expected anyone to give that level of attention to this change, and it's really, really appreciated. All of the points he addressed are fixed in this version. As always, more feedback is greatly appreciated. Thanks, Daniel. Daniel Ferreira (6): dir_iterator: add helpers to dir_iterator_advance dir_iterator: refactor state machine model dir_iterator: iterate over dir after its contents dir_iterator: add tests for dir_iterator API remove_subtree(): reimplement using iterators remove_subtree(): test removing nested directories Makefile | 1 + dir-iterator.c | 123 ++++++++++++++++++++++++++++++---------- dir-iterator.h | 17 ++++-- entry.c | 41 +++++--------- refs/files-backend.c | 2 +- t/helper/test-dir-iterator.c | 32 +++++++++++ t/t0065-dir-iterator.sh | 45 +++++++++++++++ t/t2000-checkout-cache-clash.sh | 11 ++++ 8 files changed, 210 insertions(+), 62 deletions(-) create mode 100644 t/helper/test-dir-iterator.c create mode 100755 t/t0065-dir-iterator.sh -- 2.7.4 (Apple Git-66)