|
|
| version 1.25, 2005/04/21 10:02:03 | version 1.26, 2007/09/11 04:08:29 |
|---|---|
| Line 410 void help(void) | Line 410 void help(void) |
| " --help this help text\n")); | " --help this help text\n")); |
| } | } |
| char *resolve_symlinks(const char *file) | |
| { | |
| static char buffer[4096]; | |
| struct stat stat; | |
| char *path = NULL; | |
| if (lstat(file, &stat) == -1) | |
| return path; | |
| if (S_ISLNK(stat.st_mode) && !opt_walk_physical) | |
| path = realpath(file, buffer); | |
| else | |
| path = (char *)file; /* not a symlink, use given path */ | |
| return path; | |
| } | |
| int walk_tree(const char *file) | |
| { | |
| const char *p; | |
| if ((p = resolve_symlinks(file)) == NULL) { | |
| fprintf(stderr, "%s: %s: %s\n", progname, | |
| xquote(file), strerror(errno)); | |
| return 1; | |
| } else if (nftw(p, do_print, 0, opt_walk_logical? 0 : FTW_PHYS) < 0) { | |
| fprintf(stderr, "%s: %s: %s\n", progname, xquote(file), | |
| strerror(errno)); | |
| return 1; | |
| } | |
| return 0; | |
| } | |
| int main(int argc, char *argv[]) | int main(int argc, char *argv[]) |
| { | { |
| Line 499 int main(int argc, char *argv[]) | Line 531 int main(int argc, char *argv[]) |
| } | } |
| while (optind < argc) { | while (optind < argc) { |
| if (nftw(argv[optind], do_print, 0, | had_errors += walk_tree(argv[optind]); |
| opt_walk_physical * FTW_PHYS) < 0) { | |
| fprintf(stderr, "%s: %s: %s\n", progname, argv[optind], | |
| strerror_ea(errno)); | |
| had_errors++; | |
| } | |
| optind++; | optind++; |
| } | } |