Use preprocessor conditionals to check if makedev() is present
makedev() is not portable and is typically implemented as a macro. If it exists use it, otherwise silently ignore character and block devices.
This commit is contained in:
parent
203b52c38a
commit
c83aef2cda
2
tar.c
2
tar.c
@ -245,12 +245,14 @@ unarchive(char *fname, int l, char b[Blksiz])
|
||||
break;
|
||||
case CHARDEV:
|
||||
case BLOCKDEV:
|
||||
#ifdef makedev
|
||||
mode = strtoul(h->mode, 0, 8);
|
||||
major = strtoul(h->major, 0, 8);
|
||||
minor = strtoul(h->mode, 0, 8);
|
||||
type = (h->type == CHARDEV) ? S_IFCHR : S_IFBLK;
|
||||
if(mknod(fname, type | mode, makedev(major, minor)))
|
||||
perror(fname);
|
||||
#endif
|
||||
break;
|
||||
case FIFO:
|
||||
mode = strtoul(h->mode, 0, 8);
|
||||
|
Loading…
Reference in New Issue
Block a user