mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	tools/squashfs4: bump to 4.6.1
Changelogs: https://github.com/plougher/squashfs-tools/blob/4.6.1/CHANGES Removed upstreamed patches: - 001-Unsquashfs-Add-and-make-some-header-includes-conditi.patch - 002-Mksquashfs-Make-sysinfo-conditional.patch - 003-Only-use-available-CPUs.patch - 004-action-rework-strdupa-with-POSIX-strdup-and-free.patch - 005-Don-t-use-sigwaitinfo-sigtimedwait-if-not-supported.patch - 006-Move-sysinfo.h-into-the-linux-only-section-should-fi.patch - 007-Unsquashfs-fix-compilation-error-for-missing-sysctl..patch - 100-portability.patch Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
This commit is contained in:
		
							parent
							
								
									3efd49a588
								
							
						
					
					
						commit
						f0103c78d8
					
				@ -8,14 +8,14 @@ include $(TOPDIR)/rules.mk
 | 
			
		||||
 | 
			
		||||
PKG_NAME:=squashfs4
 | 
			
		||||
PKG_CPE_ID:=cpe:/a:phillip_lougher:squashfs
 | 
			
		||||
PKG_VERSION:=4.5.1
 | 
			
		||||
PKG_VERSION:=4.6.1
 | 
			
		||||
PKG_RELEASE=1
 | 
			
		||||
 | 
			
		||||
PKG_SOURCE_PROTO:=git
 | 
			
		||||
PKG_SOURCE_URL:=https://github.com/plougher/squashfs-tools
 | 
			
		||||
PKG_SOURCE_DATE:=2022-03-17
 | 
			
		||||
PKG_SOURCE_VERSION:=afdd63fc386919b4aa40d573b0a6069414d14317
 | 
			
		||||
PKG_MIRROR_HASH:=59c294e00ddfc1f4bda658c7567584ce35fdd479c413ebdb1376981b27737be1
 | 
			
		||||
PKG_SOURCE_DATE:=2023-03-26
 | 
			
		||||
PKG_SOURCE_VERSION:=d8cb82d9840330f9344ec37b992595b5d7b44184
 | 
			
		||||
PKG_MIRROR_HASH:=fc625af657ca284d69fbc32e3bb572d0afd566cf816b7c1c1b66dda0a0c2760a
 | 
			
		||||
 | 
			
		||||
HOST_BUILD_PARALLEL:=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,39 +0,0 @@
 | 
			
		||||
From a9119c969af0a5aa961d56978d5dd4f3eb952667 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
Date: Mon, 15 Aug 2022 17:04:43 +0100
 | 
			
		||||
Subject: [PATCH 1/1] Unsquashfs: Add and make some header includes conditional
 | 
			
		||||
 | 
			
		||||
Fixes https://github.com/plougher/squashfs-tools/issues/122
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/reader.c     | 1 +
 | 
			
		||||
 squashfs-tools/unsquashfs.c | 5 +++++
 | 
			
		||||
 2 files changed, 6 insertions(+)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/reader.c
 | 
			
		||||
+++ b/squashfs-tools/reader.c
 | 
			
		||||
@@ -38,6 +38,7 @@
 | 
			
		||||
 #include <errno.h>
 | 
			
		||||
 #include <stdlib.h>
 | 
			
		||||
 #include <stdio.h>
 | 
			
		||||
+#include <signal.h>
 | 
			
		||||
 #include "squashfs_fs.h"
 | 
			
		||||
 #include "mksquashfs.h"
 | 
			
		||||
 #include "caches-queues-lists.h"
 | 
			
		||||
--- a/squashfs-tools/unsquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs.c
 | 
			
		||||
@@ -32,8 +32,13 @@
 | 
			
		||||
 #include "stdarg.h"
 | 
			
		||||
 #include "fnmatch_compat.h"
 | 
			
		||||
 
 | 
			
		||||
+#ifdef __linux__
 | 
			
		||||
 #include <sys/sysinfo.h>
 | 
			
		||||
 #include <sys/sysmacros.h>
 | 
			
		||||
+#elif defined __FreeBSD__
 | 
			
		||||
+#include <sys/sysctl.h>
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 #include <sys/types.h>
 | 
			
		||||
 #include <sys/time.h>
 | 
			
		||||
 #include <sys/resource.h>
 | 
			
		||||
@ -1,30 +0,0 @@
 | 
			
		||||
From 374e39a786a5acda841056bec26fd0e0c4d40dac Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
Date: Mon, 15 Aug 2022 17:09:05 +0100
 | 
			
		||||
Subject: [PATCH 1/1] Mksquashfs: Make sysinfo() conditional
 | 
			
		||||
 | 
			
		||||
Fixes https://github.com/plougher/squashfs-tools/issues/123
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/mksquashfs.c | 2 ++
 | 
			
		||||
 1 file changed, 2 insertions(+)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/mksquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/mksquashfs.c
 | 
			
		||||
@@ -5802,6 +5802,7 @@ static int get_physical_memory()
 | 
			
		||||
 	long long page_size = sysconf(_SC_PAGESIZE);
 | 
			
		||||
 	int phys_mem;
 | 
			
		||||
 
 | 
			
		||||
+#ifdef __linux__
 | 
			
		||||
 	if(num_pages == -1 || page_size == -1) {
 | 
			
		||||
 		struct sysinfo sys;
 | 
			
		||||
 		int res = sysinfo(&sys);
 | 
			
		||||
@@ -5812,6 +5813,7 @@ static int get_physical_memory()
 | 
			
		||||
 		num_pages = sys.totalram;
 | 
			
		||||
 		page_size = sys.mem_unit;
 | 
			
		||||
 	}
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
 	phys_mem = num_pages * page_size >> 20;
 | 
			
		||||
 
 | 
			
		||||
@ -1,92 +0,0 @@
 | 
			
		||||
From bc8e655a420d2f62bb0597947e96dce7b4d3fb36 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Wessel Dankers <wsl@fruit.je>
 | 
			
		||||
Date: Sun, 30 Oct 2022 19:29:28 +0100
 | 
			
		||||
Subject: [PATCH] Only use available CPUs
 | 
			
		||||
 | 
			
		||||
Not all online CPUs may be available for the current process,
 | 
			
		||||
especially when CPU affinity is involved. In such cases too many
 | 
			
		||||
threads will be created, which will then compete unnecessarily
 | 
			
		||||
for CPU time.
 | 
			
		||||
 | 
			
		||||
Use sched_getaffinity() to determine the correct number of threads
 | 
			
		||||
to create.
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/mksquashfs.c | 16 ++++++++++++----
 | 
			
		||||
 squashfs-tools/unsquashfs.c | 13 ++++++++++---
 | 
			
		||||
 2 files changed, 22 insertions(+), 7 deletions(-)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/mksquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/mksquashfs.c
 | 
			
		||||
@@ -52,7 +52,9 @@
 | 
			
		||||
 #include <ctype.h>
 | 
			
		||||
 #include <sys/sysinfo.h>
 | 
			
		||||
 
 | 
			
		||||
-#ifndef linux
 | 
			
		||||
+#ifdef linux
 | 
			
		||||
+#include <sched.h>
 | 
			
		||||
+#else
 | 
			
		||||
 #include <sys/sysctl.h>
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@@ -5079,7 +5081,15 @@ static void initialise_threads(int readq
 | 
			
		||||
 		BAD_ERROR("Failed to set signal mask in intialise_threads\n");
 | 
			
		||||
 
 | 
			
		||||
 	if(processors == -1) {
 | 
			
		||||
-#ifndef linux
 | 
			
		||||
+#ifdef linux
 | 
			
		||||
+		cpu_set_t cpu_set;
 | 
			
		||||
+		CPU_ZERO(&cpu_set);
 | 
			
		||||
+
 | 
			
		||||
+		if(sched_getaffinity(0, sizeof cpu_set, &cpu_set) == -1)
 | 
			
		||||
+			processors = sysconf(_SC_NPROCESSORS_ONLN);
 | 
			
		||||
+		else
 | 
			
		||||
+			processors = CPU_COUNT(&cpu_set);
 | 
			
		||||
+#else
 | 
			
		||||
 		int mib[2];
 | 
			
		||||
 		size_t len = sizeof(processors);
 | 
			
		||||
 
 | 
			
		||||
@@ -5096,8 +5106,6 @@ static void initialise_threads(int readq
 | 
			
		||||
 			ERROR_EXIT("  Defaulting to 1\n");
 | 
			
		||||
 			processors = 1;
 | 
			
		||||
 		}
 | 
			
		||||
-#else
 | 
			
		||||
-		processors = sysconf(_SC_NPROCESSORS_ONLN);
 | 
			
		||||
 #endif
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
--- a/squashfs-tools/unsquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs.c
 | 
			
		||||
@@ -33,6 +33,7 @@
 | 
			
		||||
 #include "fnmatch_compat.h"
 | 
			
		||||
 
 | 
			
		||||
 #ifdef __linux__
 | 
			
		||||
+#include <sched.h>
 | 
			
		||||
 #include <sys/sysinfo.h>
 | 
			
		||||
 #include <sys/sysmacros.h>
 | 
			
		||||
 #elif defined __FreeBSD__
 | 
			
		||||
@@ -2719,7 +2720,15 @@ void initialise_threads(int fragment_buf
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	if(processors == -1) {
 | 
			
		||||
-#ifndef linux
 | 
			
		||||
+#ifdef linux
 | 
			
		||||
+		cpu_set_t cpu_set;
 | 
			
		||||
+		CPU_ZERO(&cpu_set);
 | 
			
		||||
+
 | 
			
		||||
+		if(sched_getaffinity(0, sizeof cpu_set, &cpu_set) == -1)
 | 
			
		||||
+			processors = sysconf(_SC_NPROCESSORS_ONLN);
 | 
			
		||||
+		else
 | 
			
		||||
+			processors = CPU_COUNT(&cpu_set);
 | 
			
		||||
+#else
 | 
			
		||||
 		int mib[2];
 | 
			
		||||
 		size_t len = sizeof(processors);
 | 
			
		||||
 
 | 
			
		||||
@@ -2735,8 +2744,6 @@ void initialise_threads(int fragment_buf
 | 
			
		||||
 				"Defaulting to 1\n");
 | 
			
		||||
 			processors = 1;
 | 
			
		||||
 		}
 | 
			
		||||
-#else
 | 
			
		||||
-		processors = sysconf(_SC_NPROCESSORS_ONLN);
 | 
			
		||||
 #endif
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -1,37 +0,0 @@
 | 
			
		||||
From 92e628ec0e26cf091d82356e3b74f73bedf4cfc8 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Christian Marangi <ansuelsmth@gmail.com>
 | 
			
		||||
Date: Sat, 15 Oct 2022 00:11:20 +0200
 | 
			
		||||
Subject: [PATCH] action: rework strdupa with POSIX strdup and free
 | 
			
		||||
 | 
			
		||||
strdupa is not POSIX and cause compilation error on macos.
 | 
			
		||||
Fix this by using strdup and free.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 | 
			
		||||
Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/action.c | 14 +++++++++++---
 | 
			
		||||
 1 file changed, 11 insertions(+), 3 deletions(-)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/action.c
 | 
			
		||||
+++ b/squashfs-tools/action.c
 | 
			
		||||
@@ -2415,9 +2415,17 @@ static char *get_start(char *s, int n)
 | 
			
		||||
 
 | 
			
		||||
 static int subpathname_fn(struct atom *atom, struct action_data *action_data)
 | 
			
		||||
 {
 | 
			
		||||
-	return fnmatch(atom->argv[0], get_start(strdupa(action_data->subpath),
 | 
			
		||||
-		count_components(atom->argv[0])),
 | 
			
		||||
-		FNM_PATHNAME|FNM_EXTMATCH) == 0;
 | 
			
		||||
+	char *s, *tmp;
 | 
			
		||||
+	int ret;
 | 
			
		||||
+
 | 
			
		||||
+	s = tmp = strdup(action_data->subpath);
 | 
			
		||||
+	tmp = get_start(tmp, count_components(atom->argv[0]));
 | 
			
		||||
+
 | 
			
		||||
+	ret = fnmatch(atom->argv[0], tmp, FNM_PATHNAME|FNM_EXTMATCH);
 | 
			
		||||
+
 | 
			
		||||
+	free(s);
 | 
			
		||||
+
 | 
			
		||||
+	return ret == 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@ -1,192 +0,0 @@
 | 
			
		||||
From dbe9747b4f09bd2f4d63af06e55c2c3ed35bfca1 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
Date: Tue, 7 Feb 2023 23:09:30 +0000
 | 
			
		||||
Subject: [PATCH] Don't use sigwaitinfo()/sigtimedwait() if not supported
 | 
			
		||||
 | 
			
		||||
If sigwaitinfo() and sigtimedwait() are not supported,
 | 
			
		||||
use sigwait() instead.
 | 
			
		||||
 | 
			
		||||
This will disable the queue/caches dump if ^\ (SIGQUIT)
 | 
			
		||||
is hit twice within a second.
 | 
			
		||||
 | 
			
		||||
But the queue/caches dump is still available if SIGHUP
 | 
			
		||||
is sent to the program.
 | 
			
		||||
 | 
			
		||||
Currently this check is applied to MAC OS X.  FreeBSD and
 | 
			
		||||
NetBSD appear to have these functions.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/info.c            | 25 ++-------------
 | 
			
		||||
 squashfs-tools/signals.h         | 54 ++++++++++++++++++++++++++++++++
 | 
			
		||||
 squashfs-tools/unsquashfs_info.c | 25 ++-------------
 | 
			
		||||
 3 files changed, 60 insertions(+), 44 deletions(-)
 | 
			
		||||
 create mode 100644 squashfs-tools/signals.h
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/info.c
 | 
			
		||||
+++ b/squashfs-tools/info.c
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  * Create a squashfs filesystem.  This is a highly compressed read only
 | 
			
		||||
  * filesystem.
 | 
			
		||||
  *
 | 
			
		||||
- * Copyright (c) 2013, 2014, 2019, 2021
 | 
			
		||||
+ * Copyright (c) 2013, 2014, 2019, 2021, 2022, 2023
 | 
			
		||||
  * Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
  *
 | 
			
		||||
  * This program is free software; you can redistribute it and/or
 | 
			
		||||
@@ -42,6 +42,7 @@
 | 
			
		||||
 #include "mksquashfs_error.h"
 | 
			
		||||
 #include "progressbar.h"
 | 
			
		||||
 #include "caches-queues-lists.h"
 | 
			
		||||
+#include "signals.h"
 | 
			
		||||
 
 | 
			
		||||
 static int silent = 0;
 | 
			
		||||
 static struct dir_ent *ent = NULL;
 | 
			
		||||
@@ -144,7 +145,6 @@ void dump_state()
 | 
			
		||||
 void *info_thrd(void *arg)
 | 
			
		||||
 {
 | 
			
		||||
 	sigset_t sigmask;
 | 
			
		||||
-	struct timespec timespec = { .tv_sec = 1, .tv_nsec = 0 };
 | 
			
		||||
 	int sig, waiting = 0;
 | 
			
		||||
 
 | 
			
		||||
 	sigemptyset(&sigmask);
 | 
			
		||||
@@ -152,26 +152,7 @@ void *info_thrd(void *arg)
 | 
			
		||||
 	sigaddset(&sigmask, SIGHUP);
 | 
			
		||||
 
 | 
			
		||||
 	while(1) {
 | 
			
		||||
-		if(waiting)
 | 
			
		||||
-			sig = sigtimedwait(&sigmask, NULL, ×pec);
 | 
			
		||||
-		else
 | 
			
		||||
-			sig = sigwaitinfo(&sigmask, NULL);
 | 
			
		||||
-
 | 
			
		||||
-		if(sig == -1) {
 | 
			
		||||
-			switch(errno) {
 | 
			
		||||
-			case EAGAIN:
 | 
			
		||||
-				/* interval timed out */
 | 
			
		||||
-				waiting = 0;
 | 
			
		||||
-				/* FALLTHROUGH */
 | 
			
		||||
-			case EINTR:
 | 
			
		||||
-				/* if waiting, the wait will be longer, but
 | 
			
		||||
-				   that's OK */
 | 
			
		||||
-				continue;
 | 
			
		||||
-			default:
 | 
			
		||||
-				BAD_ERROR("sigtimedwait/sigwaitinfo failed "
 | 
			
		||||
-					"because %s\n", strerror(errno));
 | 
			
		||||
-			}
 | 
			
		||||
-		}
 | 
			
		||||
+		sig = wait_for_signal(&sigmask, &waiting);
 | 
			
		||||
 
 | 
			
		||||
 		if(sig == SIGQUIT && !waiting) {
 | 
			
		||||
 			print_filename();
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/squashfs-tools/signals.h
 | 
			
		||||
@@ -0,0 +1,54 @@
 | 
			
		||||
+#ifndef SIGNALS_H
 | 
			
		||||
+#define SIGNALS_H
 | 
			
		||||
+/*
 | 
			
		||||
+ * Create a squashfs filesystem.  This is a highly compressed read only
 | 
			
		||||
+ * filesystem.
 | 
			
		||||
+ *
 | 
			
		||||
+ * Copyright (c) 2023
 | 
			
		||||
+ * Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is free software; you can redistribute it and/or
 | 
			
		||||
+ * modify it under the terms of the GNU General Public License
 | 
			
		||||
+ * as published by the Free Software Foundation; either version 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 | 
			
		||||
+ *
 | 
			
		||||
+ * signals.h
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+static inline int wait_for_signal(sigset_t *sigmask, int *waiting)
 | 
			
		||||
+{
 | 
			
		||||
+	int sig;
 | 
			
		||||
+
 | 
			
		||||
+#if defined(__APPLE__) && defined(__MACH__)
 | 
			
		||||
+	sigwait(sigmask, &sig);
 | 
			
		||||
+	*waiting = 0;
 | 
			
		||||
+#else
 | 
			
		||||
+	struct timespec timespec = { .tv_sec = 1, .tv_nsec = 0 };
 | 
			
		||||
+
 | 
			
		||||
+	while(1) {
 | 
			
		||||
+		if(*waiting)
 | 
			
		||||
+			sig = sigtimedwait(sigmask, NULL, ×pec);
 | 
			
		||||
+		else
 | 
			
		||||
+			sig = sigwaitinfo(sigmask, NULL);
 | 
			
		||||
+
 | 
			
		||||
+		if(sig != -1)
 | 
			
		||||
+			break;
 | 
			
		||||
+
 | 
			
		||||
+		if(errno == EAGAIN)
 | 
			
		||||
+			*waiting = 0;
 | 
			
		||||
+		else if(errno != EINTR)
 | 
			
		||||
+			BAD_ERROR("sigtimedwait/sigwaitinfo failed because %s\n", strerror(errno));
 | 
			
		||||
+	}
 | 
			
		||||
+#endif
 | 
			
		||||
+	return sig;
 | 
			
		||||
+}
 | 
			
		||||
+#endif
 | 
			
		||||
--- a/squashfs-tools/unsquashfs_info.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs_info.c
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  * Create a squashfs filesystem.  This is a highly compressed read only
 | 
			
		||||
  * filesystem.
 | 
			
		||||
  *
 | 
			
		||||
- * Copyright (c) 2013, 2021
 | 
			
		||||
+ * Copyright (c) 2013, 2021, 2023
 | 
			
		||||
  * Phillip Lougher <phillip@squashfs.org.uk>
 | 
			
		||||
  *
 | 
			
		||||
  * This program is free software; you can redistribute it and/or
 | 
			
		||||
@@ -40,6 +40,7 @@
 | 
			
		||||
 #include "squashfs_fs.h"
 | 
			
		||||
 #include "unsquashfs.h"
 | 
			
		||||
 #include "unsquashfs_error.h"
 | 
			
		||||
+#include "signals.h"
 | 
			
		||||
 
 | 
			
		||||
 char *pathname = NULL;
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +97,6 @@ void dump_state()
 | 
			
		||||
 void *info_thrd(void *arg)
 | 
			
		||||
 {
 | 
			
		||||
 	sigset_t sigmask;
 | 
			
		||||
-	struct timespec timespec = { .tv_sec = 1, .tv_nsec = 0 };
 | 
			
		||||
 	int sig, waiting = 0;
 | 
			
		||||
 
 | 
			
		||||
 	sigemptyset(&sigmask);
 | 
			
		||||
@@ -104,26 +104,7 @@ void *info_thrd(void *arg)
 | 
			
		||||
 	sigaddset(&sigmask, SIGHUP);
 | 
			
		||||
 
 | 
			
		||||
 	while(1) {
 | 
			
		||||
-		if(waiting)
 | 
			
		||||
-			sig = sigtimedwait(&sigmask, NULL, ×pec);
 | 
			
		||||
-		else
 | 
			
		||||
-			sig = sigwaitinfo(&sigmask, NULL);
 | 
			
		||||
-
 | 
			
		||||
-		if(sig == -1) {
 | 
			
		||||
-			switch(errno) {
 | 
			
		||||
-			case EAGAIN:
 | 
			
		||||
-				/* interval timed out */
 | 
			
		||||
-				waiting = 0;
 | 
			
		||||
-				/* FALLTHROUGH */
 | 
			
		||||
-			case EINTR:
 | 
			
		||||
-				/* if waiting, the wait will be longer, but
 | 
			
		||||
-				   that's OK */
 | 
			
		||||
-				continue;
 | 
			
		||||
-			default:
 | 
			
		||||
-				BAD_ERROR("sigtimedwait/sigwaitinfo failed "
 | 
			
		||||
-					"because %s\n", strerror(errno));
 | 
			
		||||
-			}
 | 
			
		||||
-		}
 | 
			
		||||
+		sig = wait_for_signal(&sigmask, &waiting);
 | 
			
		||||
 
 | 
			
		||||
 		if(sig == SIGQUIT && !waiting) {
 | 
			
		||||
 			if(pathname)
 | 
			
		||||
@ -1,49 +0,0 @@
 | 
			
		||||
From b2f6454a2b2517cfba7a24cf02e9bdf3b959c86a Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Tony Butler <spudz76@gmail.com>
 | 
			
		||||
Date: Sat, 18 Feb 2023 13:20:48 -0800
 | 
			
		||||
Subject: [PATCH] Move sysinfo.h into the linux-only section, should fix build
 | 
			
		||||
 on MacOS.
 | 
			
		||||
 | 
			
		||||
All compilers set `__linux__`, but `linux` may not be defined, and usage
 | 
			
		||||
was mixed.  Use `__linux__` everywhere instead.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Tony Butler <spudz76@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/mksquashfs.c | 6 +++---
 | 
			
		||||
 squashfs-tools/unsquashfs.c | 2 +-
 | 
			
		||||
 2 files changed, 4 insertions(+), 4 deletions(-)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/mksquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/mksquashfs.c
 | 
			
		||||
@@ -50,9 +50,9 @@
 | 
			
		||||
 #include <sys/wait.h>
 | 
			
		||||
 #include <limits.h>
 | 
			
		||||
 #include <ctype.h>
 | 
			
		||||
-#include <sys/sysinfo.h>
 | 
			
		||||
 
 | 
			
		||||
-#ifdef linux
 | 
			
		||||
+#ifdef __linux__
 | 
			
		||||
+#include <sys/sysinfo.h>
 | 
			
		||||
 #include <sched.h>
 | 
			
		||||
 #else
 | 
			
		||||
 #include <sys/sysctl.h>
 | 
			
		||||
@@ -5081,7 +5081,7 @@ static void initialise_threads(int readq
 | 
			
		||||
 		BAD_ERROR("Failed to set signal mask in intialise_threads\n");
 | 
			
		||||
 
 | 
			
		||||
 	if(processors == -1) {
 | 
			
		||||
-#ifdef linux
 | 
			
		||||
+#ifdef __linux__
 | 
			
		||||
 		cpu_set_t cpu_set;
 | 
			
		||||
 		CPU_ZERO(&cpu_set);
 | 
			
		||||
 
 | 
			
		||||
--- a/squashfs-tools/unsquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs.c
 | 
			
		||||
@@ -2720,7 +2720,7 @@ void initialise_threads(int fragment_buf
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	if(processors == -1) {
 | 
			
		||||
-#ifdef linux
 | 
			
		||||
+#ifdef __linux__
 | 
			
		||||
 		cpu_set_t cpu_set;
 | 
			
		||||
 		CPU_ZERO(&cpu_set);
 | 
			
		||||
 
 | 
			
		||||
@ -1,26 +0,0 @@
 | 
			
		||||
From dcf492077ef10ed7550b6e2b38b81318645bbdd5 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Christian Marangi <ansuelsmth@gmail.com>
 | 
			
		||||
Date: Sun, 19 Feb 2023 04:36:01 +0100
 | 
			
		||||
Subject: [PATCH] Unsquashfs: fix compilation error for missing sysctl.h on
 | 
			
		||||
 macos
 | 
			
		||||
 | 
			
		||||
Currently the include of sys/sysctl.h is guarded and done only for
 | 
			
		||||
FreeBSD system. Remove this to fix compilation error on macos following
 | 
			
		||||
the same pattern done in mksquashfs.c
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
 squashfs-tools/unsquashfs.c | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
--- a/squashfs-tools/unsquashfs.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs.c
 | 
			
		||||
@@ -36,7 +36,7 @@
 | 
			
		||||
 #include <sched.h>
 | 
			
		||||
 #include <sys/sysinfo.h>
 | 
			
		||||
 #include <sys/sysmacros.h>
 | 
			
		||||
-#elif defined __FreeBSD__
 | 
			
		||||
+#else
 | 
			
		||||
 #include <sys/sysctl.h>
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@ -1,37 +0,0 @@
 | 
			
		||||
--- a/squashfs-tools/xattr.c
 | 
			
		||||
+++ b/squashfs-tools/xattr.c
 | 
			
		||||
@@ -115,6 +115,7 @@ int xattr_get_prefix(struct xattr_list *
 | 
			
		||||
 	
 | 
			
		||||
 static int read_xattrs_from_system(char *filename, struct xattr_list **xattrs)
 | 
			
		||||
 {
 | 
			
		||||
+#if defined(linux)
 | 
			
		||||
 	ssize_t size, vsize;
 | 
			
		||||
 	char *xattr_names, *p;
 | 
			
		||||
 	int i;
 | 
			
		||||
@@ -227,6 +228,10 @@ failed:
 | 
			
		||||
 	free(xattr_list);
 | 
			
		||||
 	free(xattr_names);
 | 
			
		||||
 	return 0;
 | 
			
		||||
+#else
 | 
			
		||||
+	*xattrs = NULL;
 | 
			
		||||
+	return 0;
 | 
			
		||||
+#endif
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
--- a/squashfs-tools/unsquashfs_xattr.c
 | 
			
		||||
+++ b/squashfs-tools/unsquashfs_xattr.c
 | 
			
		||||
@@ -36,6 +36,7 @@ extern int strict_errors;
 | 
			
		||||
 
 | 
			
		||||
 int write_xattr(char *pathname, unsigned int xattr)
 | 
			
		||||
 {
 | 
			
		||||
+#if defined(linux)
 | 
			
		||||
 	unsigned int count;
 | 
			
		||||
 	struct xattr_list *xattr_list;
 | 
			
		||||
 	int i;
 | 
			
		||||
@@ -147,4 +148,5 @@ int write_xattr(char *pathname, unsigned
 | 
			
		||||
 	free_xattr(xattr_list, count);
 | 
			
		||||
 
 | 
			
		||||
 	return !failed;
 | 
			
		||||
+#endif
 | 
			
		||||
 }
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user