#include #include static char buf[4*1024], *c = buf; /* should be greater or equal to PATH_MAX */ static void flush(void) { *c = 0; puts(buf); c = buf; } static int print(void *data, char *rel, char *abs, io·Stat *info) { copy: while (*abs && c < (arrend(buf)-2)) *c++ = *abs++; if (*abs) { flush(); goto copy; } *c++ = '\n'; return 0; } static void usage(void) { fprintf(stderr, "usage: walk [-dlpv] file ...\n"); exit(1); } int main(int argc, char *argv[]) { int i, f = fs·nolinks, err, max = 0; char *p; static fs·Walker walker; ARGBEGIN{ case 'd': max = atoi(ARGF()); break; case 'l': f ^= fs·nolinks; break; case 'p': f |= fs·preorder; break; case 'v': f |= fs·verbose; break; default: usage(); }ARGEND; walker.flags = f; walker.func = print; walker.data = nil; walker.max = max; if (argc == 0) { fs·init(&walker, ""); fs·walk(&walker); return(err = walker.err); } else { err = 0; for (i=0; i