libtar: avoid st_rdev, makedev, minor, major on Haiku

This commit is contained in:
Jerome Duval
2022-10-24 10:05:07 +02:00
parent e29f8b2e8c
commit 7ddecbde33
2 changed files with 72 additions and 5 deletions

View File

@@ -12,13 +12,16 @@ COPYRIGHT="
1998-2003 Mark D. Roth
"
LICENSE="BSD (3-clause)"
REVISION="4"
SOURCE_URI="http://pkgbuild.com/~giovanni/libtar/libtar-$portVersion.tar.gz"
CHECKSUM_SHA256="43c5f50e6b4398c8be35d6f3abee26064c3f26174715b60004576792e3283353"
SOURCE_DIR="libtar"
REVISION="5"
gitCommit="9c2e044833c5e908f5be0a77991b08849021793e"
SOURCE_URI="https://github.com/tklauser/libtar/archive/$gitCommit.tar.gz"
CHECKSUM_SHA256="21d86460dd128f56cfa391e4bc82e91f98e84c2948a854e33daed5c58d4e9cb6"
SOURCE_FILENAME="libtar-$portVersion-$gitCommit.tar.gz"
SOURCE_DIR="libtar-$gitCommit"
PATCHES="libtar-$portVersion.patchset"
ARCHITECTURES="all"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
libtar${secondaryArchSuffix} = $portVersion

View File

@@ -0,0 +1,64 @@
From e98f76074b3d35856e43da9c9b3ac51295391543 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Mon, 24 Oct 2022 09:44:42 +0200
Subject: disable st_rdev for Haiku
diff --git a/compat/compat.h b/compat/compat.h
index 70ac2f4..5cd7bb7 100644
--- a/compat/compat.h
+++ b/compat/compat.h
@@ -186,11 +186,15 @@ int inet_aton(const char *, struct in_addr *);
** machine.
*/
+#ifdef __HAIKU__
+#define compat_makedev(maj, min) 0
+#else
# ifdef MAKEDEV_THREE_ARGS
# define compat_makedev(maj, min) makedev(0, maj, min)
# else
# define compat_makedev makedev
# endif
+#endif
#endif /* NEED_MAKEDEV */
diff --git a/lib/append.c b/lib/append.c
index 00c9aef..76122a4 100644
--- a/lib/append.c
+++ b/lib/append.c
@@ -102,9 +102,11 @@ tar_append_file(TAR *t, const char *realname, const char *savename)
td = (tar_dev_t *)libtar_hashptr_data(&hp);
else
{
+#ifndef __HAIKU__
#ifdef DEBUG
printf("+++ adding hash for device (0x%lx, 0x%lx)...\n",
major(s.st_dev), minor(s.st_dev));
+#endif
#endif
td = (tar_dev_t *)calloc(1, sizeof(tar_dev_t));
if (td == NULL)
diff --git a/lib/encode.c b/lib/encode.c
index 5ea29ff..c6ef39e 100644
--- a/lib/encode.c
+++ b/lib/encode.c
@@ -144,12 +144,14 @@ th_set_link(TAR *t, const char *linkname)
void
th_set_device(TAR *t, dev_t device)
{
+#ifndef __HAIKU__
#ifdef DEBUG
printf("th_set_device(): major = %d, minor = %d\n",
major(device), minor(device));
#endif
int_to_oct(major(device), t->th_buf.devmajor, 8);
int_to_oct(minor(device), t->th_buf.devminor, 8);
+#endif
}
--
2.30.2