#define _DEFAULT_SOURCE
#define _BSD_SOURCE
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
void
dir_recurse (DIR *parent, int level)
{
struct dirent *ent;
DIR *child;
int fd;
while ((ent = readdir(parent)) != NULL) {
if ((strcmp(ent
->d_name
, ".") == 0) || (strcmp(ent
->d_name
, "..") == 0)) { continue;
}
fd = openat(dirfd(parent), ent->d_name, O_RDONLY | O_DIRECTORY);
if (fd != -1) {
printf("%*s%s/\n", level
, "", ent
->d_name
); child = fdopendir(fd);
dir_recurse(child, level + 1);
closedir(child);
} else if (errno == ENOTDIR) {
printf("%*s%s\n", level
, "", ent
->d_name
); } else {
}
}
}
int
main (int argc, char *argv)
{
DIR *root;
root = opendir("..");
dir_recurse(root, 0);
closedir(root);
return 0;
}
I2RlZmluZSBfREVGQVVMVF9TT1VSQ0UKI2RlZmluZSBfQlNEX1NPVVJDRQojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPGRpcmVudC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KCnZvaWQKZGlyX3JlY3Vyc2UgKERJUiAqcGFyZW50LCBpbnQgbGV2ZWwpCnsKICAgIHN0cnVjdCBkaXJlbnQgKmVudDsKICAgIERJUiAqY2hpbGQ7CiAgICBpbnQgZmQ7CgogICAgd2hpbGUgKChlbnQgPSByZWFkZGlyKHBhcmVudCkpICE9IE5VTEwpIHsKICAgICAgICBpZiAoKHN0cmNtcChlbnQtPmRfbmFtZSwgIi4iKSA9PSAwKSB8fAogICAgICAgICAgICAoc3RyY21wKGVudC0+ZF9uYW1lLCAiLi4iKSA9PSAwKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZmQgPSBvcGVuYXQoZGlyZmQocGFyZW50KSwgZW50LT5kX25hbWUsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOwogICAgICAgIGlmIChmZCAhPSAtMSkgewogICAgICAgICAgICBwcmludGYoIiUqcyVzL1xuIiwgbGV2ZWwsICIiLCBlbnQtPmRfbmFtZSk7CiAgICAgICAgICAgIGNoaWxkID0gZmRvcGVuZGlyKGZkKTsKICAgICAgICAgICAgZGlyX3JlY3Vyc2UoY2hpbGQsIGxldmVsICsgMSk7CiAgICAgICAgICAgIGNsb3NlZGlyKGNoaWxkKTsKICAgICAgICB9IGVsc2UgaWYgKGVycm5vID09IEVOT1RESVIpIHsKICAgICAgICAgICAgcHJpbnRmKCIlKnMlc1xuIiwgbGV2ZWwsICIiLCBlbnQtPmRfbmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcGVycm9yKCJvcGVuIik7CiAgICAgICAgfQogICAgfQp9CgppbnQKbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3YpCnsKICAgIERJUiAqcm9vdDsKCiAgICByb290ID0gb3BlbmRpcigiLi4iKTsKICAgIGRpcl9yZWN1cnNlKHJvb3QsIDApOwogICAgY2xvc2VkaXIocm9vdCk7CgogICAgcmV0dXJuIDA7Cn0=