From e37e2782a93af0bc08e09e4785e031c35dc413cb Mon Sep 17 00:00:00 2001 From: sin Date: Thu, 30 Jan 2014 16:14:33 +0000 Subject: [PATCH] Only use major()/minor() if they are available in tar(1) Otherwise silently ignore them in the archive case. This is the same in principle as what we do in the unarchive case. --- tar.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tar.c b/tar.c index 1ecf8bd..e98f620 100644 --- a/tar.c +++ b/tar.c @@ -193,8 +193,12 @@ archive(const char* path) readlink(path, h->link, (sizeof h->link)-1); } else if(S_ISCHR(mode) || S_ISBLK(mode)) { h->type = S_ISCHR(mode) ? CHARDEV : BLOCKDEV; +#if defined(major) && defined(minor) putoctal(h->major, (unsigned)major(st.st_dev), sizeof h->major); putoctal(h->minor, (unsigned)minor(st.st_dev), sizeof h->minor); +#else + return 0; +#endif } else if(S_ISFIFO(mode)) { h->type = FIFO; }