Received: (at submit) by debbugs.gnu.org; 12 Mar 2016 14:17:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 12 09:17:09 2016 Received: from localhost ([127.0.0.1]:45858 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1aekLt-0000Le-If for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 09:17:09 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37913) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLr-0000LQ-Bv for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 09:17:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLl-0004Uz-0e for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 09:17:02 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:35379) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLk-0004Uv-TX for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 09:17:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57105) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLj-0003FF-Lz for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 09:17:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLg-0004RS-Ee for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 09:16:59 -0500 Received: from kolbaba.stable.cz ([88.86.120.223]:50906) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>) id 1aekLg-0004Pa-5F for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 09:16:56 -0500 Received: from localhost (kolbaba.miton.cz [127.0.0.1]) by kolbaba.stable.cz (Postfix) with ESMTP id E543623FC3 for <bug-diffutils@HIDDEN>; Sat, 12 Mar 2016 15:16:54 +0100 (CET) X-Virus-Scanned: amavisd-new at kolbaba.stable.cz Received: from kolbaba.stable.cz ([127.0.0.1]) by localhost (kolbaba.stable.cz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4xjk0+DuOMYv for <bug-diffutils@HIDDEN>; Sat, 12 Mar 2016 15:16:53 +0100 (CET) Received: from [192.168.0.15] (155.198.broadband11.iol.cz [90.178.198.155]) by kolbaba.stable.cz (Postfix) with ESMTPSA id 6255B22F14 for <bug-diffutils@HIDDEN>; Sat, 12 Mar 2016 15:16:53 +0100 (CET) Subject: Re: [bug-diffutils] bug#19508: bug#19508: [PATCH] diff: compare major, minor numbers of block/character special files To: bug-diffutils@HIDDEN References: <54A9A7E6.8020305@HIDDEN> <56E41FEC.6050300@HIDDEN> From: =?UTF-8?Q?Ond=c5=99ej_Svoboda?= <ondrej@HIDDEN> Message-ID: <56E424D1.3040904@HIDDEN> Date: Sat, 12 Mar 2016 15:16:49 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <56E41FEC.6050300@HIDDEN> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.0 (----) Please see the follow-up on testing below. On 12.3.2016 14:55, Ond=C5=99ej Svoboda wrote: > Hi everybody, > > I rebased the patch on current master and tested it (as root) like this= : > > # mkdir /tmp/a /tmp/b > # mknod /tmp/a/block1 b 1 2; mknod /tmp/b/block1 b 1 2 > # mknod /tmp/a/block2 b 2 3; mknod /tmp/b/block2 b 2 4 > # mknod /tmp/a/block3 b 3 4; mknod /tmp/b/block3 b 5 4 > # mknod /tmp/a/char1 c 1 2; mknod /tmp/b/char1 c 1 2 > # mknod /tmp/a/char2 c 2 3; mknod /tmp/b/char2 c 2 4 > # mknod /tmp/a/char3 c 3 4; mknod /tmp/b/char3 c 5 4 > > # LC_ALL=3DC ls -l /tmp/a > total 0 > brw-r--r-- 1 root root 1, 2 Mar 12 14:51 block1 > brw-r--r-- 1 root root 2, 3 Mar 12 14:51 block2 > brw-r--r-- 1 root root 3, 4 Mar 12 14:51 block3 > crw-r--r-- 1 root root 1, 2 Mar 12 14:51 char1 > crw-r--r-- 1 root root 2, 3 Mar 12 14:51 char2 > crw-r--r-- 1 root root 3, 4 Mar 12 14:51 char3 > > # LC_ALL=3DC ls -l /tmp/b > total 0 > brw-r--r-- 1 root root 1, 2 Mar 12 14:51 block1 > brw-r--r-- 1 root root 2, 4 Mar 12 14:51 block2 > brw-r--r-- 1 root root 5, 4 Mar 12 14:51 block3 > crw-r--r-- 1 root root 1, 2 Mar 12 14:51 char1 > crw-r--r-- 1 root root 2, 4 Mar 12 14:51 char2 > crw-r--r-- 1 root root 5, 4 Mar 12 14:51 char3 > > # LC_ALL=3DC diff -s -r /tmp/a /tmp/b > Files /tmp/a/block1 and /tmp/b/block1 are identical > File /tmp/a/block2 is a block special file while file /tmp/b/block2 is=20 > a block special file > File /tmp/a/block3 is a block special file while file /tmp/b/block3 is=20 > a block special file > Files /tmp/a/char1 and /tmp/b/char1 are identical > File /tmp/a/char2 is a character special file while file /tmp/b/char2=20 > is a character special file > File /tmp/a/char3 is a character special file while file /tmp/b/char3=20 > is a character special file > > # LC_ALL=3DC /usr/local/bin/diff -s -r /tmp/a /tmp/b > Files /tmp/a/block1 and /tmp/b/block1 are identical > Block special files /tmp/a/block2 and /tmp/b/block2 differ: 2,3 (2,4) > Block special files /tmp/a/block3 and /tmp/b/block3 differ: 3,4 (5,4) > Files /tmp/a/char1 and /tmp/b/char1 are identical > Character special files /tmp/a/char2 and /tmp/b/char2 differ: 2,3 (2,4) > Character special files /tmp/a/char3 and /tmp/b/char3 differ: 3,4 (5,4) > > The reason why diff compared block1 as identical perhaps because it=20 > descended to diff_2_files, I would know if I stepped through the code=20 > which I currently don't have much time to do. # touch /tmp/b/* # LC_ALL=3DC ls -l /tmp/b total 0 brw-r--r-- 1 root root 1, 2 Mar 12 15:09 block1 brw-r--r-- 1 root root 2, 4 Mar 12 15:09 block2 brw-r--r-- 1 root root 5, 4 Mar 12 15:09 block3 crw-r--r-- 1 root root 1, 2 Mar 12 15:09 char1 crw-r--r-- 1 root root 2, 4 Mar 12 15:09 char2 crw-r--r-- 1 root root 5, 4 Mar 12 15:09 char3 # LC_ALL=3DC diff -s -r /tmp/a /tmp/b File /tmp/a/block1 is a block special file while file /tmp/b/block1 is a=20 block special file File /tmp/a/block2 is a block special file while file /tmp/b/block2 is a=20 block special file File /tmp/a/block3 is a block special file while file /tmp/b/block3 is a=20 block special file File /tmp/a/char1 is a character special file while file /tmp/b/char1 is=20 a character special file File /tmp/a/char2 is a character special file while file /tmp/b/char2 is=20 a character special file File /tmp/a/char3 is a character special file while file /tmp/b/char3 is=20 a character special file # LC_ALL=3DC /usr/local/bin/diff -s -r /tmp/a /tmp/b :( Files /tmp/a/block1 and /tmp/b/block1 are identical Block special files /tmp/a/block2 and /tmp/b/block2 differ: 2,3 (2,4) Block special files /tmp/a/block3 and /tmp/b/block3 differ: 3,4 (5,4) Files /tmp/a/char1 and /tmp/b/char1 are identical Character special files /tmp/a/char2 and /tmp/b/char2 differ: 2,3 (2,4) Character special files /tmp/a/char3 and /tmp/b/char3 differ: 3,4 (5,4) After changing the modification datetime, both block1 and char1 compared=20 differently with diffutils 3.3-2 (on Arch Linux) while they were found=20 to be the same with the patched diff from master. > Please share your comments! > > Cheers, > Ondra
bug-diffutils@HIDDEN:bug#19508; Package diffutils.
Full text available.
Received: (at submit) by debbugs.gnu.org; 12 Mar 2016 13:56:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 12 08:56:14 2016
Received: from localhost ([127.0.0.1]:45854 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1aek1d-0008Ja-L1
for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 08:56:13 -0500
Received: from eggs.gnu.org ([208.118.235.92]:34549)
by debbugs.gnu.org with esmtp (Exim 4.84)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1b-0008JM-9f
for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 08:56:12 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1U-0007Ej-Sf
for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 08:56:06 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:34382)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1U-0007Ef-PY
for submit <at> debbugs.gnu.org; Sat, 12 Mar 2016 08:56:04 -0500
Received: from eggs.gnu.org ([2001:4830:134:3::10]:53752)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1T-0000vP-Bc
for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 08:56:04 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1Q-0007DL-4Z
for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 08:56:03 -0500
Received: from kolbaba.stable.cz ([88.86.120.223]:55589)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from <SRS0-6hPm=PI=svobodasoft.cz=ondrej@HIDDEN>)
id 1aek1P-0007D6-RK
for bug-diffutils@HIDDEN; Sat, 12 Mar 2016 08:56:00 -0500
Received: from localhost (kolbaba.miton.cz [127.0.0.1])
by kolbaba.stable.cz (Postfix) with ESMTP id 661D4226C0
for <bug-diffutils@HIDDEN>; Sat, 12 Mar 2016 14:55:58 +0100 (CET)
X-Virus-Scanned: amavisd-new at kolbaba.stable.cz
Received: from kolbaba.stable.cz ([127.0.0.1])
by localhost (kolbaba.stable.cz [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id mcDDeqhB6Glh for <bug-diffutils@HIDDEN>;
Sat, 12 Mar 2016 14:55:57 +0100 (CET)
Received: from [192.168.0.15] (155.198.broadband11.iol.cz [90.178.198.155])
by kolbaba.stable.cz (Postfix) with ESMTPSA id D84CD209D0
for <bug-diffutils@HIDDEN>; Sat, 12 Mar 2016 14:55:56 +0100 (CET)
Subject: [bug-diffutils] bug#19508: [PATCH] diff: compare major, minor numbers
of block/character special files
To: bug-diffutils@HIDDEN
References: <54A9A7E6.8020305@HIDDEN>
From: =?UTF-8?Q?Ond=c5=99ej_Svoboda?= <ondrej@HIDDEN>
Message-ID: <56E41FEC.6050300@HIDDEN>
Date: Sat, 12 Mar 2016 14:55:56 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
Thunderbird/38.6.0
MIME-Version: 1.0
In-Reply-To: <54A9A7E6.8020305@HIDDEN>
Content-Type: multipart/mixed; boundary="------------060105090405050203080107"
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)
This is a multi-part message in MIME format.
--------------060105090405050203080107
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Hi everybody,
I rebased the patch on current master and tested it (as root) like this:
# mkdir /tmp/a /tmp/b
# mknod /tmp/a/block1 b 1 2; mknod /tmp/b/block1 b 1 2
# mknod /tmp/a/block2 b 2 3; mknod /tmp/b/block2 b 2 4
# mknod /tmp/a/block3 b 3 4; mknod /tmp/b/block3 b 5 4
# mknod /tmp/a/char1 c 1 2; mknod /tmp/b/char1 c 1 2
# mknod /tmp/a/char2 c 2 3; mknod /tmp/b/char2 c 2 4
# mknod /tmp/a/char3 c 3 4; mknod /tmp/b/char3 c 5 4
# LC_ALL=C ls -l /tmp/a
total 0
brw-r--r-- 1 root root 1, 2 Mar 12 14:51 block1
brw-r--r-- 1 root root 2, 3 Mar 12 14:51 block2
brw-r--r-- 1 root root 3, 4 Mar 12 14:51 block3
crw-r--r-- 1 root root 1, 2 Mar 12 14:51 char1
crw-r--r-- 1 root root 2, 3 Mar 12 14:51 char2
crw-r--r-- 1 root root 3, 4 Mar 12 14:51 char3
# LC_ALL=C ls -l /tmp/b
total 0
brw-r--r-- 1 root root 1, 2 Mar 12 14:51 block1
brw-r--r-- 1 root root 2, 4 Mar 12 14:51 block2
brw-r--r-- 1 root root 5, 4 Mar 12 14:51 block3
crw-r--r-- 1 root root 1, 2 Mar 12 14:51 char1
crw-r--r-- 1 root root 2, 4 Mar 12 14:51 char2
crw-r--r-- 1 root root 5, 4 Mar 12 14:51 char3
# LC_ALL=C diff -s -r /tmp/a /tmp/b
Files /tmp/a/block1 and /tmp/b/block1 are identical
File /tmp/a/block2 is a block special file while file /tmp/b/block2 is a
block special file
File /tmp/a/block3 is a block special file while file /tmp/b/block3 is a
block special file
Files /tmp/a/char1 and /tmp/b/char1 are identical
File /tmp/a/char2 is a character special file while file /tmp/b/char2 is
a character special file
File /tmp/a/char3 is a character special file while file /tmp/b/char3 is
a character special file
# LC_ALL=C /usr/local/bin/diff -s -r /tmp/a /tmp/b
Files /tmp/a/block1 and /tmp/b/block1 are identical
Block special files /tmp/a/block2 and /tmp/b/block2 differ: 2,3 (2,4)
Block special files /tmp/a/block3 and /tmp/b/block3 differ: 3,4 (5,4)
Files /tmp/a/char1 and /tmp/b/char1 are identical
Character special files /tmp/a/char2 and /tmp/b/char2 differ: 2,3 (2,4)
Character special files /tmp/a/char3 and /tmp/b/char3 differ: 3,4 (5,4)
The reason why diff compared block1 as identical perhaps because it
descended to diff_2_files, I would know if I stepped through the code
which I currently don't have much time to do.
Please share your comments!
Cheers,
Ondra
--------------060105090405050203080107
Content-Type: text/x-patch;
name="0001-diff-compare-major-minor-numbers-of-block-character-.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename*0="0001-diff-compare-major-minor-numbers-of-block-character-.pa";
filename*1="tch"
From 36f26c15551d5c32d3197b3f0008a96fe3440240 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Svoboda?= <ondrej@HIDDEN>
Date: Sun, 21 Sep 2014 18:06:38 +0200
Subject: [PATCH] diff: compare major, minor numbers of block/character special
files
This deals with situation such as
File dev1/block1 is a block special file while file dev2/block1 is
a block special file
in case the major and minor numbers are identical.
If stat.st_rdev does not match, a message is given:
Block special files dev1/block1 and dev2/block1 differ: 1,2 (3,2)
---
src/diff.c | 23 +++++++++++++++++++++++
src/diff.h | 1 +
src/util.c | 9 +++++++++
3 files changed, 33 insertions(+)
diff --git a/src/diff.c b/src/diff.c
index 9bc1d96..110b8e1 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1318,6 +1318,29 @@ compare_files (struct comparison const *parent,
status = EXIT_FAILURE;
}
}
+ else if ((S_ISBLK (cmp.file[0].stat.st_mode)
+ && S_ISBLK (cmp.file[1].stat.st_mode))
+ || (S_ISCHR (cmp.file[0].stat.st_mode)
+ && S_ISCHR (cmp.file[1].stat.st_mode)))
+ {
+ if (cmp.file[0].stat.st_rdev != cmp.file[1].stat.st_rdev)
+ {
+ char major_minor0[20], major_minor1[20];
+ format_major_minor (major_minor0, cmp.file[0].stat.st_rdev);
+ format_major_minor (major_minor1, cmp.file[1].stat.st_rdev);
+
+ const char *message = S_ISBLK (cmp.file[0].stat.st_mode) ?
+ "Block special files %s and %s differ: %s (%s)\n" :
+ "Character special files %s and %s differ: %s (%s)\n";
+ message5 (message,
+ file_label[0] ? file_label[0] : cmp.file[0].name,
+ file_label[1] ? file_label[1] : cmp.file[1].name,
+ major_minor0, major_minor1);
+
+ /* This is a difference. */
+ status = EXIT_FAILURE;
+ }
+ }
else
{
/* We have two files that are not to be compared. */
diff --git a/src/diff.h b/src/diff.h
index 0983e7c..12ed085 100644
--- a/src/diff.h
+++ b/src/diff.h
@@ -391,6 +391,7 @@ extern void begin_output (void);
extern void debug_script (struct change *);
extern void fatal (char const *) __attribute__((noreturn));
extern void finish_output (void);
+extern void format_major_minor (char *buffer, const dev_t st_rdev);
extern void message (char const *, char const *, char const *);
extern void message5 (char const *, char const *, char const *,
char const *, char const *);
diff --git a/src/util.c b/src/util.c
index d7b8925..85a47d3 100644
--- a/src/util.c
+++ b/src/util.c
@@ -26,6 +26,7 @@
#include <xalloc.h>
#include "xvasprintf.h"
#include <signal.h>
+#include <sys/types.h>
/* Use SA_NOCLDSTOP as a proxy for whether the sigaction machinery is
present. */
@@ -1577,3 +1578,11 @@ debug_script (struct change *sp)
fflush (stderr);
}
+
+/* Format a device number as major,minor. */
+
+void
+format_major_minor (char *buffer, const dev_t st_rdev)
+{
+ sprintf (buffer, "%u,%u", (major (st_rdev)), (minor (st_rdev)));
+}
--
2.7.2
--------------060105090405050203080107--
bug-diffutils@HIDDEN:bug#19508; Package diffutils.
Full text available.
Received: (at 19508) by debbugs.gnu.org; 11 Feb 2015 23:40:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 18:40:30 2015
Received: from localhost ([127.0.0.1]:40386 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.80)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1YLgtR-00059j-RQ
for submit <at> debbugs.gnu.org; Wed, 11 Feb 2015 18:40:30 -0500
Received: from kolbaba.stable.cz ([88.86.120.103]:44103)
by debbugs.gnu.org with esmtp (Exim 4.80)
(envelope-from <ondrej@HIDDEN>) id 1YLgtP-00059U-Au
for 19508 <at> debbugs.gnu.org; Wed, 11 Feb 2015 18:40:28 -0500
Received: from localhost (kolbaba.miton.cz [127.0.0.1])
by kolbaba.stable.cz (Postfix) with ESMTP id D571420977
for <19508 <at> debbugs.gnu.org>; Thu, 12 Feb 2015 00:40:21 +0100 (CET)
X-Virus-Scanned: amavisd-new at kolbaba.stable.cz
Received: from kolbaba.stable.cz ([127.0.0.1])
by localhost (kolbaba.stable.cz [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id ZM1KmTGDZyc3 for <19508 <at> debbugs.gnu.org>;
Thu, 12 Feb 2015 00:40:18 +0100 (CET)
Received: from [10.0.0.8] (38.211.broadband18.iol.cz [109.81.211.38])
by kolbaba.stable.cz (Postfix) with ESMTPSA id C37C520C8C;
Thu, 12 Feb 2015 00:40:16 +0100 (CET)
Message-ID: <54DBE85F.5080803@HIDDEN>
Date: Thu, 12 Feb 2015 00:40:15 +0100
From: =?UTF-8?B?T25kxZllaiBTdm9ib2Rh?= <ondrej@HIDDEN>
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: 19508 <at> debbugs.gnu.org, Paul Eggert <eggert@HIDDEN>
Subject: Re: [bug-diffutils] bug#19508: [PATCH] diff: compare major, minor
numbers of block/character special files
References: <54A9A7E6.8020305@HIDDEN>
In-Reply-To: <54A9A7E6.8020305@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 19508
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
Paul, this is the first patch in the series (and is succeeded by the
fifo one), I am sorry for the confusion.
Could you please give it a look?
Thanks :-)
Ondra Svoboda
On 4.1.2015 21:51, Ondřej Svoboda wrote:
> This deals with situation such as
>
> File dev1/block1 is a block special file while file dev2/block1 is
> a block special file
>
> in case the major and minor numbers are identical.
> If stat.st_rdev does not match, a message is given:
>
> Block special files dev1/block1 and dev2/block1 differ: 1,2 (3,2)
> ---
> src/diff.c | 23 +++++++++++++++++++++++
> src/diff.h | 1 +
> src/util.c | 9 +++++++++
> 3 files changed, 33 insertions(+)
>
> diff --git a/src/diff.c b/src/diff.c
> index ff28377..a3e1b6f 100644
> --- a/src/diff.c
> +++ b/src/diff.c
> @@ -1276,6 +1276,29 @@ compare_files (struct comparison const *parent,
> status = EXIT_FAILURE;
> }
> }
> + else if ((S_ISBLK (cmp.file[0].stat.st_mode)
> + && S_ISBLK (cmp.file[1].stat.st_mode))
> + || (S_ISCHR (cmp.file[0].stat.st_mode)
> + && S_ISCHR (cmp.file[1].stat.st_mode)))
> + {
> + if (cmp.file[0].stat.st_rdev != cmp.file[1].stat.st_rdev)
> + {
> + char major_minor0[20], major_minor1[20];
> + format_major_minor (major_minor0, cmp.file[0].stat.st_rdev);
> + format_major_minor (major_minor1, cmp.file[1].stat.st_rdev);
> +
> + const char *message = S_ISBLK (cmp.file[0].stat.st_mode) ?
> + "Block special files %s and %s differ: %s (%s)\n" :
> + "Character special files %s and %s differ: %s (%s)\n";
> + message5 (message,
> + file_label[0] ? file_label[0] : cmp.file[0].name,
> + file_label[1] ? file_label[1] : cmp.file[1].name,
> + major_minor0, major_minor1);
> +
> + /* This is a difference. */
> + status = EXIT_FAILURE;
> + }
> + }
> else
> {
> /* We have two files that are not to be compared. */
> diff --git a/src/diff.h b/src/diff.h
> index 465e4bc..098e75f 100644
> --- a/src/diff.h
> +++ b/src/diff.h
> @@ -390,3 +390,4 @@ extern void print_script (struct change *, struct
> change * (*) (struct change *)
> extern void setup_output (char const *, char const *, bool);
> extern void translate_range (struct file_data const *, lin, lin,
> long int *, long int *);
> +extern void format_major_minor (char *buffer, const dev_t st_rdev);
> diff --git a/src/util.c b/src/util.c
> index 2d6d3fc..4773003 100644
> --- a/src/util.c
> +++ b/src/util.c
> @@ -24,6 +24,7 @@
> #include <system-quote.h>
> #include <xalloc.h>
> #include "xvasprintf.h"
> +#include <sys/types.h>
> char const pr_program[] = PR_PROGRAM;
> @@ -907,3 +908,11 @@ debug_script (struct change *sp)
> fflush (stderr);
> }
> +
> +/* Format a device number as major,minor. */
> +
> +void
> +format_major_minor (char *buffer, const dev_t st_rdev)
> +{
> + sprintf (buffer, "%u,%u", (major (st_rdev)), (minor (st_rdev)));
> +}
bug-diffutils@HIDDEN:bug#19508; Package diffutils.
Full text available.
Received: (at submit) by debbugs.gnu.org; 4 Jan 2015 21:23:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 04 16:23:15 2015
Received: from localhost ([127.0.0.1]:36662 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.80)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1Y7sdm-0000Sh-Nr
for submit <at> debbugs.gnu.org; Sun, 04 Jan 2015 16:23:15 -0500
Received: from eggs.gnu.org ([208.118.235.92]:33322)
by debbugs.gnu.org with esmtp (Exim 4.80)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9l-00088R-6H
for submit <at> debbugs.gnu.org; Sun, 04 Jan 2015 15:52:14 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9j-0007vI-RK
for submit <at> debbugs.gnu.org; Sun, 04 Jan 2015 15:52:12 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:49889)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9j-0007vE-P0
for submit <at> debbugs.gnu.org; Sun, 04 Jan 2015 15:52:11 -0500
Received: from eggs.gnu.org ([2001:4830:134:3::10]:35008)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9i-0005Gh-L0
for bug-diffutils@HIDDEN; Sun, 04 Jan 2015 15:52:11 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9b-0007rV-MM
for bug-diffutils@HIDDEN; Sun, 04 Jan 2015 15:52:10 -0500
Received: from kolbaba.stable.cz ([88.86.120.103]:58998)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from <ondrej@HIDDEN>) id 1Y7s9b-0007qs-Fy
for bug-diffutils@HIDDEN; Sun, 04 Jan 2015 15:52:03 -0500
Received: from localhost (kolbaba.miton.cz [127.0.0.1])
by kolbaba.stable.cz (Postfix) with ESMTP id 01A6E2026E
for <bug-diffutils@HIDDEN>; Sun, 4 Jan 2015 21:52:00 +0100 (CET)
X-Virus-Scanned: amavisd-new at kolbaba.stable.cz
Received: from kolbaba.stable.cz ([127.0.0.1])
by localhost (kolbaba.stable.cz [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id 9cnBxWDPXufa for <bug-diffutils@HIDDEN>;
Sun, 4 Jan 2015 21:51:56 +0100 (CET)
Received: from [192.168.0.15] (155.198.broadband11.iol.cz [90.178.198.155])
by kolbaba.stable.cz (Postfix) with ESMTPSA id CD40520942
for <bug-diffutils@HIDDEN>; Sun, 4 Jan 2015 21:51:56 +0100 (CET)
Message-ID: <54A9A7E6.8020305@HIDDEN>
Date: Sun, 04 Jan 2015 21:51:50 +0100
From: =?UTF-8?B?T25kxZllaiBTdm9ib2Rh?= <ondrej@HIDDEN>
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: bug-diffutils@HIDDEN
Subject: [PATCH] diff: compare major, minor numbers of block/character special
files
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x
X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address
(bad octet value).
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Sun, 04 Jan 2015 16:23:12 -0500
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)
This deals with situation such as
File dev1/block1 is a block special file while file dev2/block1 is
a block special file
in case the major and minor numbers are identical.
If stat.st_rdev does not match, a message is given:
Block special files dev1/block1 and dev2/block1 differ: 1,2 (3,2)
---
src/diff.c | 23 +++++++++++++++++++++++
src/diff.h | 1 +
src/util.c | 9 +++++++++
3 files changed, 33 insertions(+)
diff --git a/src/diff.c b/src/diff.c
index ff28377..a3e1b6f 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1276,6 +1276,29 @@ compare_files (struct comparison const *parent,
status = EXIT_FAILURE;
}
}
+ else if ((S_ISBLK (cmp.file[0].stat.st_mode)
+ && S_ISBLK (cmp.file[1].stat.st_mode))
+ || (S_ISCHR (cmp.file[0].stat.st_mode)
+ && S_ISCHR (cmp.file[1].stat.st_mode)))
+ {
+ if (cmp.file[0].stat.st_rdev != cmp.file[1].stat.st_rdev)
+ {
+ char major_minor0[20], major_minor1[20];
+ format_major_minor (major_minor0, cmp.file[0].stat.st_rdev);
+ format_major_minor (major_minor1, cmp.file[1].stat.st_rdev);
+
+ const char *message = S_ISBLK (cmp.file[0].stat.st_mode) ?
+ "Block special files %s and %s differ: %s (%s)\n" :
+ "Character special files %s and %s differ: %s (%s)\n";
+ message5 (message,
+ file_label[0] ? file_label[0] : cmp.file[0].name,
+ file_label[1] ? file_label[1] : cmp.file[1].name,
+ major_minor0, major_minor1);
+
+ /* This is a difference. */
+ status = EXIT_FAILURE;
+ }
+ }
else
{
/* We have two files that are not to be compared. */
diff --git a/src/diff.h b/src/diff.h
index 465e4bc..098e75f 100644
--- a/src/diff.h
+++ b/src/diff.h
@@ -390,3 +390,4 @@ extern void print_script (struct change *, struct
change * (*) (struct change *)
extern void setup_output (char const *, char const *, bool);
extern void translate_range (struct file_data const *, lin, lin,
long int *, long int *);
+extern void format_major_minor (char *buffer, const dev_t st_rdev);
diff --git a/src/util.c b/src/util.c
index 2d6d3fc..4773003 100644
--- a/src/util.c
+++ b/src/util.c
@@ -24,6 +24,7 @@
#include <system-quote.h>
#include <xalloc.h>
#include "xvasprintf.h"
+#include <sys/types.h>
char const pr_program[] = PR_PROGRAM;
@@ -907,3 +908,11 @@ debug_script (struct change *sp)
fflush (stderr);
}
+
+/* Format a device number as major,minor. */
+
+void
+format_major_minor (char *buffer, const dev_t st_rdev)
+{
+ sprintf (buffer, "%u,%u", (major (st_rdev)), (minor (st_rdev)));
+}
--
2.2.1
Ondřej Svoboda <ondrej@HIDDEN>:bug-diffutils@HIDDEN.
Full text available.bug-diffutils@HIDDEN:bug#19508; Package diffutils.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.