- maybe_dirs[cur_depth] = i;
- } else if (maybe_dirs[cur_depth] >= 0) {
- for (j = 0; j <= cur_depth; j++)
- maybe_dirs[j] = -1;
+ file->dir.depth = -prev_i-1;
+ prev_i = i;
+ } else {
+ /* Keep dirs through this non-dir. */
+ for (j = prev_depth; ; j--) {
+ fp = flist->files[prev_i];
+ if (fp->dir.depth >= 0)
+ break;
+ prev_i = -fp->dir.depth-1;
+ fp->dir.depth = j;
+ }