core/file to 5.40-5

This commit is contained in:
Kevin Mihelich 2021-05-30 16:25:32 +00:00
parent 041a0fa43f
commit 86240c5e6e
3 changed files with 72 additions and 1 deletions

View file

@ -8,7 +8,7 @@
pkgname=file
pkgver=5.40
pkgrel=3
pkgrel=5
pkgdesc='File type identification utility'
arch=('x86_64')
license=('custom')
@ -17,10 +17,14 @@ url='https://www.darwinsys.com/file/'
depends=('glibc' 'zlib' 'xz' 'bzip2')
provides=('libmagic.so')
source=("https://astron.com/pub/$pkgname/$pkgname-$pkgver.tar.gz"{,.asc}
"pr256.patch" # fix binary detection that breaks subversion tests
"pr261.patch" # follow-up patch which restores file 5.39 behavior
"https://github.com/file/file/commit/9b0459afab309a82aa4e46f73a4e50dd641f3d39.patch")
validpgpkeys=('BE04995BA8F90ED0C0C176C471112AB16CB33B3A') # Christos Zoulas
sha256sums=('167321f43c148a553f68a0ea7f579821ef3b11c27b8cbe158e4df897e4a5dd57'
'SKIP'
'5fd8dc41a10ee8097ddbffad37e07ea417b6ea5ff9d416d4aadfe15bc33a46df'
'c149311a54ee2539344d6ace2cb733e45bc1c134cd91d50d462dd9edbff916f5'
'f5d9c964233b75d6b5ac1b95fe4cc23143fbc6070d3b136e91b542021959e7dd')
prepare() {

23
core/file/pr256.patch Normal file
View file

@ -0,0 +1,23 @@
From 749e1ecfc3d333e5ec8b1a2e639da7ccb2498c34 Mon Sep 17 00:00:00 2001
From: Christos Zoulas <christos@zoulas.com>
Date: Mon, 19 Apr 2021 18:38:04 +0000
Subject: [PATCH] PR/256: mutableVoid: If the file is less than 3 bytes, use
the file length to determine type
---
src/encoding.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/encoding.c b/src/encoding.c
index 0fb1f47b..31d4d125 100644
--- a/src/encoding.c
+++ b/src/encoding.c
@@ -285,7 +285,7 @@ looks_ ## NAME(const unsigned char *buf, size_t nbytes, file_unichar_t *ubuf, \
if (dist[i]) \
u++; \
} \
- if (u < 3) \
+ if (u < MIN(nbytes, 3)) \
return 0; \
\
return 1; \

44
core/file/pr261.patch Normal file
View file

@ -0,0 +1,44 @@
From c07e242e766242a44ff720c149b1bdd4924ec247 Mon Sep 17 00:00:00 2001
From: Christos Zoulas <christos@zoulas.com>
Date: Tue, 27 Apr 2021 19:37:14 +0000
Subject: [PATCH] Revert the fix for PR/180. It lead to PR/261. Using character
count heuristics ends up with confusing behavior, the following should not be
producing different results: echo -n xx | ./file - echo -n xy |
./file -
---
src/encoding.c | 13 +-------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/src/encoding.c b/src/encoding.c
index 31d4d1251..3647a481d 100644
--- a/src/encoding.c
+++ b/src/encoding.c
@@ -265,9 +265,7 @@ private int \
looks_ ## NAME(const unsigned char *buf, size_t nbytes, file_unichar_t *ubuf, \
size_t *ulen) \
{ \
- size_t i, u; \
- unsigned char dist[256]; \
- memset(dist, 0, sizeof(dist)); \
+ size_t i; \
\
*ulen = 0; \
\
@@ -278,16 +276,7 @@ looks_ ## NAME(const unsigned char *buf, size_t nbytes, file_unichar_t *ubuf, \
return 0; \
\
ubuf[(*ulen)++] = buf[i]; \
- dist[buf[i]]++; \
} \
- u = 0; \
- for (i = 0; i < __arraycount(dist); i++) { \
- if (dist[i]) \
- u++; \
- } \
- if (u < MIN(nbytes, 3)) \
- return 0; \
-\
return 1; \
}