mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
41396ff48a
- Fix handling of precision in hex float formatting - Enhance the cocmd interpreter for system() and popen() - Manually ran the Lua unit tests, which are now passing - Let stdio i/o operations happen when file is in error state - We're now saving and restoring xmm in ftrace out of paranoia
55 lines
2.4 KiB
C
55 lines
2.4 KiB
C
#if 0
|
|
/*─────────────────────────────────────────────────────────────────╗
|
|
│ To the extent possible under law, Justine Tunney has waived │
|
|
│ all copyright and related or neighboring rights to this file, │
|
|
│ as it is written in the following disclaimers: │
|
|
│ • http://unlicense.org/ │
|
|
│ • http://creativecommons.org/publicdomain/zero/1.0/ │
|
|
╚─────────────────────────────────────────────────────────────────*/
|
|
#endif
|
|
#include "libc/errno.h"
|
|
#include "libc/runtime/runtime.h"
|
|
#include "libc/stdio/stdio.h"
|
|
#include "libc/str/str.h"
|
|
#include "libc/sysv/consts/exit.h"
|
|
#include "libc/sysv/consts/s.h"
|
|
#include "libc/stdio/ftw.h"
|
|
|
|
/**
|
|
* @fileoverview Directory walker example.
|
|
* Copied from IEEE Std 1003.1-2017
|
|
*/
|
|
|
|
static int display_info(const char *fpath, const struct stat *sb, int tflag,
|
|
struct FTW *ftwbuf) {
|
|
printf("%-3s %2d %7jd %-40s %d %s\n",
|
|
(tflag == FTW_D) ? "d"
|
|
: (tflag == FTW_DNR) ? "dnr"
|
|
: (tflag == FTW_DP) ? "dp"
|
|
: (tflag == FTW_F) ? (S_ISBLK(sb->st_mode) ? "f b"
|
|
: S_ISCHR(sb->st_mode) ? "f c"
|
|
: S_ISFIFO(sb->st_mode) ? "f p"
|
|
: S_ISREG(sb->st_mode) ? "f r"
|
|
: S_ISSOCK(sb->st_mode) ? "f s"
|
|
: "f ?")
|
|
: (tflag == FTW_NS) ? "ns"
|
|
: (tflag == FTW_SL) ? "sl"
|
|
: (tflag == FTW_SLN) ? "sln"
|
|
: "?",
|
|
ftwbuf->level, (intmax_t)sb->st_size, fpath, ftwbuf->base,
|
|
fpath + ftwbuf->base);
|
|
return 0; /* To tell nftw() to continue */
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
int flags = 0;
|
|
const char *dir;
|
|
if (argc > 2 && strchr(argv[2], 'd') != NULL) flags |= FTW_DEPTH;
|
|
if (argc > 2 && strchr(argv[2], 'p') != NULL) flags |= FTW_PHYS;
|
|
dir = argc < 2 ? "." : argv[1];
|
|
if (nftw(dir, display_info, 20, flags) == -1) {
|
|
fprintf(stderr, "nftw() failed: %s: %s\n", strerror(errno), dir);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
exit(EXIT_SUCCESS);
|
|
}
|