From fb0908018c1c80e12c431a30d3f873b0484cd48b Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Thu, 21 Oct 2021 20:51:20 +0200 Subject: [PATCH] coreutils: add recipe for version 9.0 --- sys-apps/coreutils/coreutils-9.0.recipe | 274 ++++++++ .../coreutils/patches/coreutils-9.0.patchset | 590 ++++++++++++++++++ 2 files changed, 864 insertions(+) create mode 100644 sys-apps/coreutils/coreutils-9.0.recipe create mode 100644 sys-apps/coreutils/patches/coreutils-9.0.patchset diff --git a/sys-apps/coreutils/coreutils-9.0.recipe b/sys-apps/coreutils/coreutils-9.0.recipe new file mode 100644 index 000000000..32718a17d --- /dev/null +++ b/sys-apps/coreutils/coreutils-9.0.recipe @@ -0,0 +1,274 @@ +SUMMARY="Standard GNU core utilities" +DESCRIPTION="Most of these programs have significant advantages over their \ +Unix counterparts, such as greater speed, additional options, and fewer \ +arbitrary limits. + +The programs that can be built with this package are: + + [ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp \ +csplit cut date dd df dir dircolors dirname du echo env expand expr \ +factor false fmt fold groups head hostid hostname id install join kill \ +link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup \ +nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink \ +realpath rm rmdir runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum \ +shred shuf sleep sort split stat stdbuf stty sum sync tac tail tee test \ +timeout touch tr true truncate tsort tty uname unexpand uniq unlink \ +uptime users vdir wc who whoami yes" +HOMEPAGE="https://www.gnu.org/software/coreutils/" +COPYRIGHT="1994-2017 Free Software Foundation, Inc." +LICENSE="GNU GPL v3" +REVISION="1" +SOURCE_URI="https://ftpmirror.gnu.org/coreutils/coreutils-$portVersion.tar.xz + https://ftp.gnu.org/gnu/coreutils/coreutils-$portVersion.tar.xz" +CHECKSUM_SHA256="ce30acdf4a41bc5bb30dd955e9eaa75fa216b4e3deb08889ed32433c7b3b97ce" +PATCHES="coreutils-$portVersion.patchset" + +ARCHITECTURES="all ?x86_gcc2" + +binVersionCompat="$portVersion compat >= 8" +PROVIDES=" + coreutils = $binVersionCompat + cmd:[ = $binVersionCompat + cmd:b2sum = $binVersionCompat + cmd:base32 = $binVersionCompat + cmd:base64 = $binVersionCompat + cmd:basename = $binVersionCompat + cmd:cat = $binVersionCompat + cmd:chcon = $binVersionCompat + cmd:chgrp = $binVersionCompat + cmd:chmod = $binVersionCompat + cmd:chown = $binVersionCompat + cmd:chroot = $binVersionCompat + cmd:cksum = $binVersionCompat + cmd:comm = $binVersionCompat + cmd:cp = $binVersionCompat + cmd:csplit = $binVersionCompat + cmd:cut = $binVersionCompat + cmd:date = $binVersionCompat + cmd:dd = $binVersionCompat + cmd:dir = $binVersionCompat + cmd:dircolors = $binVersionCompat + cmd:dirname = $binVersionCompat + cmd:du = $binVersionCompat + cmd:echo = $binVersionCompat + cmd:env = $binVersionCompat + cmd:expand = $binVersionCompat + cmd:expr = $binVersionCompat + cmd:factor = $binVersionCompat + cmd:false = $binVersionCompat + cmd:fmt = $binVersionCompat + cmd:fold = $binVersionCompat + cmd:groups = $binVersionCompat + cmd:head = $binVersionCompat + cmd:hostname = $binVersionCompat + cmd:id = $binVersionCompat + cmd:install = $binVersionCompat + cmd:join = $binVersionCompat + cmd:kill = $binVersionCompat + cmd:link = $binVersionCompat + cmd:ln = $binVersionCompat + cmd:logname = $binVersionCompat + cmd:ls = $binVersionCompat + cmd:md5sum = $binVersionCompat + cmd:mkdir = $binVersionCompat + cmd:mkfifo = $binVersionCompat + cmd:mknod = $binVersionCompat + cmd:mktemp = $binVersionCompat + cmd:mv = $binVersionCompat + cmd:nl = $binVersionCompat + cmd:nohup = $binVersionCompat + cmd:nproc = $binVersionCompat + cmd:numfmt = $binVersionCompat + cmd:od = $binVersionCompat + cmd:paste = $binVersionCompat + cmd:pathchk = $binVersionCompat + cmd:pr = $binVersionCompat + cmd:printenv = $binVersionCompat + cmd:printf = $binVersionCompat + cmd:ptx = $binVersionCompat + cmd:pwd = $binVersionCompat + cmd:readlink = $binVersionCompat + cmd:realpath = $binVersionCompat + cmd:rm = $binVersionCompat + cmd:rmdir = $binVersionCompat + cmd:runcon = $binVersionCompat + cmd:seq = $binVersionCompat + cmd:sha1sum = $binVersionCompat + cmd:sha224sum = $binVersionCompat + cmd:sha256sum = $binVersionCompat + cmd:sha384sum = $binVersionCompat + cmd:sha512sum = $binVersionCompat + cmd:shred = $binVersionCompat + cmd:shuf = $binVersionCompat + cmd:sleep = $binVersionCompat + cmd:sort = $binVersionCompat + cmd:split = $binVersionCompat + cmd:stat = $binVersionCompat + cmd:stdbuf = $binVersionCompat + cmd:stty = $binVersionCompat + cmd:sum = $binVersionCompat + cmd:sync = $binVersionCompat + cmd:tac = $binVersionCompat + cmd:tail = $binVersionCompat + cmd:tee = $binVersionCompat + cmd:test = $binVersionCompat + cmd:timeout = $binVersionCompat + cmd:touch = $binVersionCompat + cmd:tr = $binVersionCompat + cmd:true = $binVersionCompat + cmd:truncate = $binVersionCompat + cmd:tsort = $binVersionCompat + cmd:tty = $binVersionCompat + cmd:uname = $binVersionCompat + cmd:unexpand = $binVersionCompat + cmd:uniq = $binVersionCompat + cmd:unlink = $binVersionCompat + cmd:uptime = $binVersionCompat + cmd:vdir = $binVersionCompat + cmd:wc = $binVersionCompat + cmd:whoami = $binVersionCompat + cmd:yes = $binVersionCompat + " +REQUIRES=" + haiku + " + +BUILD_PREREQUIRES=" + haiku_devel + cmd:awk + cmd:gcc + cmd:grep + cmd:help2man + cmd:ld + cmd:make + cmd:makeinfo + cmd:sed + " + +defineDebugInfoPackage coreutils \ + $binDir/[ \ + $binDir/b2sum \ + $binDir/base32 \ + $binDir/base64 \ + $binDir/basename \ + $binDir/cat \ + $binDir/chcon \ + $binDir/chgrp \ + $binDir/chmod \ + $binDir/chown \ + $binDir/chroot \ + $binDir/cksum \ + $binDir/comm \ + $binDir/cp \ + $binDir/csplit \ + $binDir/cut \ + $binDir/date \ + $binDir/dd \ + $binDir/dir \ + $binDir/dircolors \ + $binDir/dirname \ + $binDir/du \ + $binDir/echo \ + $binDir/env \ + $binDir/expand \ + $binDir/expr \ + $binDir/factor \ + $binDir/false \ + $binDir/fmt \ + $binDir/fold \ + $binDir/groups \ + $binDir/head \ + $binDir/hostname \ + $binDir/id \ + $binDir/install \ + $binDir/join \ + $binDir/kill \ + $binDir/link \ + $binDir/ln \ + $binDir/logname \ + $binDir/ls \ + $binDir/md5sum \ + $binDir/mkdir \ + $binDir/mkfifo \ + $binDir/mknod \ + $binDir/mktemp \ + $binDir/mv \ + $binDir/nl \ + $binDir/nohup \ + $binDir/nproc \ + $binDir/numfmt \ + $binDir/od \ + $binDir/paste \ + $binDir/pathchk \ + $binDir/pr \ + $binDir/printenv \ + $binDir/printf \ + $binDir/ptx \ + $binDir/pwd \ + $binDir/readlink \ + $binDir/realpath \ + $binDir/rm \ + $binDir/rmdir \ + $binDir/runcon \ + $binDir/seq \ + $binDir/sha1sum \ + $binDir/sha224sum \ + $binDir/sha256sum \ + $binDir/sha384sum \ + $binDir/sha512sum \ + $binDir/shred \ + $binDir/shuf \ + $binDir/sleep \ + $binDir/sort \ + $binDir/split \ + $binDir/stat \ + $binDir/stdbuf \ + $binDir/stty \ + $binDir/sum \ + $binDir/sync \ + $binDir/tac \ + $binDir/tail \ + $binDir/tee \ + $binDir/test \ + $binDir/timeout \ + $binDir/touch \ + $binDir/tr \ + $binDir/true \ + $binDir/truncate \ + $binDir/tsort \ + $binDir/tty \ + $binDir/uname \ + $binDir/unexpand \ + $binDir/uniq \ + $binDir/unlink \ + $binDir/uptime \ + $binDir/vdir \ + $binDir/wc \ + $binDir/whoami \ + $binDir/yes + +PATCH() +{ + sed -i -e 's|O_NOCACHE|DD_NOCACHE|g' src/dd.c +} + +BUILD() +{ + FORCE_UNSAFE_CONFIGURE=1 runConfigure ./configure \ + --without-included-regex \ + --disable-rpath --with-gnu-ld \ + --enable-no-install-program=df \ + --enable-install-program=hostname + touch doc/*.info + make $jobArgs +} + +INSTALL() +{ + make install +} + +TEST() +{ + make check +} diff --git a/sys-apps/coreutils/patches/coreutils-9.0.patchset b/sys-apps/coreutils/patches/coreutils-9.0.patchset new file mode 100644 index 000000000..8c0a0945b --- /dev/null +++ b/sys-apps/coreutils/patches/coreutils-9.0.patchset @@ -0,0 +1,590 @@ +From 0aeb9a970dab1106af2af343a4f045a6b6053e25 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Tue, 13 May 2014 17:18:52 +0000 +Subject: define __USE_GNU for wempcpy + + +diff --git a/lib/fnmatch.c b/lib/fnmatch.c +index b8a71f1..0dc18c7 100644 +--- a/lib/fnmatch.c ++++ b/lib/fnmatch.c +@@ -23,6 +23,9 @@ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE 1 + #endif ++#ifndef __USE_GNU ++# define __USE_GNU 1 ++#endif + + #include + +-- +2.30.2 + + +From b99853f9633ddd2f6c319a1c4a6d4f0fabaaa33d Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Tue, 13 May 2014 17:22:10 +0000 +Subject: force declaration of rpl_inet_ntop + + +diff --git a/lib/arpa_inet.in.h b/lib/arpa_inet.in.h +index 9968067..ad11a60 100644 +--- a/lib/arpa_inet.in.h ++++ b/lib/arpa_inet.in.h +@@ -78,7 +78,7 @@ + + For more details, see the POSIX:2008 specification + . */ +-# if @REPLACE_INET_NTOP@ ++# if 1 + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) + # undef inet_ntop + # define inet_ntop rpl_inet_ntop +-- +2.30.2 + + +From fa94fafda6bbbbebf8bdfdebb012f1e0a580ad1f Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Tue, 13 May 2014 17:32:36 +0000 +Subject: Haiku defines mknod in unistd.h + + +diff --git a/lib/mknod.c b/lib/mknod.c +index c54e60c..018ed23 100644 +--- a/lib/mknod.c ++++ b/lib/mknod.c +@@ -18,6 +18,7 @@ + + #include + ++#include + #include + + #include +-- +2.30.2 + + +From d00b1d9937aac8f49411c8e5e97945a77a6a9ce8 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Tue, 13 May 2014 17:35:25 +0000 +Subject: protect the label, not used on Haiku + + +diff --git a/lib/mountlist.c b/lib/mountlist.c +index 352b35f..7514f57 100644 +--- a/lib/mountlist.c ++++ b/lib/mountlist.c +@@ -1089,7 +1089,8 @@ read_file_system_list (bool need_fs_type) + return mount_list; + + +- free_then_fail: _GL_UNUSED_LABEL; ++ #ifndef __HAIKU__ ++free_then_fail: _GL_UNUSED_LABEL; + { + int saved_errno = errno; + *mtail = NULL; +@@ -1104,6 +1105,7 @@ read_file_system_list (bool need_fs_type) + errno = saved_errno; + return NULL; + } ++#endif + } + + /* Free a mount entry as returned from read_file_system_list (). */ +-- +2.30.2 + + +From 4f1aca5f273e45958c72d238d5e2d8a6c98469d8 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 15 May 2014 15:40:32 +0000 +Subject: strchrnul needs __USE_GNU on Haiku + + +diff --git a/lib/regex.h b/lib/regex.h +index adb6976..3aefdd9 100644 +--- a/lib/regex.h ++++ b/lib/regex.h +@@ -30,8 +30,10 @@ extern "C" { + /* Define __USE_GNU to declare GNU extensions that violate the + POSIX name space rules. */ + #ifdef _GNU_SOURCE ++#ifndef __USE_GNU + # define __USE_GNU 1 + #endif ++#endif + + #ifdef _REGEX_LARGE_OFFSETS + +diff --git a/lib/string.in.h b/lib/string.in.h +index 8d77ae3..892640b 100644 +--- a/lib/string.in.h ++++ b/lib/string.in.h +@@ -37,6 +37,9 @@ + #define _GL_ALREADY_INCLUDING_STRING_H + + /* The include_next requires a split double-inclusion guard. */ ++#ifndef __USE_GNU ++#define __USE_GNU ++#endif + #@INCLUDE_NEXT@ @NEXT_STRING_H@ + + #undef _GL_ALREADY_INCLUDING_STRING_H +-- +2.30.2 + + +From 467aa80f3ee94d1a4e35f449542eb4f4d4a75286 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 15 May 2014 20:13:58 +0000 +Subject: don't build hostid, nice, users, who + + +diff --git a/Makefile.in b/Makefile.in +index b42c218..34c917e 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -944,8 +944,8 @@ CONFIG_CLEAN_FILES = + CONFIG_CLEAN_VPATH_FILES = + am__EXEEXT_1 = src/arch$(EXEEXT) src/coreutils$(EXEEXT) \ + src/hostname$(EXEEXT) +-am__EXEEXT_2 = src/chroot$(EXEEXT) src/df$(EXEEXT) src/hostid$(EXEEXT) \ +- src/libstdbuf.so$(EXEEXT) src/nice$(EXEEXT) src/pinky$(EXEEXT) \ ++am__EXEEXT_2 = src/chroot$(EXEEXT) src/df$(EXEEXT) \ ++ src/libstdbuf.so$(EXEEXT) \ + src/stdbuf$(EXEEXT) src/stty$(EXEEXT) src/timeout$(EXEEXT) \ + src/uptime$(EXEEXT) src/users$(EXEEXT) src/who$(EXEEXT) + am__EXEEXT_3 = src/[$(EXEEXT) src/b2sum$(EXEEXT) src/base64$(EXEEXT) \ +@@ -5715,7 +5715,7 @@ WARN_ON_USE_H = $(top_srcdir)/lib/warn-on-use.h + # FIXME: once lib/ and gnulib-tests/ are also converted, hoist to Makefile.am + AM_CFLAGS = $(WERROR_CFLAGS) + no_install__progs = src/arch src/coreutils src/hostname +-build_if_possible__progs = src/chroot src/df src/hostid \ ++build_if_possible__progs = src/chroot src/df \ + src/libstdbuf.so src/nice src/pinky src/stdbuf src/stty \ + src/timeout src/uptime src/users src/who + default__progs = src/[ src/b2sum src/base64 src/base32 src/basenc \ +-- +2.30.2 + + +From 12cc1134dad01775fb7c810383a9cc5d1145f549 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Fri, 6 Feb 2015 20:24:12 +0000 +Subject: import Haiku changes, fix warnings. + + +diff --git a/INSTALL b/INSTALL +index e82fd21..771315d 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -245,10 +245,10 @@ directory contains several dysfunctional programs; working variants of + these programs are available in '/usr/bin'. So, if you need '/usr/ucb' + in your 'PATH', put it _after_ '/usr/bin'. + +- On Haiku, software installed for all users goes in '/boot/common', ++ On Haiku, software installed for all users goes in '/boot/system', + not '/usr/local'. It is recommended to use the following options: + +- ./configure --prefix=/boot/common ++ ./configure --prefix=/boot/system + + Specifying the System Type + ========================== +diff --git a/lib/localcharset.c b/lib/localcharset.c +index 3c50858..5777260 100644 +--- a/lib/localcharset.c ++++ b/lib/localcharset.c +@@ -41,6 +41,13 @@ + # ifndef OS2 + # define OS2 + # endif ++ ++# if defined __HAIKU__ ++ /* To avoid the troubles of installing a separate file in the same ++ directory as the DLL and of retrieving the DLL's directory at ++ runtime, simply inline the aliases here. */ ++ cp = "UTF-8" "\0"; ++# endif + #endif + + #if !defined WINDOWS_NATIVE +diff --git a/src/copy.c b/src/copy.c +index cb9018f..495831e 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -66,6 +67,10 @@ + #include "xstrtol.h" + #include "selinux.h" + ++#if (defined(__BEOS__) || defined(__HAIKU__)) ++# include ++#endif ++ + #if USE_XATTR + # include + # include +@@ -664,6 +669,92 @@ is_ancestor (const struct stat *sb, const struct dir_list *ancestors) + return false; + } + ++ ++static int ++copy_attributes(int fromFd, int toFd) ++{ ++ struct dirent *dirent; ++ char buffer[65536]; ++ ++ DIR *attributes = fs_fopen_attr_dir(fromFd); ++ if (attributes == NULL) ++ return errno == B_UNSUPPORTED ? 0 : -1; ++ ++ while ((dirent = fs_read_attr_dir(attributes)) != NULL) { ++ struct stat stat; ++ off_t pos = 0; ++ int attrFromFD = fs_fopen_attr(fromFd, dirent->d_name, 0, O_RDONLY); ++ int attrToFD; ++ ++ if (attrFromFD < 0) ++ continue; ++ ++ if (fstat(attrFromFD, &stat) != 0) { ++ close(attrFromFD); ++ continue; ++ } ++ ++ attrToFD = fs_fopen_attr(toFd, dirent->d_name, stat.st_type, ++ O_WRONLY | O_TRUNC | O_CREAT); ++ if (attrToFD < 0) { ++ close(attrFromFD); ++ continue; ++ } ++ ++ while (true) { ++ ssize_t bytesRead, bytesWritten; ++ ++ bytesRead = read_pos(attrFromFD, pos, buffer, sizeof(buffer)); ++ if (bytesRead < 0) { ++ fprintf(stderr, "error reading attribute '%s'", dirent->d_name); ++ break; ++ } ++ ++ bytesWritten = write_pos(attrToFD, pos, buffer, bytesRead); ++ if (bytesWritten != bytesRead) { ++ fprintf(stderr, "error writing attribute '%s'", dirent->d_name); ++ break; ++ } ++ ++ pos += bytesWritten; ++ stat.st_size -= bytesWritten; ++ ++ if (stat.st_size <= 0) ++ break; ++ } ++ close(attrToFD); ++ close(attrFromFD); ++ } ++ ++ fs_close_attr_dir(attributes); ++ return 0; ++} ++ ++ ++static int ++copy_attributes_by_name(const char *from, const char *to, int resolveLinks) ++{ ++ int fromFd, toFd, result; ++ ++ fromFd = open(from, O_RDONLY | (resolveLinks ? 0 : O_NOTRAVERSE)); ++ if (fromFd < 0) ++ return -1; ++ ++ toFd = open(to, O_RDONLY | (resolveLinks ? 0 : O_NOTRAVERSE)); ++ if (toFd < 0) { ++ close(fromFd); ++ return -1; ++ } ++ ++ result = copy_attributes(fromFd, toFd); ++ ++ close(fromFd); ++ close(toFd); ++ ++ return result; ++} ++ ++ + static bool + errno_unsupported (int err) + { +@@ -797,6 +888,10 @@ copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst, + error (0, errno, _("cannot access %s"), quoteaf (src_name_in)); + return false; + } ++ ++ if (x->ignore_attributes == 0 ++ && copy_attributes_by_name(src_name_in, dst_name_in, true) != 0) ++ fprintf(stderr, "%s: could not copy attributes\n", src_name_in); + + /* For cp's -H option, dereference command line arguments, but do not + dereference symlinks that are found via recursive traversal. */ +@@ -1488,6 +1583,11 @@ copy_reg (char const *src_name, char const *dst_name, + return_val = false; + } + } ++ ++ if (x->ignore_attributes == 0 ++ && copy_attributes(source_desc, dest_desc) != 0) ++ fprintf(stderr, "%s: could not copy attributes\n", src_name); ++ + + close_src_and_dst_desc: + if (close (dest_desc) < 0) +@@ -2465,6 +2565,12 @@ copy_internal (char const *src_name, char const *dst_name, + dereference)) + goto un_backup; + ++ if (x->ignore_attributes == 0 ++ && copy_attributes_by_name (earlier_file, dst_name, ++ false) != 0) ++ error (0, errno, "cannot copy attributes from %s\n", ++ earlier_file); ++ + return true; + } + } +@@ -2883,6 +2989,11 @@ copy_internal (char const *src_name, char const *dst_name, + preserving owner/group is a potential security problem. */ + } + } ++ ++ if (x->ignore_attributes == 0 ++ && copy_attributes_by_name(src_name, dst_name, false) != 0) ++ fprintf(stderr, "%s: could not copy attributes\n", src_name); ++ + } + else + { +diff --git a/src/copy.h b/src/copy.h +index 68d52e1..2da80a8 100644 +--- a/src/copy.h ++++ b/src/copy.h +@@ -189,6 +189,9 @@ struct cp_options + must be false. */ + bool require_preserve; + ++ /* If nonzero, attributes will be ignored when copying. */ ++ int ignore_attributes; ++ + /* If true, attempt to preserve the SELinux security context, too. + Set this only if the kernel is SELinux enabled. */ + bool preserve_security_context; +diff --git a/src/cp.c b/src/cp.c +index c97a675..4050cba 100644 +--- a/src/cp.c ++++ b/src/cp.c +@@ -64,6 +64,7 @@ struct dir_attr + enum + { + ATTRIBUTES_ONLY_OPTION = CHAR_MAX + 1, ++ IGNORE_ATTRIBUTES, + COPY_CONTENTS_OPTION, + NO_PRESERVE_ATTRIBUTES_OPTION, + PARENTS_OPTION, +@@ -112,6 +113,7 @@ static struct option const long_opts[] = + {"copy-contents", no_argument, NULL, COPY_CONTENTS_OPTION}, + {"dereference", no_argument, NULL, 'L'}, + {"force", no_argument, NULL, 'f'}, ++ {"ignore-attributes", no_argument, NULL, IGNORE_ATTRIBUTES}, + {"interactive", no_argument, NULL, 'i'}, + {"link", no_argument, NULL, 'l'}, + {"no-clobber", no_argument, NULL, 'n'}, +@@ -170,6 +172,7 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n\ + -f, --force if an existing destination file cannot be\n\ + opened, remove it and try again (this option\n\ + is ignored when the -n option is also used)\n\ ++ --ignore-attributes do not copy attributes\n\ + -i, --interactive prompt before overwrite (overrides a previous -n\ + \n\ + option)\n\ +@@ -814,6 +817,7 @@ cp_option_init (struct cp_options *x) + x->data_copy_required = true; + x->require_preserve = false; + x->recursive = false; ++ x->ignore_attributes = false; + x->sparse_mode = SPARSE_AUTO; + x->symbolic_link = false; + x->set_mode = false; +@@ -1015,6 +1019,10 @@ main (int argc, char **argv) + x.dereference = DEREF_COMMAND_LINE_ARGUMENTS; + break; + ++ case IGNORE_ATTRIBUTES: ++ x.ignore_attributes = true; ++ break; ++ + case 'i': + x.interactive = I_ASK_USER; + break; +diff --git a/src/dircolors.h b/src/dircolors.h +index c06ecb7..6c059c4 100644 +--- a/src/dircolors.h ++++ b/src/dircolors.h +@@ -62,7 +62,7 @@ static char const G_line[] = + 'S','E','T','G','I','D',' ','3','0',';','4','3',' ','#',' ','f','i','l','e',' ','t','h','a','t',' ','i','s',' ','s','e','t','g','i','d',' ','(','g','+','s',')',0, + 'C','A','P','A','B','I','L','I','T','Y',' ','3','0',';','4','1',' ','#',' ','f','i','l','e',' ','w','i','t','h',' ','c','a','p','a','b','i','l','i','t','y',0, + 'S','T','I','C','K','Y','_','O','T','H','E','R','_','W','R','I','T','A','B','L','E',' ','3','0',';','4','2',' ','#',' ','d','i','r',' ','t','h','a','t',' ','i','s',' ','s','t','i','c','k','y',' ','a','n','d',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',' ','(','+','t',',','o','+','w',')',0, +- 'O','T','H','E','R','_','W','R','I','T','A','B','L','E',' ','3','4',';','4','2',' ','#',' ','d','i','r',' ','t','h','a','t',' ','i','s',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',' ','(','o','+','w',')',' ','a','n','d',' ','n','o','t',' ','s','t','i','c','k','y',0, ++ 'O','T','H','E','R','_','W','R','I','T','A','B','L','E',' ','3','4',';','4','3',' ','#',' ','d','i','r',' ','t','h','a','t',' ','i','s',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',' ','(','o','+','w',')',' ','a','n','d',' ','n','o','t',' ','s','t','i','c','k','y',0, + 'S','T','I','C','K','Y',' ','3','7',';','4','4',' ','#',' ','d','i','r',' ','w','i','t','h',' ','t','h','e',' ','s','t','i','c','k','y',' ','b','i','t',' ','s','e','t',' ','(','+','t',')',' ','a','n','d',' ','n','o','t',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',0, + '#',' ','T','h','i','s',' ','i','s',' ','f','o','r',' ','f','i','l','e','s',' ','w','i','t','h',' ','e','x','e','c','u','t','e',' ','p','e','r','m','i','s','s','i','o','n',':',0, + 'E','X','E','C',' ','0','1',';','3','2',0, +diff --git a/src/dircolors.hin b/src/dircolors.hin +index b5d6452..6352dea 100644 +--- a/src/dircolors.hin ++++ b/src/dircolors.hin +@@ -64,7 +64,7 @@ SETUID 37;41 # file that is setuid (u+s) + SETGID 30;43 # file that is setgid (g+s) + CAPABILITY 30;41 # file with capability + STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) +-OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky ++OTHER_WRITABLE 34;43 # dir that is other-writable (o+w) and not sticky + STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable + + # This is for files with execute permission: +diff --git a/src/ls.c b/src/ls.c +index 1047801..fc33bff 100644 +--- a/src/ls.c ++++ b/src/ls.c +@@ -719,6 +719,11 @@ static struct ignore_pattern *hide_patterns; + want to mess up the terminal if control chars get sent to it, and some + quoting methods pass through control chars as-is. */ + static bool qmark_funny_chars; ++#if defined(__HAIKU__) /* Default to show UTF8 chars in Haiku terminal. */ ++#define QMARK_FUNNY_CHARS_TTY 0 ++#else ++#define QMARK_FUNNY_CHARS_TTY 1 ++#endif + + /* Quoting options for file and dir name output. */ + +@@ -4395,6 +4400,7 @@ print_long_format (const struct fileinfo *f) + p = buf; + } + ++#if !defined(__HAIKU__) + if (f->stat_ok + && (S_ISCHR (f->stat.st_mode) || S_ISBLK (f->stat.st_mode))) + { +@@ -4410,6 +4416,7 @@ print_long_format (const struct fileinfo *f) + umaxtostr (minor (f->stat.st_rdev), minorbuf)); + } + else ++#endif + { + char hbuf[LONGEST_HUMAN_READABLE + 1]; + char const *size = +diff --git a/src/mv.c b/src/mv.c +index 7d81b59..2fa32c1 100644 +--- a/src/mv.c ++++ b/src/mv.c +@@ -129,6 +129,7 @@ cp_option_init (struct cp_options *x) + x->reduce_diagnostics = false; + x->data_copy_required = true; + x->require_preserve = false; /* FIXME: maybe make this an option */ ++ x->ignore_attributes = false; + x->require_preserve_context = false; + x->preserve_xattr = true; + x->require_preserve_xattr = false; +diff --git a/src/remove.c b/src/remove.c +index 5dd0479..457b8f4 100644 +--- a/src/remove.c ++++ b/src/remove.c +@@ -215,7 +215,7 @@ prompt (FTS const *fts, FTSENT const *ent, bool is_dir, + wp_errno = errno; + } + +- if (write_protected || x->interactive == RMI_ALWAYS) ++ if (write_protected || errno || x->interactive == RMI_ALWAYS) + { + if (0 <= write_protected && dirent_type == DT_UNKNOWN) + { +diff --git a/src/uname.c b/src/uname.c +index ae9b8e2..2c551af 100644 +--- a/src/uname.c ++++ b/src/uname.c +@@ -49,6 +49,10 @@ + # include + #endif + ++#ifdef __HAIKU__ ++# include ++#endif ++ + #include "system.h" + #include "die.h" + #include "error.h" +@@ -338,6 +342,30 @@ main (int argc, char **argv) + # endif + } + #endif ++ ++#ifdef __HAIKU__ ++ { ++ cpu_topology_node_info root; ++ uint32 count = 1; ++ status_t error = get_cpu_topology_info(&root, &count); ++ if (error != B_OK || count < 1) ++ element = "unknown"; ++ else { ++ switch (root.data.root.platform) { ++ case B_CPU_x86: ++ element = "x86"; ++ break; ++ case B_CPU_x86_64: ++ element = "x86_64"; ++ break; ++ default: ++ element = "other"; ++ break; ++ } ++ } ++ } ++#endif ++ + if (! (toprint == UINT_MAX && element == unknown)) + print_element (element); + } +-- +2.30.2 + + +From a8d6d0bacb954aee1e398bb5dcd2511f76662955 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 21 Oct 2021 20:28:22 +0200 +Subject: config.h is required for stdint.h + + +diff --git a/src/crctab.c b/src/crctab.c +index 20a1e41..fdf2fdf 100644 +--- a/src/crctab.c ++++ b/src/crctab.c +@@ -1,3 +1,4 @@ ++#include + #include + + uint_fast32_t const crctab[8][256] = { +-- +2.30.2