aboutsummaryrefslogtreecommitdiff
path: root/toys/posix/ls.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2016-03-02 11:52:38 -0600
committerRob Landley <rob@landley.net>2016-03-02 11:52:38 -0600
commit7ca5dc4232b9ac5ee5cd25c8b5b33a58904cd251 (patch)
tree258fe0d485c5793e19a56be81f9d71e51476f0d8 /toys/posix/ls.c
parent323819c689448fffcf4d3ed20f2485b75ac64b64 (diff)
downloadtoybox-7ca5dc4232b9ac5ee5cd25c8b5b33a58904cd251.tar.gz
For years the man pages have said to #include <sys/types.h> to get
major/minor/makedev, but glibc has vowed to break existing programs (https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html) and replace it with _another_ non-standard header (not in posix or lsb), so let's just add functions to lib/ that do the transform ourselves.
Diffstat (limited to 'toys/posix/ls.c')
-rw-r--r--toys/posix/ls.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/toys/posix/ls.c b/toys/posix/ls.c
index 08ae695d..4dcbe888 100644
--- a/toys/posix/ls.c
+++ b/toys/posix/ls.c
@@ -144,7 +144,7 @@ static void entrylen(struct dirtree *dt, unsigned *len)
if (S_ISBLK(st->st_mode) || S_ISCHR(st->st_mode)) {
// cheating slightly here: assuming minor is always 3 digits to avoid
// tracking another column
- len[5] = numlen(major(st->st_rdev))+5;
+ len[5] = numlen(dev_major(st->st_rdev))+5;
} else if (flags & FLAG_h) {
human_readable(tmp, st->st_size, 0);
len[5] = strwidth(tmp);
@@ -453,7 +453,8 @@ static void listfiles(int dirfd, struct dirtree *indir)
// print major/minor, or size
if (S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode))
- printf("% *d,% 4d", totals[5]-4, major(st->st_rdev),minor(st->st_rdev));
+ printf("% *d,% 4d", totals[5]-4, dev_major(st->st_rdev),
+ dev_minor(st->st_rdev));
else if (flags&FLAG_h) {
human_readable(tmp, st->st_size, 0);
xprintf("%*s", totals[5]+1, tmp);