mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-07 03:38:31 +00:00
Initial import
This commit is contained in:
commit
c91b3c5006
14915 changed files with 590219 additions and 0 deletions
61
examples/stat.c
Normal file
61
examples/stat.c
Normal file
|
@ -0,0 +1,61 @@
|
|||
#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/calls/calls.h"
|
||||
#include "libc/calls/struct/stat.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/runtime/gc.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
/**
|
||||
* @fileoverview File metadata viewer.
|
||||
*
|
||||
* This demonstrates the more powerful aspects of the printf() DSL.
|
||||
*/
|
||||
|
||||
void PrintFileMetadata(const char *pathname, struct stat *st) {
|
||||
printf("\n%s:", pathname);
|
||||
if (stat(pathname, st) != -1) {
|
||||
printf(
|
||||
"\n"
|
||||
"%-32s%,ld\n"
|
||||
"%-32s%,ld\n"
|
||||
"%-32s%#lx\n"
|
||||
"%-32s%#lx\n"
|
||||
"%-32s%ld\n"
|
||||
"%-32s%#o\n"
|
||||
"%-32s%d\n"
|
||||
"%-32s%d\n"
|
||||
"%-32s%d\n"
|
||||
"%-32s%ld\n"
|
||||
"%-32s%s\n"
|
||||
"%-32s%s\n"
|
||||
"%-32s%s\n",
|
||||
"bytes in file", st->st_size, "physical bytes", st->st_blocks * 512,
|
||||
"device id w/ file", st->st_dev, "inode", st->st_ino, "hard link count",
|
||||
st->st_nlink, "mode / permissions", st->st_mode, "owner id", st->st_uid,
|
||||
"group id", st->st_gid, "device id (if special)", st->st_rdev,
|
||||
"block size", st->st_blksize, "access time", gc(xiso8601(&st->st_atim)),
|
||||
"modified time", gc(xiso8601(&st->st_mtim)), "c[omplicated]time",
|
||||
gc(xiso8601(&st->st_ctim)));
|
||||
} else {
|
||||
printf(" %s\n", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
size_t i;
|
||||
struct stat st;
|
||||
for (i = 1; i < argc; ++i) {
|
||||
PrintFileMetadata(argv[i], &st);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue