- write_header(sha1, TYPEFLAG_AUTO, basedir, prefix, path,
- mode, eltbuf, eltsize);
- if (!strcmp(elttype, "tree")) {
- this_prefix.name = path;
- traverse_tree(eltbuf, eltsize, &this_prefix);
- } else if (!strcmp(elttype, "blob") && !S_ISLNK(mode)) {
+ write_header(sha1, TYPEFLAG_AUTO, basedir,
+ prefix, name, mode, eltbuf, eltsize);
+ if (S_ISDIR(mode)) {
+ struct tree_desc subtree;
+ subtree.buf = eltbuf;
+ subtree.size = eltsize;
+ this_prefix.name = name;
+ traverse_tree(&subtree, &this_prefix);
+ } else if (!S_ISLNK(mode)) {