GNU bug report logs - #6986
[PATCH] test: add check to determine whether files are on the same device

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: coreutils; Severity: wishlist; Reported by: Dieter Plaetinck <dieter@HIDDEN>; Keywords: notabug patch; dated Sun, 5 Sep 2010 13:35:02 UTC; Maintainer for coreutils is bug-coreutils@HIDDEN.
Severity set to 'wishlist' from 'normal' Request was from Jim Meyering <jim@HIDDEN> to control <at> debbugs.gnu.org. Full text available.
Added tag(s) notabug. Request was from Jim Meyering <jim@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 6986 <at> debbugs.gnu.org:


Received: (at 6986) by debbugs.gnu.org; 17 Apr 2011 09:29:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 17 05:29:04 2011
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1QBOHv-0001vc-P1
	for submit <at> debbugs.gnu.org; Sun, 17 Apr 2011 05:29:03 -0400
Received: from mx.meyering.net ([82.230.74.64])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <jim@HIDDEN>) id 1QBOHu-0001v9-64
	for 6986 <at> debbugs.gnu.org; Sun, 17 Apr 2011 05:29:02 -0400
Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
	id 947E160110; Sun, 17 Apr 2011 11:28:56 +0200 (CEST)
From: Jim Meyering <jim@HIDDEN>
To: 6986 <at> debbugs.gnu.org
Subject: Re: bug#6986: [PATCH] test: add check to determine whether files are
	on the same device
In-Reply-To: <20100906213322.0e40a821@HIDDEN> (Dieter Plaetinck's
	message of "Mon, 6 Sep 2010 21:33:22 +0200")
References: <20100905131342.470022a6@HIDDEN>
	<87hbi2vigf.fsf@HIDDEN> <20100906213322.0e40a821@HIDDEN>
Date: Sun, 17 Apr 2011 11:28:56 +0200
Message-ID: <8762qdb50n.fsf@HIDDEN>
Lines: 15
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -5.9 (-----)
X-Debbugs-Envelope-To: 6986
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -5.9 (-----)

tags 6986 wishlist notabug
thanks

Dieter Plaetinck wrote:
...
> I know some shells provide the 'test' features as a built-in,
> that's fine.  But they should mimic the features test has.
> It makes the shell implementation dependent on test, not the
> other way around.  If this feature is considered useful for test, and
> gets merged into test, shells will follow soon enough.
>
> But anyway, your call :)
> At least thanks for the timely feedback and have a nice day.

Reclassifying this as "wishlist" (i.e., not a bug).




Information forwarded to owner <at> debbugs.gnu.org, bug-coreutils@HIDDEN:
bug#6986; Package coreutils. Full text available.

Message received at 6986 <at> debbugs.gnu.org:


Received: (at 6986) by debbugs.gnu.org; 6 Sep 2010 20:06:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 06 16:06:23 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1OshxP-0000aU-28
	for submit <at> debbugs.gnu.org; Mon, 06 Sep 2010 16:06:23 -0400
Received: from rhineheart.priorweb.be ([62.182.60.82])
	by debbugs.gnu.org with smtp (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OshPe-0000Ms-O2
	for 6986 <at> debbugs.gnu.org; Mon, 06 Sep 2010 15:31:31 -0400
Received: (qmail 3463 invoked by uid 1010); 6 Sep 2010 19:33:24 -0000
Received: from unknown (HELO rhineheart.priorweb.be) (127.0.0.1)
	by rhineheart.priorweb.be with SMTP; 6 Sep 2010 19:33:24 -0000
Received: from localhost.localdomain (unknown [109.236.140.107])
	by rhineheart.priorweb.be (Postfix) with ESMTP;
	Mon,  6 Sep 2010 21:33:23 +0200 (CEST)
Date: Mon, 6 Sep 2010 21:33:22 +0200
From: Dieter Plaetinck <dieter@HIDDEN>
To: Jim Meyering <jim@HIDDEN>
Subject: Re: bug#6986: [PATCH] test: add check to determine whether files
	are on the same device
Message-ID: <20100906213322.0e40a821@HIDDEN>
In-Reply-To: <87hbi2vigf.fsf@HIDDEN>
References: <20100905131342.470022a6@HIDDEN>
	<87hbi2vigf.fsf@HIDDEN>
X-Mailer: Claws Mail 3.7.6 (GTK+ 2.20.1; i686-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: Passed
X-Spam-Scanned: 1.5
X-Spam-Status: NO
X-Scanned-By: PriorWeb mailfilter
X-Spam-Score: -3.9 (---)
X-Debbugs-Envelope-To: 6986
X-Mailman-Approved-At: Mon, 06 Sep 2010 16:06:22 -0400
Cc: 6986 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -3.5 (---)

On Mon, 06 Sep 2010 20:24:16 +0200
Jim Meyering <jim@HIDDEN> wrote:

> Dieter Plaetinck wrote:
> > In the test program, there is '-ef' which checks whether files
> > are on the same device *and* have the same inode number.
> > This change introduces '-ed' which is basically the same, minus the
> > inode number checking
> > ---
> >  src/test.c |   19 +++++++++++++++----
> >  1 files changed, 15 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/test.c b/src/test.c
> 
> Thank you for the patch.
> However, can you make a case for adding this to test
> rather than using an existing tool like stat?
> 
> For example, here's a tiny shell function:
> 
>     same_dev()
>     {
>       local d1=$(stat --format=%d "$1") || return 1
>       local d2=$(stat --format=%d "$2") || return 1
>       test "$d1" = "$d2"
>     }
> 
> You could use it like this:
> 
>     $ same_dev a b && echo same
>     same
>     $ same_dev a / && echo same || echo different devices
>     different devices
> 
> That it's so easy to accomplish the same thing with
> existing tools makes it hard to justify adding the feature.
> 
> Besides, if you're really interested in getting this feature
> into "test", you don't want to start with coreutils.
> Its "test" program is used only rarely, since "test"
> is always a shell built-in, these days.
> Thus you'd want to request that your feature be added
> to at least bash and zsh.


Hey Jim,
at first I considered writing a shell function like the one you suggest.
But putting it in test seemed like a better, more generally useful
place, especially since there are some similar functions in test.
(like -ef), and it's just a few lines of C code.
I would argue some of the existing functionality in test can as
easily be removed in favor of a shell function.  (I don't suggest
doing so)

Ie, for test -O :
owned_by_me ()
{
  local owner_id=$(stat --format='%u' "$1") || return 1
  test $owner_id -eq $EUID
}

I know some shells provide the 'test' features as a built-in,
that's fine.  But they should mimic the features test has.
It makes the shell implementation dependent on test, not the
other way around.  If this feature is considered useful for test, and
gets merged into test, shells will follow soon enough.

But anyway, your call :)
At least thanks for the timely feedback and have a nice day.

Dieter




Information forwarded to owner <at> debbugs.gnu.org, bug-coreutils@HIDDEN:
bug#6986; Package coreutils. Full text available.

Message received at 6986 <at> debbugs.gnu.org:


Received: (at 6986) by debbugs.gnu.org; 6 Sep 2010 18:22:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 06 14:22:30 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1OsgKs-0008LB-Kx
	for submit <at> debbugs.gnu.org; Mon, 06 Sep 2010 14:22:30 -0400
Received: from smtp1-g21.free.fr ([212.27.42.1])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <jim@HIDDEN>) id 1OsgKq-0008L6-AQ
	for 6986 <at> debbugs.gnu.org; Mon, 06 Sep 2010 14:22:29 -0400
Received: from mx.meyering.net (unknown [82.230.74.64])
	by smtp1-g21.free.fr (Postfix) with ESMTP id 8ACD59400C2
	for <6986 <at> debbugs.gnu.org>; Mon,  6 Sep 2010 20:24:17 +0200 (CEST)
Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
	id 49C87D8C8; Mon,  6 Sep 2010 20:24:16 +0200 (CEST)
From: Jim Meyering <jim@HIDDEN>
To: Dieter Plaetinck <dieter@HIDDEN>
Subject: Re: bug#6986: [PATCH] test: add check to determine whether files are
	on the same device
In-Reply-To: <20100905131342.470022a6@HIDDEN> (Dieter Plaetinck's
	message of "Sun, 5 Sep 2010 13:13:42 +0200")
References: <20100905131342.470022a6@HIDDEN>
Date: Mon, 06 Sep 2010 20:24:16 +0200
Message-ID: <87hbi2vigf.fsf@HIDDEN>
Lines: 40
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Spam-Score: -2.0 (--)
X-Debbugs-Envelope-To: 6986
Cc: 6986 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -3.2 (---)

Dieter Plaetinck wrote:
> In the test program, there is '-ef' which checks whether files
> are on the same device *and* have the same inode number.
> This change introduces '-ed' which is basically the same, minus the
> inode number checking
> ---
>  src/test.c |   19 +++++++++++++++----
>  1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/src/test.c b/src/test.c

Thank you for the patch.
However, can you make a case for adding this to test
rather than using an existing tool like stat?

For example, here's a tiny shell function:

    same_dev()
    {
      local d1=$(stat --format=%d "$1") || return 1
      local d2=$(stat --format=%d "$2") || return 1
      test "$d1" = "$d2"
    }

You could use it like this:

    $ same_dev a b && echo same
    same
    $ same_dev a / && echo same || echo different devices
    different devices

That it's so easy to accomplish the same thing with
existing tools makes it hard to justify adding the feature.

Besides, if you're really interested in getting this feature
into "test", you don't want to start with coreutils.
Its "test" program is used only rarely, since "test"
is always a shell built-in, these days.
Thus you'd want to request that your feature be added
to at least bash and zsh.




Information forwarded to owner <at> debbugs.gnu.org, bug-coreutils@HIDDEN:
bug#6986; Package coreutils. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 5 Sep 2010 13:34:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 05 09:34:28 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1OsFMZ-0003MK-Ss
	for submit <at> debbugs.gnu.org; Sun, 05 Sep 2010 09:34:28 -0400
Received: from eggs.gnu.org ([140.186.70.92])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OsDFE-0001hA-Ee
	for submit <at> debbugs.gnu.org; Sun, 05 Sep 2010 07:18:44 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OsDH0-0001h4-Kd
	for submit <at> debbugs.gnu.org; Sun, 05 Sep 2010 07:20:35 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00
	autolearn=unavailable version=3.3.1
Received: from lists.gnu.org ([199.232.76.165]:49026)
	by eggs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OsDH0-0001gx-CA
	for submit <at> debbugs.gnu.org; Sun, 05 Sep 2010 07:20:34 -0400
Received: from [140.186.70.92] (port=43204 helo=eggs.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1OsDH0-0005FS-7z
	for bug-coreutils@HIDDEN; Sun, 05 Sep 2010 07:20:35 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OsDGx-0001gY-Me
	for bug-coreutils@HIDDEN; Sun, 05 Sep 2010 07:20:32 -0400
Received: from rhineheart.priorweb.be ([62.182.60.82]:50056)
	by eggs.gnu.org with smtp (Exim 4.69)
	(envelope-from <dieter@HIDDEN>) id 1OsDGx-0001fq-F0
	for bug-coreutils@HIDDEN; Sun, 05 Sep 2010 07:20:31 -0400
Received: (qmail 5505 invoked by uid 1010); 5 Sep 2010 11:13:47 -0000
Received: from unknown (HELO rhineheart.priorweb.be) (127.0.0.1)
	by rhineheart.priorweb.be with SMTP; 5 Sep 2010 11:13:47 -0000
Received: from localhost.localdomain (unknown [109.236.140.107])
	by rhineheart.priorweb.be (Postfix) with ESMTP
	for <bug-coreutils@HIDDEN>; Sun,  5 Sep 2010 13:13:46 +0200 (CEST)
Date: Sun, 5 Sep 2010 13:13:42 +0200
From: Dieter Plaetinck <dieter@HIDDEN>
To: bug-coreutils@HIDDEN
Subject: [PATCH] test: add check to determine whether files are on the same
	device
Message-ID: <20100905131342.470022a6@HIDDEN>
X-Mailer: Claws Mail 3.7.6 (GTK+ 2.20.1; i686-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: Passed
X-Scanned-By: PriorWeb mailfilter
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older,
	4)
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Sun, 05 Sep 2010 09:34:25 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -5.3 (-----)

In the test program, there is '-ef' which checks whether files
are on the same device *and* have the same inode number.
This change introduces '-ed' which is basically the same, minus the
inode number checking
---
 src/test.c |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/test.c b/src/test.c
index e2247d2..8e738e9 100644
--- a/src/test.c
+++ b/src/test.c
@@ -174,9 +174,9 @@ static bool
 binop (char const *s)
 {
   return ((STREQ (s,   "=")) || (STREQ (s,  "!=")) || (STREQ (s, "-nt")) ||
-          (STREQ (s, "-ot")) || (STREQ (s, "-ef")) || (STREQ (s, "-eq")) ||
-          (STREQ (s, "-ne")) || (STREQ (s, "-lt")) || (STREQ (s, "-le")) ||
-          (STREQ (s, "-gt")) || (STREQ (s, "-ge")));
+          (STREQ (s, "-ot")) || (STREQ (s, "-ed")) || (STREQ (s, "-ef")) ||
+          (STREQ (s, "-eq")) || (STREQ (s, "-ne")) || (STREQ (s, "-lt")) ||
+          (STREQ (s, "-le")) || (STREQ (s, "-gt")) || (STREQ (s, "-ge")));
 }
 
 /*
@@ -191,7 +191,7 @@ binop (char const *s)
  *	string
  *	string ('!='|'=') string
  *	<int> '-'(eq|ne|le|lt|ge|gt) <int>
- *	file '-'(nt|ot|ef) file
+ *	file '-'(nt|ot|ed|ef) file
  *	'(' <expr> ')'
  * int ::=
  *	'-l' string
@@ -327,6 +327,16 @@ binary_operator (bool l_is_l)
           break;
 
         case 'e':
+          if (argv[op][2] == 'd' && !argv[op][3])
+            {
+              /* ed - same device? */
+              pos += 3;
+              if (l_is_l || r_is_l)
+                test_syntax_error (_("-ed does not accept -l"), NULL);
+              return (stat (argv[op - 1], &stat_buf) == 0
+                      && stat (argv[op + 1], &stat_spare) == 0
+                      && stat_buf.st_dev == stat_spare.st_dev);
+            }
           if (argv[op][2] == 'f' && !argv[op][3])
             {
               /* ef - hard link? */
@@ -726,6 +736,7 @@ EXPRESSION is true or false and sets exit status.  It is one of:\n\
 "), stdout);
       fputs (_("\
 \n\
+  FILE1 -ed FILE2   FILE1 and FILE2 have the same device number\n\
   FILE1 -ef FILE2   FILE1 and FILE2 have the same device and inode numbers\n\
   FILE1 -nt FILE2   FILE1 is newer (modification date) than FILE2\n\
   FILE1 -ot FILE2   FILE1 is older than FILE2\n\
-- 
1.7.2.3





Acknowledgement sent to Dieter Plaetinck <dieter@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-coreutils@HIDDEN. Full text available.
Report forwarded to owner <at> debbugs.gnu.org, bug-coreutils@HIDDEN:
bug#6986; Package coreutils. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.