diff options
author | Seb <sbb@tuxfamily.org> | 2010-06-12 21:57:50 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-12 21:57:50 +0200 |
commit | d2d327db6d38d5a6e8e253c54d3e97466ce3bc79 (patch) | |
tree | 38dbae3f18cedd293307a7389d22372d7601e047 | |
parent | e2b41cfb4be2486d9f2d50a8d750eed15c29320e (diff) | |
download | busybox-d2d327db6d38d5a6e8e253c54d3e97466ce3bc79.tar.gz |
stat: make output more similar to GNU stat
Signed-off-by: Seb <sbb@tuxfamily.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | coreutils/stat.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/coreutils/stat.c b/coreutils/stat.c index 57f1f145a..e7c24e642 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -216,10 +216,7 @@ static void FAST_FUNC print_stat(char *pformat, const char m, char *linkname = xmalloc_readlink_or_warn(filename); if (linkname == NULL) return; - /*printf("\"%s\" -> \"%s\"", filename, linkname); */ - printf(pformat, filename); - printf(" -> "); - printf(pformat, linkname); + printf("'%s' -> '%s'", filename, linkname); free(linkname); } else { printf(pformat, filename); @@ -320,24 +317,28 @@ static void print_it(const char *masterformat, b = format; while (b) { + /* Each iteration finds next %spec, + * prints preceding string and handles found %spec + */ size_t len; char *p = strchr(b, '%'); if (!p) { - /* coreutils 6.3 always prints <cr> at the end */ + /* coreutils 6.3 always prints newline at the end */ /*fputs(b, stdout);*/ puts(b); break; } - *p++ = '\0'; - fputs(b, stdout); /* dest = "%<modifiers>" */ - len = strspn(p, "#-+.I 0123456789"); - dest[0] = '%'; - memcpy(dest + 1, p, len); - dest[1 + len] = '\0'; - p += len; + len = 1 + strspn(p + 1, "#-+.I 0123456789"); + memcpy(dest, p, len); + dest[len] = '\0'; + /* print preceding string */ + *p = '\0'; + fputs(b, stdout); + + p += len; b = p + 1; switch (*p) { case '\0': @@ -508,7 +509,7 @@ static bool do_stat(const char *filename, const char *format) } else { if (S_ISBLK(statbuf.st_mode) || S_ISCHR(statbuf.st_mode)) { format = - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %-5h" " Device type: %t,%T\n" @@ -516,7 +517,7 @@ static bool do_stat(const char *filename, const char *format) "Access: %x\n" "Modify: %y\n" "Change: %z\n"; } else { format = - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %h\n" "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n" @@ -531,14 +532,14 @@ static bool do_stat(const char *filename, const char *format) } else { if (S_ISBLK(statbuf.st_mode) || S_ISCHR(statbuf.st_mode)) { format = (option_mask32 & OPT_SELINUX ? - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %-5h" " Device type: %t,%T\n" "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n" " S_Context: %C\n" "Access: %x\n" "Modify: %y\n" "Change: %z\n": - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %-5h" " Device type: %t,%T\n" @@ -546,13 +547,13 @@ static bool do_stat(const char *filename, const char *format) "Access: %x\n" "Modify: %y\n" "Change: %z\n"); } else { format = (option_mask32 & OPT_SELINUX ? - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %h\n" "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n" "S_Context: %C\n" "Access: %x\n" "Modify: %y\n" "Change: %z\n": - " File: \"%N\"\n" + " File: %N\n" " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n" "Device: %Dh/%dd\tInode: %-10i Links: %h\n" "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n" @@ -601,9 +602,9 @@ static bool do_stat(const char *filename, const char *format) if (S_ISLNK(statbuf.st_mode)) linkname = xmalloc_readlink_or_warn(filename); if (linkname) - printf(" File: \"%s\" -> \"%s\"\n", filename, linkname); + printf(" File: '%s' -> '%s'\n", filename, linkname); else - printf(" File: \"%s\"\n", filename); + printf(" File: '%s'\n", filename); printf(" Size: %-10llu\tBlocks: %-10llu IO Block: %-6lu %s\n" "Device: %llxh/%llud\tInode: %-10llu Links: %-5lu", |