!84 [sync] PR-82: coreutils:backport some patches from upstream
From: @openeuler-sync-bot Reviewed-by: @overweight Signed-off-by: @overweight
This commit is contained in:
commit
e89bc37fc9
@ -0,0 +1,89 @@
|
||||
From d6125af095c9553f38cba0696f15158f5abe4ecc Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Wed, 30 Jun 2021 17:53:22 +0200
|
||||
Subject: [PATCH] df: fix duplicated remote entries due to bind mounts
|
||||
|
||||
As originally reported in <https://bugzilla.redhat.com/1962515>,
|
||||
df invoked without -a printed duplicated entries for NFS mounts
|
||||
of bind mounts. This is a regression from commit v8.25-54-g1c17f61ef99,
|
||||
which introduced the use of a hash table.
|
||||
|
||||
The proposed patch makes sure that the devlist entry seen the last time
|
||||
is used for comparison when eliminating duplicated mount entries. This
|
||||
way it worked before introducing the hash table.
|
||||
|
||||
Patch co-authored by Roberto Bergantinos.
|
||||
|
||||
* src/ls.c (struct devlist): Introduce the seen_last pointer.
|
||||
(devlist_for_dev): Return the devlist entry seen the last time if found.
|
||||
(filter_mount_list): Remember the devlist entry seen the last time for
|
||||
each hashed item.
|
||||
* NEWS: Mention the bug fix.
|
||||
Fixes https://bugs.gnu.org/49298
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/d6125af095c9553f38cba0696f15158f5abe4ecc
|
||||
Conflict: NEWS Context adaptation
|
||||
|
||||
---
|
||||
NEWS | 3 +++
|
||||
src/df.c | 15 +++++++++++++--
|
||||
2 files changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index fc8ff16..bae6ced 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
** Bug fixes
|
||||
|
||||
+ df no longer outputs duplicate remote mounts in the presence of bind mounts.
|
||||
+ [bug introduced in coreutils-8.26]
|
||||
+
|
||||
'sort -g' no longer infloops when given multiple NaNs on platforms
|
||||
like x86-64 where 'long double' has padding bits in memory.
|
||||
Although the fix alters sort -g's NaN ordering, that ordering has
|
||||
diff --git a/src/df.c b/src/df.c
|
||||
index 7e01839..3e9247f 100644
|
||||
--- a/src/df.c
|
||||
+++ b/src/df.c
|
||||
@@ -54,6 +54,7 @@ struct devlist
|
||||
dev_t dev_num;
|
||||
struct mount_entry *me;
|
||||
struct devlist *next;
|
||||
+ struct devlist *seen_last; /* valid for hashed devlist entries only */
|
||||
};
|
||||
|
||||
/* Filled with device numbers of examined file systems to avoid
|
||||
@@ -689,7 +690,13 @@ devlist_for_dev (dev_t dev)
|
||||
return NULL;
|
||||
struct devlist dev_entry;
|
||||
dev_entry.dev_num = dev;
|
||||
- return hash_lookup (devlist_table, &dev_entry);
|
||||
+
|
||||
+ struct devlist *found = hash_lookup (devlist_table, &dev_entry);
|
||||
+ if (found == NULL)
|
||||
+ return NULL;
|
||||
+
|
||||
+ /* Return the last devlist entry we have seen with this dev_num */
|
||||
+ return found->seen_last;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -807,8 +814,12 @@ filter_mount_list (bool devices_only)
|
||||
devlist->dev_num = buf.st_dev;
|
||||
devlist->next = device_list;
|
||||
device_list = devlist;
|
||||
- if (hash_insert (devlist_table, devlist) == NULL)
|
||||
+
|
||||
+ struct devlist *hash_entry = hash_insert (devlist_table, devlist);
|
||||
+ if (hash_entry == NULL)
|
||||
xalloc_die ();
|
||||
+ /* Ensure lookups use this latest devlist. */
|
||||
+ hash_entry->seen_last = devlist;
|
||||
|
||||
me = me->me_next;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
57
backport-df-fix-memory-leak.patch
Normal file
57
backport-df-fix-memory-leak.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From fb7579768d688a300c4ac76451e1fc7cad59e3e8 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 31 Jan 2022 19:52:43 -0800
|
||||
Subject: [PATCH] df: fix memory leak
|
||||
|
||||
* src/df.c (devlist_free): Remove.
|
||||
(filter_mount_list): Free all of devlist, instead of merely
|
||||
the entries in devlist_table.
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/fb7579768d688a300c4ac76451e1fc7cad59e3e8
|
||||
Conflict: NA
|
||||
---
|
||||
src/df.c | 14 ++++----------
|
||||
1 file changed, 4 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/df.c b/src/df.c
|
||||
index 7d3207807..4b2cfb77a 100644
|
||||
--- a/src/df.c
|
||||
+++ b/src/df.c
|
||||
@@ -710,12 +710,6 @@ devlist_for_dev (dev_t dev)
|
||||
return found->seen_last;
|
||||
}
|
||||
|
||||
-static void
|
||||
-devlist_free (void *p)
|
||||
-{
|
||||
- free (p);
|
||||
-}
|
||||
-
|
||||
/* Filter mount list by skipping duplicate entries.
|
||||
In the case of duplicates - based on the device number - the mount entry
|
||||
with a '/' in its me_devname (i.e., not pseudo name like tmpfs) wins.
|
||||
@@ -736,9 +730,7 @@ filter_mount_list (bool devices_only)
|
||||
mount_list_size++;
|
||||
|
||||
devlist_table = hash_initialize (mount_list_size, NULL,
|
||||
- devlist_hash,
|
||||
- devlist_compare,
|
||||
- devlist_free);
|
||||
+ devlist_hash, devlist_compare, NULL);
|
||||
if (devlist_table == NULL)
|
||||
xalloc_die ();
|
||||
|
||||
@@ -845,7 +837,9 @@ filter_mount_list (bool devices_only)
|
||||
me = device_list->me;
|
||||
me->me_next = mount_list;
|
||||
mount_list = me;
|
||||
- device_list = device_list->next;
|
||||
+ struct devlist *next = device_list->next;
|
||||
+ free (device_list);
|
||||
+ device_list = next;
|
||||
}
|
||||
|
||||
hash_free (devlist_table);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
54
backport-ls-avoid-triggering-automounts.patch
Normal file
54
backport-ls-avoid-triggering-automounts.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 85c975df2c25bd799370b04bb294e568e001102f Mon Sep 17 00:00:00 2001
|
||||
From: Rohan Sable <rsable@redhat.com>
|
||||
Date: Mon, 7 Mar 2022 14:14:13 +0000
|
||||
Subject: [PATCH] ls: avoid triggering automounts
|
||||
|
||||
statx() has different defaults wrt automounting
|
||||
compared to stat() or lstat(), so explicitly
|
||||
set the AT_NO_AUTOMOUNT flag to suppress that behavior,
|
||||
and avoid unintended operations or potential errors.
|
||||
|
||||
* src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior.
|
||||
* NEWS: Mention the change in behavior.
|
||||
Fixes https://bugs.gnu.org/54286
|
||||
|
||||
Signed-off-by: Rohan Sable <rsable@redhat.com>
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/85c975df2c25bd799370b04bb294e568e001102f
|
||||
Conflict: NEWS Context adaptation
|
||||
|
||||
---
|
||||
NEWS | 3 +++
|
||||
src/ls.c | 2 +-
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index bae6ced..76a6986 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
** Bug fixes
|
||||
|
||||
+ ls no longer tries to automount files, reverting to the behavior
|
||||
+ before the statx() call was introduced in coreutils-8.32.
|
||||
+
|
||||
df no longer outputs duplicate remote mounts in the presence of bind mounts.
|
||||
[bug introduced in coreutils-8.26]
|
||||
|
||||
diff --git a/src/ls.c b/src/ls.c
|
||||
index 8eb483d..cd23446 100644
|
||||
--- a/src/ls.c
|
||||
+++ b/src/ls.c
|
||||
@@ -1154,7 +1154,7 @@ do_statx (int fd, const char *name, struct stat *st, int flags,
|
||||
{
|
||||
struct statx stx;
|
||||
bool want_btime = mask & STATX_BTIME;
|
||||
- int ret = statx (fd, name, flags, mask, &stx);
|
||||
+ int ret = statx (fd, name, flags | AT_NO_AUTOMOUNT, mask, &stx);
|
||||
if (ret >= 0)
|
||||
{
|
||||
statx_to_stat (&stx, st);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
50
backport-pr-don-t-use-uninitialized-var.patch
Normal file
50
backport-pr-don-t-use-uninitialized-var.patch
Normal file
@ -0,0 +1,50 @@
|
||||
From 81d58df1647ea79c5161f99d8bd241f0c78df729 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Tue, 19 Apr 2022 16:13:55 -0700
|
||||
Subject: [PATCH] =?UTF-8?q?pr:=20don=E2=80=99t=20use=20uninitialized=20var?=
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Found with -flto and --enable-gcc-warnings.
|
||||
* src/pr.c (getoptarg): Fix misuse of xstrtol, which does not
|
||||
necessarily set tmp_long on errror, and does not set errno in any
|
||||
reliable way. The previous code might access uninitialized
|
||||
storage; on typical platforms this merely causes it to possibly
|
||||
print the wrong diagnostic.
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/81d58df1647ea79c5161f99d8bd241f0c78df729
|
||||
Conflict: NA
|
||||
|
||||
---
|
||||
src/pr.c | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/pr.c b/src/pr.c
|
||||
index 4c17c0050..a8feba9d8 100644
|
||||
--- a/src/pr.c
|
||||
+++ b/src/pr.c
|
||||
@@ -1173,10 +1173,17 @@ getoptarg (char *arg, char switch_char, char *character, int *number)
|
||||
if (*arg)
|
||||
{
|
||||
long int tmp_long;
|
||||
- if (xstrtol (arg, NULL, 10, &tmp_long, "") != LONGINT_OK
|
||||
- || tmp_long <= 0 || INT_MAX < tmp_long)
|
||||
+ strtol_error e = xstrtol (arg, NULL, 10, &tmp_long, "");
|
||||
+ if (e == LONGINT_OK)
|
||||
{
|
||||
- error (0, INT_MAX < tmp_long ? EOVERFLOW : errno,
|
||||
+ if (tmp_long <= 0)
|
||||
+ e = LONGINT_INVALID;
|
||||
+ else if (INT_MAX < tmp_long)
|
||||
+ e = LONGINT_OVERFLOW;
|
||||
+ }
|
||||
+ if (e != LONGINT_OK)
|
||||
+ {
|
||||
+ error (0, e & LONGINT_OVERFLOW ? EOVERFLOW : 0,
|
||||
_("'-%c' extra characters or invalid number in the argument: %s"),
|
||||
switch_char, quote (arg));
|
||||
usage (EXIT_FAILURE);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
79
backport-sort-fix-sort-g-infloop-again.patch
Normal file
79
backport-sort-fix-sort-g-infloop-again.patch
Normal file
@ -0,0 +1,79 @@
|
||||
From 2f56f5a42033dc6db15d8963e54566f01fa0d61d Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sun, 1 May 2022 22:46:21 -0700
|
||||
Subject: [PATCH] sort: fix sort -g infloop again
|
||||
|
||||
Problem reported by Giulio Genovese (Bug#55212).
|
||||
* src/sort.c (nan_compare): To compare NaNs, simply printf+strcmp.
|
||||
This avoids the problem of padding bits and unspecified behavior.
|
||||
Args are now long double instead of char *; caller changed.
|
||||
|
||||
Reference:https://github.com/coreutils/coreutils/commit/2f56f5a42033dc6db15d8963e54566f01fa0d61d
|
||||
Conflict: NEWS Context adaptation
|
||||
|
||||
---
|
||||
NEWS | 6 ++++++
|
||||
src/sort.c | 21 ++++++---------------
|
||||
2 files changed, 12 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 3e44c0c..fc8ff16 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -4,6 +4,12 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
** Bug fixes
|
||||
|
||||
+ 'sort -g' no longer infloops when given multiple NaNs on platforms
|
||||
+ like x86-64 where 'long double' has padding bits in memory.
|
||||
+ Although the fix alters sort -g's NaN ordering, that ordering has
|
||||
+ long been documented to be platform-dependent.
|
||||
+ [bug introduced 1999-05-02 and only partly fixed in coreutils-8.14]
|
||||
+
|
||||
cp now copies /dev/fd/N correctly on platforms like Solaris where
|
||||
it is a character-special file whose minor device number is N.
|
||||
[bug introduced in fileutils-4.1.6]
|
||||
diff --git a/src/sort.c b/src/sort.c
|
||||
index 8e1533e..5b4342f 100644
|
||||
--- a/src/sort.c
|
||||
+++ b/src/sort.c
|
||||
@@ -2360,22 +2360,13 @@ numcompare_mb (const char *a, const char *b)
|
||||
}
|
||||
#endif /* HAV_EMBRTOWC */
|
||||
|
||||
-/* Work around a problem whereby the long double value returned by glibc's
|
||||
- strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
|
||||
- A and B before calling strtold. FIXME: remove this function if
|
||||
- gnulib guarantees that strtold's result is always well defined. */
|
||||
static int
|
||||
-nan_compare (char const *sa, char const *sb)
|
||||
+nan_compare (long double a, long double b)
|
||||
{
|
||||
- long double a;
|
||||
- memset (&a, 0, sizeof a);
|
||||
- a = strtold (sa, NULL);
|
||||
-
|
||||
- long double b;
|
||||
- memset (&b, 0, sizeof b);
|
||||
- b = strtold (sb, NULL);
|
||||
-
|
||||
- return memcmp (&a, &b, sizeof a);
|
||||
+ char buf[2][sizeof "-nan()" + CHAR_BIT * sizeof a];
|
||||
+ snprintf (buf[0], sizeof buf[0], "%Lf", a);
|
||||
+ snprintf (buf[1], sizeof buf[1], "%Lf", b);
|
||||
+ return strcmp (buf[0], buf[1]);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -2403,7 +2394,7 @@ general_numcompare (char const *sa, char const *sb)
|
||||
: a == b ? 0
|
||||
: b == b ? -1
|
||||
: a == a ? 1
|
||||
- : nan_compare (sa, sb));
|
||||
+ : nan_compare (a, b));
|
||||
}
|
||||
|
||||
/* Return an integer in 1..12 of the month name MONTH.
|
||||
--
|
||||
2.27.0
|
||||
|
||||
67
backport-stat-only-automount-with-cached-never.patch
Normal file
67
backport-stat-only-automount-with-cached-never.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 92cb8427c537f37edd43c5cef1909585201372ab Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||
Date: Mon, 7 Mar 2022 23:29:20 +0000
|
||||
Subject: [PATCH] stat: only automount with --cached=never
|
||||
|
||||
Revert to the default behavior before the introduction of statx().
|
||||
|
||||
* src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
|
||||
* doc/coreutils.texi (stat invocation): Mention the automount
|
||||
behavior with --cached=never.
|
||||
* NEWS: Mention the change in behavior.
|
||||
|
||||
Fixes https://bugs.gnu.org/54287
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/92cb8427c537f37edd43c5cef1909585201372ab
|
||||
Conflict: NEWS Context adaptation
|
||||
|
||||
---
|
||||
NEWS | 4 ++++
|
||||
doc/coreutils.texi | 1 +
|
||||
src/stat.c | 3 +++
|
||||
3 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 76a6986..81f5cf5 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -4,6 +4,10 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
** Bug fixes
|
||||
|
||||
+ stat no longer tries to automount files by default, reverting to the
|
||||
+ behavior before the statx() call was introduced in coreutils-8.32.
|
||||
+ Only `stat --cached=never` will continue to automount files.
|
||||
+
|
||||
ls no longer tries to automount files, reverting to the behavior
|
||||
before the statx() call was introduced in coreutils-8.32.
|
||||
|
||||
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
|
||||
index 467f635..ff8e7a6 100644
|
||||
--- a/doc/coreutils.texi
|
||||
+++ b/doc/coreutils.texi
|
||||
@@ -12382,6 +12382,7 @@ Always read the already cached attributes if available.
|
||||
|
||||
@item never
|
||||
Always sychronize with the latest file system attributes.
|
||||
+This also mounts automounted files.
|
||||
|
||||
@item default
|
||||
Leave the caching behavior to the underlying file system.
|
||||
diff --git a/src/stat.c b/src/stat.c
|
||||
index 5012622..1f1c8e4 100644
|
||||
--- a/src/stat.c
|
||||
+++ b/src/stat.c
|
||||
@@ -1355,6 +1355,9 @@ do_stat (char const *filename, char const *format, char const *format2)
|
||||
else if (force_sync)
|
||||
flags |= AT_STATX_FORCE_SYNC;
|
||||
|
||||
+ if (! force_sync)
|
||||
+ flags |= AT_NO_AUTOMOUNT;
|
||||
+
|
||||
fd = statx (fd, pathname, flags, format_to_mask (format), &stx);
|
||||
if (fd < 0)
|
||||
{
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,47 @@
|
||||
From ddafdae21c574b1dcd5c56e403c82010e7ed3565 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||
Date: Mon, 2 May 2022 14:27:34 +0100
|
||||
Subject: [PATCH] tests: sort-NaN-infloop: augment testing for recent fix
|
||||
|
||||
* tests/misc/sort-NaN-infloop.sh: Add test case from
|
||||
https://unix.stackexchange.com/a/700967/37127
|
||||
* src/sort.c: Avoid syntax-check failure.
|
||||
|
||||
Reference: https://github.com/coreutils/coreutils/commit/ddafdae21c574b1dcd5c56e403c82010e7ed3565
|
||||
Conflict: NA
|
||||
|
||||
---
|
||||
src/sort.c | 2 +-
|
||||
tests/misc/sort-NaN-infloop.sh | 3 +++
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/sort.c b/src/sort.c
|
||||
index b2a465cf5..8af356c66 100644
|
||||
--- a/src/sort.c
|
||||
+++ b/src/sort.c
|
||||
@@ -2006,7 +2006,7 @@ numcompare (char const *a, char const *b)
|
||||
static int
|
||||
nan_compare (long double a, long double b)
|
||||
{
|
||||
- char buf[2][sizeof "-nan()" + CHAR_BIT * sizeof a];
|
||||
+ char buf[2][sizeof "-nan""()" + CHAR_BIT * sizeof a];
|
||||
snprintf (buf[0], sizeof buf[0], "%Lf", a);
|
||||
snprintf (buf[1], sizeof buf[1], "%Lf", b);
|
||||
return strcmp (buf[0], buf[1]);
|
||||
diff --git a/tests/misc/sort-NaN-infloop.sh b/tests/misc/sort-NaN-infloop.sh
|
||||
index 93cf9bd77..cc1c583cd 100755
|
||||
--- a/tests/misc/sort-NaN-infloop.sh
|
||||
+++ b/tests/misc/sort-NaN-infloop.sh
|
||||
@@ -23,6 +23,9 @@ echo nan > F || framework_failure_
|
||||
printf 'nan\nnan\n' > exp || framework_failure_
|
||||
timeout 10 sort -g -m F F > out || fail=1
|
||||
|
||||
+# This was seen to infloop on some systems until coreutils v9.2 (bug 55212)
|
||||
+yes nan | head -n128095 | timeout 60 sort -g > /dev/null || fail=1
|
||||
+
|
||||
compare exp out || fail=1
|
||||
|
||||
Exit $fail
|
||||
--
|
||||
2.27.0
|
||||
|
||||
79
backport-touch-fix-aliasing-bug.patch
Normal file
79
backport-touch-fix-aliasing-bug.patch
Normal file
@ -0,0 +1,79 @@
|
||||
From afffa445b968d2fa4397bcf1e93f3dde28689526 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 27 Jul 2022 09:59:38 -0700
|
||||
Subject: [PATCH] touch: fix aliasing bug
|
||||
|
||||
Problem reported by Tim Lange in:
|
||||
https://lists.gnu.org/r/coreutils/2022-07/msg00008.html
|
||||
* src/touch.c (date_relative): Rename from get_reldate,
|
||||
and use a functional style to fix the aliasing bug.
|
||||
|
||||
Reference:https://github.com/coreutils/coreutils/commit/afffa445b968d2fa4397bcf1e93f3dde28689526
|
||||
Conflict:NA
|
||||
|
||||
---
|
||||
src/touch.c | 24 +++++++++++-------------
|
||||
1 file changed, 11 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/touch.c b/src/touch.c
|
||||
index 21c247d0b..d8d232c19 100644
|
||||
--- a/src/touch.c
|
||||
+++ b/src/touch.c
|
||||
@@ -105,15 +105,15 @@ static int const time_masks[] =
|
||||
CH_ATIME, CH_ATIME, CH_ATIME, CH_MTIME, CH_MTIME
|
||||
};
|
||||
|
||||
-/* Store into *RESULT the result of interpreting FLEX_DATE as a date,
|
||||
- relative to NOW. If NOW is null, use the current time. */
|
||||
+/* The interpretation of FLEX_DATE as a date, relative to NOW. */
|
||||
|
||||
-static void
|
||||
-get_reldate (struct timespec *result,
|
||||
- char const *flex_date, struct timespec const *now)
|
||||
+static struct timespec
|
||||
+date_relative (char const *flex_date, struct timespec now)
|
||||
{
|
||||
- if (! parse_datetime (result, flex_date, now))
|
||||
+ struct timespec result;
|
||||
+ if (! parse_datetime (&result, flex_date, &now))
|
||||
die (EXIT_FAILURE, 0, _("invalid date format %s"), quote (flex_date));
|
||||
+ return result;
|
||||
}
|
||||
|
||||
/* Update the time of file FILE according to the options given.
|
||||
@@ -356,19 +356,17 @@ main (int argc, char **argv)
|
||||
if (flex_date)
|
||||
{
|
||||
if (change_times & CH_ATIME)
|
||||
- get_reldate (&newtime[0], flex_date, &newtime[0]);
|
||||
+ newtime[0] = date_relative (flex_date, newtime[0]);
|
||||
if (change_times & CH_MTIME)
|
||||
- get_reldate (&newtime[1], flex_date, &newtime[1]);
|
||||
+ newtime[1] = date_relative (flex_date, newtime[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (flex_date)
|
||||
{
|
||||
- struct timespec now;
|
||||
- gettime (&now);
|
||||
- get_reldate (&newtime[0], flex_date, &now);
|
||||
- newtime[1] = newtime[0];
|
||||
+ struct timespec now = current_timespec ();
|
||||
+ newtime[1] = newtime[0] = date_relative (flex_date, now);
|
||||
date_set = true;
|
||||
|
||||
/* If neither -a nor -m is specified, treat "-d now" as if
|
||||
@@ -383,7 +381,7 @@ main (int argc, char **argv)
|
||||
struct timespec notnow, notnow1;
|
||||
notnow.tv_sec = now.tv_sec ^ 1;
|
||||
notnow.tv_nsec = now.tv_nsec;
|
||||
- get_reldate (¬now1, flex_date, ¬now);
|
||||
+ notnow1 = date_relative (flex_date, notnow);
|
||||
if (notnow1.tv_sec == notnow.tv_sec
|
||||
&& notnow1.tv_nsec == notnow.tv_nsec)
|
||||
date_set = false;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: coreutils
|
||||
Version: 8.32
|
||||
Release: 4
|
||||
Release: 5
|
||||
License: GPLv3+
|
||||
Summary: A set of basic GNU tools commonly used in shell scripts
|
||||
Url: https://www.gnu.org/software/coreutils/
|
||||
@ -29,6 +29,14 @@ Patch11: backport-ls-fix-crash-printing-SELinux-context-for-unstatable.patch
|
||||
Patch12: backport-tr-fix-crash-validating-c-with-some-case-char-classe.patch
|
||||
Patch13: backport-timeout-ensure-foreground-k-exits-with-status-137.patch
|
||||
Patch14: backport-config-color-alias-for-ls.patch
|
||||
Patch15: backport-pr-don-t-use-uninitialized-var.patch
|
||||
Patch16: backport-sort-fix-sort-g-infloop-again.patch
|
||||
Patch17: backport-tests-sort-NaN-infloop-augment-testing-for-recent-fi.patch
|
||||
Patch18: backport-touch-fix-aliasing-bug.patch
|
||||
Patch19: backport-df-fix-duplicated-remote-entries-due-to-bind-mounts.patch
|
||||
Patch20: backport-df-fix-memory-leak.patch
|
||||
Patch21: backport-ls-avoid-triggering-automounts.patch
|
||||
Patch22: backport-stat-only-automount-with-cached-never.patch
|
||||
|
||||
Conflicts: filesystem < 3
|
||||
# To avoid clobbering installs
|
||||
@ -147,6 +155,9 @@ fi
|
||||
%{_mandir}/man*/*
|
||||
|
||||
%changelog
|
||||
* Fri Oct 21 2022 jiangchuangang <jiangchuangang@huawei.com> - 8.32-5
|
||||
- backport some patches from upstream
|
||||
|
||||
* Wed Aug 31 2022 hongjinghao <hongjinghao@huawei.com> - 8.32-4
|
||||
- Auto display color difference when use ls
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user