From unknown Tue Jun 17 20:20:03 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#6986 <6986@debbugs.gnu.org> To: bug#6986 <6986@debbugs.gnu.org> Subject: Status: [PATCH] test: add check to determine whether files are on the same device Reply-To: bug#6986 <6986@debbugs.gnu.org> Date: Wed, 18 Jun 2025 03:20:03 +0000 retitle 6986 [PATCH] test: add check to determine whether files are on the = same device reassign 6986 coreutils submitter 6986 Dieter Plaetinck severity 6986 wishlist tag 6986 notabug patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 05 09:34:28 2010 Received: (at submit) by debbugs.gnu.org; 5 Sep 2010 13:34:28 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OsFMZ-0003MK-Ss for submit@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 ) id 1OsDFE-0001hA-Ee for submit@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 ) id 1OsDH0-0001h4-Kd for submit@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 ) id 1OsDH0-0001gx-CA for submit@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@gnu.org; Sun, 05 Sep 2010 07:20:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OsDGx-0001gY-Me for bug-coreutils@gnu.org; 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 ) id 1OsDGx-0001fq-F0 for bug-coreutils@gnu.org; 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 ; Sun, 5 Sep 2010 13:13:46 +0200 (CEST) Date: Sun, 5 Sep 2010 13:13:42 +0200 From: Dieter Plaetinck To: bug-coreutils@gnu.org Subject: [PATCH] test: add check to determine whether files are on the same device Message-ID: <20100905131342.470022a6@plaetinck.be> 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@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@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 * '-'(eq|ne|le|lt|ge|gt) - * file '-'(nt|ot|ef) file + * file '-'(nt|ot|ed|ef) file * '(' ')' * 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 From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 06 14:22:30 2010 Received: (at 6986) by debbugs.gnu.org; 6 Sep 2010 18:22:30 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OsgKs-0008LB-Kx for submit@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 ) id 1OsgKq-0008L6-AQ for 6986@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@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 To: Dieter Plaetinck Subject: Re: bug#6986: [PATCH] test: add check to determine whether files are on the same device In-Reply-To: <20100905131342.470022a6@plaetinck.be> (Dieter Plaetinck's message of "Sun, 5 Sep 2010 13:13:42 +0200") References: <20100905131342.470022a6@plaetinck.be> Date: Mon, 06 Sep 2010 20:24:16 +0200 Message-ID: <87hbi2vigf.fsf@meyering.net> 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@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@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. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 06 16:06:23 2010 Received: (at 6986) by debbugs.gnu.org; 6 Sep 2010 20:06:23 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OshxP-0000aU-28 for submit@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 ) id 1OshPe-0000Ms-O2 for 6986@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 To: Jim Meyering Subject: Re: bug#6986: [PATCH] test: add check to determine whether files are on the same device Message-ID: <20100906213322.0e40a821@plaetinck.be> In-Reply-To: <87hbi2vigf.fsf@meyering.net> References: <20100905131342.470022a6@plaetinck.be> <87hbi2vigf.fsf@meyering.net> 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@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) On Mon, 06 Sep 2010 20:24:16 +0200 Jim Meyering 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 From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 17 05:29:04 2011 Received: (at 6986) by debbugs.gnu.org; 17 Apr 2011 09:29:04 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QBOHv-0001vc-P1 for submit@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 ) id 1QBOHu-0001v9-64 for 6986@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 To: 6986@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@plaetinck.be> (Dieter Plaetinck's message of "Mon, 6 Sep 2010 21:33:22 +0200") References: <20100905131342.470022a6@plaetinck.be> <87hbi2vigf.fsf@meyering.net> <20100906213322.0e40a821@plaetinck.be> Date: Sun, 17 Apr 2011 11:28:56 +0200 Message-ID: <8762qdb50n.fsf@rho.meyering.net> Lines: 15 MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.9 (-----) X-Debbugs-Envelope-To: 6986 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@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). From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 17 07:26:40 2011 Received: (at control) by debbugs.gnu.org; 17 Apr 2011 11:26:40 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QBQ7k-00068J-HQ for submit@debbugs.gnu.org; Sun, 17 Apr 2011 07:26:40 -0400 Received: from mx.meyering.net ([82.230.74.64]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QBQ7j-000687-7Z for control@debbugs.gnu.org; Sun, 17 Apr 2011 07:26:39 -0400 Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000) id 9BB4D6012A; Sun, 17 Apr 2011 13:26:33 +0200 (CEST) From: Jim Meyering To: control@debbugs.gnu.org Subject: Re: bug#6986: [PATCH] test: add check to determine whether files are on the same device In-Reply-To: <8762qdb50n.fsf@rho.meyering.net> (Jim Meyering's message of "Sun, 17 Apr 2011 11:28:56 +0200") References: <20100905131342.470022a6@plaetinck.be> <87hbi2vigf.fsf@meyering.net> <20100906213322.0e40a821@plaetinck.be> <8762qdb50n.fsf@rho.meyering.net> Date: Sun, 17 Apr 2011 13:26:33 +0200 Message-ID: <87ipud9l06.fsf@rho.meyering.net> Lines: 2 MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.9 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) tags 6986 wishlist notabug thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 18 03:32:26 2011 Received: (at control) by debbugs.gnu.org; 18 Apr 2011 07:32:26 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QBiwc-000861-7K for submit@debbugs.gnu.org; Mon, 18 Apr 2011 03:32:26 -0400 Received: from mx.meyering.net ([82.230.74.64]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QBiwY-00085j-Tf for control@debbugs.gnu.org; Mon, 18 Apr 2011 03:32:25 -0400 Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000) id D92D260318; Mon, 18 Apr 2011 09:32:15 +0200 (CEST) From: Jim Meyering To: control@debbugs.gnu.org Subject: Date: Mon, 18 Apr 2011 09:32:13 +0200 Message-ID: <87r590816q.fsf@rho.meyering.net> Lines: 1 MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -3.6 (---) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) severity 6986 wishlist