From unknown Wed Jun 18 23:14:47 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#45648 <45648@debbugs.gnu.org> To: bug#45648 <45648@debbugs.gnu.org> Subject: Status: `dd` seek/skip which way is up? Reply-To: bug#45648 <45648@debbugs.gnu.org> Date: Thu, 19 Jun 2025 06:14:47 +0000 retitle 45648 `dd` seek/skip which way is up? reassign 45648 coreutils submitter 45648 Bela Lubkin severity 45648 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 01:31:28 2021 Received: (at submit) by debbugs.gnu.org; 4 Jan 2021 06:31:28 +0000 Received: from localhost ([127.0.0.1]:42601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwJOj-0006SM-Cs for submit@debbugs.gnu.org; Mon, 04 Jan 2021 01:31:28 -0500 Received: from lists.gnu.org ([209.51.188.17]:57306) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwG9g-0006PI-LX for submit@debbugs.gnu.org; Sun, 03 Jan 2021 22:03:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57288) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kwG9g-0005mX-Fd for bug-coreutils@gnu.org; Sun, 03 Jan 2021 22:03:36 -0500 Received: from mail-yb1-xb2e.google.com ([2607:f8b0:4864:20::b2e]:43876) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kwG9e-0006TK-B6 for bug-coreutils@gnu.org; Sun, 03 Jan 2021 22:03:36 -0500 Received: by mail-yb1-xb2e.google.com with SMTP id y128so24733995ybf.10 for ; Sun, 03 Jan 2021 19:03:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=pzGPNXt6vsFu+ey+bJj+qPljvnBz9642SQoeFweKmt4=; b=jLBKArUsGIntQ9GiMczQvXzR2HvUrh85vEYTpE+ZaaYGcGuk9mavzGgmUzCAx6Afrl SNI2ACBiFKrHHW+nawE86MWbeAEFUPsrmvGsHk+Een+tObH2c1xRUByN7NLne+bkiihI AFnA+qr9QQh7GzgqaccaA0Kmd79AtutDmNdBGB2p7oMwqO8c2FYifj/4IZE1GO1Zh7vW rS877bdwdsVphnjg9019RP7F/A6kxejNrECPztFf50wZoYBz63JKLT0sKo5Zps7xGnh7 NWF+tF0Xyb6soCOh1Cbq8xrvLhPuNIDpKsS9qwr1y5pSn7j2z0KDgSUEwwekVOxhd3Lk GvBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=pzGPNXt6vsFu+ey+bJj+qPljvnBz9642SQoeFweKmt4=; b=i48hrD3kTJ0Zrn7z86bxyNG5HNlvLJY7SfQqoCEJQLqZFWvrON4QPmXfRLu8fmpfd8 CyxttDmcYtAjE8r6iwV+uEQZEA/VJyaY2iIhRMn2dkjgtq+XXdNUaL0GTMGLCJ0f65Cb 6vkCPBdFpOL18lt3ClJPvprng8sUjO0KOIPwdbzJUx5quJRFO5xdfWsUPvtXc7xvzcQS 5j10Ugm48Burgxy9i07tsKcg2iA327cn0l/tySaVozdIHE7jxb0FV0Y7jJcFYgRA3kKL 3oLBsFS8zLUYLbPaDM6LTuEpgC4NCEwoeDgUZGg09cfst5hYZdJXsuOHbh31ltpOklqM AC+A== X-Gm-Message-State: AOAM530YKmzjoK/rmM8bPyy3mS7QS0aLkgf/HQtERN7UO8BPKkvBXde1 2gbpZ0dAySjnPxojQStYpPbi+uXAZMo9qia5T+bSdixgMJE= X-Google-Smtp-Source: ABdhPJy1FyTXsLyqr9O9cxOO+EPq1EsB++M9qdoEcBeRWHxMXbGvPgRQFZK/clkpNiv2KbKNc3c0bgGLzTACVtfBJ2A= X-Received: by 2002:a25:b341:: with SMTP id k1mr45380545ybg.37.1609729412346; Sun, 03 Jan 2021 19:03:32 -0800 (PST) MIME-Version: 1.0 From: Bela Lubkin Date: Sun, 3 Jan 2021 19:03:17 -0800 Message-ID: Subject: `dd` seek/skip which way is up? To: bug-coreutils@gnu.org Content-Type: multipart/alternative; boundary="000000000000ceb57005b80a55e4" Received-SPF: pass client-ip=2607:f8b0:4864:20::b2e; envelope-from=bela.lubkin@gmail.com; helo=mail-yb1-xb2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 04 Jan 2021 01:07:54 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000ceb57005b80a55e4 Content-Type: text/plain; charset="UTF-8" Hello -- I constantly confuse 'seek=N' and 'skip=N'. The two words have no natural affinity to one I/O direction or the other. I previously encountered a `dd` implementation which also accepted 'oseek=N' and 'iseek=N', which I found far more natural and easy to remember. Here is a small patch implementing the same for coreutils `dd`. Patch is against just-gotten git tree; `dd --version` reports 'dd (coreutils) 8.32.101-ebf2c-dirty'. (I probably got the .texi formatting wrong; please repair as needed.) While in the area, I slightly improved some of the help (and therefore man page). >Bela< ======================================================================== diff --git a/doc/coreutils.texi b/doc/coreutils.texi index e9dd21c4e..417857c5e 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -9100,6 +9100,15 @@ Skip @var{n} @samp{obs}-byte blocks in the output file before copying. if @samp{oflag=seek_bytes} is specified, @var{n} is interpreted as a byte count rather than a block count. +@item oseek +@item iseek +@opindex oseek +@opindex iseek +As the distinction between @samp{seek} and @samp{skip} +is easily confused, @samp{oseek} is accepted as an alias +for @samp{seek}; @samp{iseek} for @samp{skip}. +Do not use these in scripts, as this reduces compatibility. + @item count=@var{n} @opindex count Copy @var{n} @samp{ibs}-byte blocks from the input file, instead @@ -9457,6 +9466,15 @@ rather than a block count, which allows specifying an offset that is not a multiple of the I/O block size. This flag can be used only with @code{oflag}. +@item oseek_bytes +@item iseek_bytes +@opindex oseek_bytes +@opindex iseek_bytes +As the distinction between @samp{seek_bytes} and @samp{skip_bytes} +is easily confused, @samp{oseek_bytes} is accepted as an alias +for @samp{seek_bytes}; @samp{iseek_bytes} for @samp{skip_bytes}. +Do not use these in scripts, as this reduces compatibility. + @end table These flags are not supported on all systems, and @samp{dd} rejects diff --git a/src/dd.c b/src/dd.c index 9152a2550..a187522c2 100644 --- a/src/dd.c +++ b/src/dd.c @@ -381,7 +381,9 @@ static struct symbol_value const flags[] = {"fullblock", O_FULLBLOCK}, /* Accumulate full blocks from input. */ {"count_bytes", O_COUNT_BYTES}, {"skip_bytes", O_SKIP_BYTES}, + {"iseek_bytes", O_SKIP_BYTES}, {"seek_bytes", O_SEEK_BYTES}, + {"oseek_bytes", O_SEEK_BYTES}, {"", 0} }; @@ -571,7 +573,7 @@ Copy a file, converting and formatting according to the operands.\n\ overrides ibs and obs\n\ cbs=BYTES convert BYTES bytes at a time\n\ conv=CONVS convert the file as per the comma separated symbol list\n\ - count=N copy only N input blocks\n\ + count=N copy only N input blocks (bytes if iflag=count_bytes)\n\ ibs=BYTES read up to BYTES bytes at a time (default: 512)\n\ "), stdout); fputs (_("\ @@ -580,8 +582,8 @@ Copy a file, converting and formatting according to the operands.\n\ obs=BYTES write BYTES bytes at a time (default: 512)\n\ of=FILE write to FILE instead of stdout\n\ oflag=FLAGS write as per the comma separated symbol list\n\ - seek=N skip N obs-sized blocks at start of output\n\ - skip=N skip N ibs-sized blocks at start of input\n\ + seek=N (or oseek=N) skip N obs-sized blocks at start of output (bytes if oflag=seek_bytes)\n\ + skip=N (or iseek=N) skip N ibs-sized blocks at start of input (bytes if iflag=skip_bytes)\n\ status=LEVEL The LEVEL of information to print to stderr;\n\ 'none' suppresses everything but error messages,\n\ 'noxfer' suppresses the final transfer statistics,\n\ @@ -660,10 +662,10 @@ Each FLAG symbol may be:\n\ fputs (_(" count_bytes treat 'count=N' as a byte count (iflag only)\n\ "), stdout); if (O_SKIP_BYTES) - fputs (_(" skip_bytes treat 'skip=N' as a byte count (iflag only)\n\ + fputs (_(" skip_bytes (or iseek_bytes) treat 'skip=N' as a byte count (iflag only)\n\ "), stdout); if (O_SEEK_BYTES) - fputs (_(" seek_bytes treat 'seek=N' as a byte count (oflag only)\n\ + fputs (_(" seek_bytes (or oseek_bytes) treat 'seek=N' as a byte count (oflag only)\n\ "), stdout); { @@ -1554,9 +1556,11 @@ scanargs (int argc, char *const *argv) n_max = SIZE_MAX; conversion_blocksize = n; } - else if (operand_is (name, "skip")) + else if (operand_is (name, "skip") || + operand_is (name, "iseek")) skip = n; - else if (operand_is (name, "seek")) + else if (operand_is (name, "seek") || + operand_is (name, "oseek")) seek = n; else if (operand_is (name, "count")) count = n; --000000000000ceb57005b80a55e4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
He= llo --

I constantly confuse 'seek=3DN' and= 'skip=3DN'.=C2=A0 The two words have no natural affinity to one I/= O direction or the other.

I previously encountered= a `dd` implementation which also accepted 'oseek=3DN' and 'ise= ek=3DN', which I found far more natural and easy to remember.

Here is a small patch implementing the same for coreutils `= dd`.=C2=A0 Patch is against just-gotten git tree; `dd --version` reports &#= 39;dd (coreutils) 8.32.101-ebf2c-dirty'.=C2=A0 (I probably got the .tex= i formatting wrong; please repair as needed.)

While in the area, I slightly improved some of the help (and therefore man= page).

>Bela<

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

diff --git a/doc/coreutils.texi b/doc/coreu= tils.texi
index e9dd21c4e..417857c5e 100644
--- a/doc/c= oreutils.texi
+++ b/doc/coreutils.texi
@@ -9100,6 +9100= ,15 @@ Skip @var{n} @samp{obs}-byte blocks in the output file before copyin= g.
=C2=A0if @samp{oflag=3Dseek_bytes} is specified, @var{n} is in= terpreted
=C2=A0as a byte count rather than a block count.
<= div>=C2=A0
+@item oseek
+@item iseek
+@opinde= x oseek
+@opindex iseek
+As the distinction between @sa= mp{seek} and @samp{skip}
+is easily confused, @samp{oseek} is acc= epted as an alias
+for @samp{seek}; @samp{iseek} for @samp{skip}.=
+Do not use these in scripts, as this reduces compatibility.
+
=C2=A0@item count=3D@var{n}
=C2=A0@opindex cou= nt
=C2=A0Copy @var{n} @samp{ibs}-byte blocks from the input file,= instead
@@ -9457,6 +9466,15 @@ rather than a block count, which = allows specifying
=C2=A0an offset that is not a multiple of the I= /O block size.
=C2=A0This flag can be used only with @code{oflag}= .
=C2=A0
+@item oseek_bytes
+@item iseek_byte= s
+@opindex oseek_bytes
+@opindex iseek_bytes
+As the distinction between @samp{seek_bytes} and @samp{skip_bytes}
<= div>+is easily confused, @samp{oseek_bytes} is accepted as an alias+for @samp{seek_bytes}; @samp{iseek_bytes} for @samp{skip_bytes}.<= div>+Do not use these in scripts, as this reduces compatibility.
= +
=C2=A0@end table
=C2=A0
=C2=A0These flags a= re not supported on all systems, and @samp{dd} rejects
diff --git= a/src/dd.c b/src/dd.c
index 9152a2550..a187522c2 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -381,7 +381,9 @@ sta= tic struct symbol_value const flags[] =3D
=C2=A0 =C2=A0{"ful= lblock",=C2=A0 =C2=A0O_FULLBLOCK}, /* Accumulate full blocks from inpu= t.=C2=A0 */
=C2=A0 =C2=A0{"count_bytes", O_COUNT_BYTES}= ,
=C2=A0 =C2=A0{"skip_bytes",=C2=A0 O_SKIP_BYTES},
+=C2=A0 {"iseek_bytes", O_SKIP_BYTES},
=C2=A0 =C2= =A0{"seek_bytes",=C2=A0 O_SEEK_BYTES},
+=C2=A0 {"o= seek_bytes", O_SEEK_BYTES},
=C2=A0 =C2=A0{"", 0}
=C2=A0};
=C2=A0<= /div>
@@ -571,7 +573,7 @@ Copy a file, converting and formatting accord= ing to the operands.\n\
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0overrides ibs and obs\n\
=C2=A0 =C2= =A0cbs=3DBYTES=C2=A0 =C2=A0 =C2=A0 =C2=A0convert BYTES bytes at a time\n\
=C2=A0 =C2=A0conv=3DCONVS=C2=A0 =C2=A0 =C2=A0 convert the file as = per the comma separated symbol list\n\
-=C2=A0 count=3DN=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0copy only N input blocks\n\
+=C2=A0 co= unt=3DN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0copy only N input blocks (bytes if= iflag=3Dcount_bytes)\n\
=C2=A0 =C2=A0ibs=3DBYTES=C2=A0 =C2=A0 = =C2=A0 =C2=A0read up to BYTES bytes at a time (default: 512)\n\
= =C2=A0"), stdout);
=C2=A0 =C2=A0 =C2=A0 =C2=A0fputs (_("= ;\
@@ -580,8 +582,8 @@ Copy a file, converting and formatting acc= ording to the operands.\n\
=C2=A0 =C2=A0obs=3DBYTES=C2=A0 =C2=A0 = =C2=A0 =C2=A0write BYTES bytes at a time (default: 512)\n\
=C2=A0= =C2=A0of=3DFILE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0write to FILE instead of = stdout\n\
=C2=A0 =C2=A0oflag=3DFLAGS=C2=A0 =C2=A0 =C2=A0write as = per the comma separated symbol list\n\
-=C2=A0 seek=3DN=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 skip N obs-sized blocks at start of output\n\
-=C2=A0 skip=3DN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 skip N ibs-sized b= locks at start of input\n\
+=C2=A0 seek=3DN (or oseek=3DN)=C2=A0 = skip N obs-sized blocks at start of output (bytes if oflag=3Dseek_bytes)\n\=
+=C2=A0 skip=3DN (or iseek=3DN)=C2=A0 skip N ibs-sized blocks at= start of input (bytes if iflag=3Dskip_bytes)\n\
=C2=A0 =C2=A0sta= tus=3DLEVEL=C2=A0 =C2=A0 The LEVEL of information to print to stderr;\n\
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0'none' suppresses everything but error messages,\n\
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'n= oxfer' suppresses the final transfer statistics,\n\
@@ -660,1= 0 +662,10 @@ Each FLAG symbol may be:\n\
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0fputs (_("=C2=A0 count_bytes=C2=A0 treat 'count=3DN'= as a byte count (iflag only)\n\
=C2=A0"), stdout);
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (O_SKIP_BYTES)
-=C2=A0 =C2=A0 =C2= =A0 =C2=A0 fputs (_("=C2=A0 skip_bytes=C2=A0 treat 'skip=3DN' = as a byte count (iflag only)\n\
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 fput= s (_("=C2=A0 skip_bytes (or iseek_bytes)=C2=A0 treat 'skip=3DN'= ; as a byte count (iflag only)\n\
=C2=A0"), stdout);
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (O_SEEK_BYTES)
-=C2=A0 =C2=A0 = =C2=A0 =C2=A0 fputs (_("=C2=A0 seek_bytes=C2=A0 treat 'seek=3DN= 9; as a byte count (oflag only)\n\
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 f= puts (_("=C2=A0 seek_bytes (or oseek_bytes)=C2=A0 treat 'seek=3DN&= #39; as a byte count (oflag only)\n\
=C2=A0"), stdout);
=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0{
@@ -1554,9 +1= 556,11 @@ scanargs (int argc, char *const *argv)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0n_max =3D SIZE_MAX;
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0conversion_blocksize = =3D n;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (operand_is (name, "skip= "))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (operand_is = (name, "skip") ||
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 operand_is (name, "iseek"))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0skip =3D n;
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (operand_is (name, "see= k"))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (operand_is= (name, "seek") ||
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0operand_is (name, "oseek"))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0seek =3D n;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else if (operand_is (name, "= ;count"))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0co= unt =3D n;

--000000000000ceb57005b80a55e4-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 03:33:18 2021 Received: (at 45648) by debbugs.gnu.org; 4 Jan 2021 08:33:18 +0000 Received: from localhost ([127.0.0.1]:51955 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwLIk-0007GX-Dw for submit@debbugs.gnu.org; Mon, 04 Jan 2021 03:33:18 -0500 Received: from mail-out.m-online.net ([212.18.0.10]:39447) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwLIi-0007GO-K0 for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 03:33:17 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4D8TRH1MzBz1rv05; Mon, 4 Jan 2021 09:33:14 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4D8TRG62Yqz1qrft; Mon, 4 Jan 2021 09:33:14 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id itYJ09LIc-XX; Mon, 4 Jan 2021 09:33:14 +0100 (CET) X-Auth-Info: KQAFyRImy0nO20l/YSLHfFTyP1Nf71Mc3NQi+yLP0G5Qxh62TtUEI1ZuKd+O8aBy Received: from igel.home (ppp-46-244-162-85.dynamic.mnet-online.de [46.244.162.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Mon, 4 Jan 2021 09:33:14 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 872232C3238; Mon, 4 Jan 2021 09:33:13 +0100 (CET) From: Andreas Schwab To: Bela Lubkin Subject: Re: bug#45648: `dd` seek/skip which way is up? References: X-Yow: ...Get me a GIN and TONIC!!...make it HAIR TONIC!! Date: Mon, 04 Jan 2021 09:33:13 +0100 In-Reply-To: (Bela Lubkin's message of "Sun, 3 Jan 2021 19:03:17 -0800") Message-ID: <875z4dksom.fsf@igel.home> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 45648 Cc: 45648@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) On Jan 03 2021, Bela Lubkin wrote: > diff --git a/doc/coreutils.texi b/doc/coreutils.texi > index e9dd21c4e..417857c5e 100644 > --- a/doc/coreutils.texi > +++ b/doc/coreutils.texi > @@ -9100,6 +9100,15 @@ Skip @var{n} @samp{obs}-byte blocks in the output > file before copying. > if @samp{oflag=seek_bytes} is specified, @var{n} is interpreted > as a byte count rather than a block count. > > +@item oseek > +@item iseek The second @item needs to be @itemx. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 18:07:49 2021 Received: (at 45648) by debbugs.gnu.org; 4 Jan 2021 23:07:49 +0000 Received: from localhost ([127.0.0.1]:60565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwYx2-0000eG-F4 for submit@debbugs.gnu.org; Mon, 04 Jan 2021 18:07:48 -0500 Received: from mout.kundenserver.de ([212.227.126.187]:54637) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwYx0-0000e3-TO for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 18:07:47 -0500 Received: from [192.168.101.10] ([91.12.160.30]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MkYLW-1kHCFB3mvu-00m55O; Tue, 05 Jan 2021 00:07:39 +0100 Subject: Re: bug#45648: `dd` seek/skip which way is up? To: Bela Lubkin , 45648@debbugs.gnu.org References: From: Bernhard Voelker Message-ID: Date: Tue, 5 Jan 2021 00:07:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:ZvhV+pbRePX8sxv1hejsX+HZER0lz+FwTNPcISo2Rchwn1Q4JG3 YAxn/1K4cu0A0fZXyqluHrdTirpAYJ+sUxOJxbiwHwAphnIOJw7Ik0M8MGC7AkD6Lkqff/u /W3T11M0z4DbLy37qYKGFEAxXIoh6RSmIUxdxdwGIokW784fViOJH5gSNUqsWoDsmq4lWkB uZP3c713xAJe1df/Bei0A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:seT0RCFLwvA=:r76hYnvbL3+MmeDpvUSu8i Jo1DdqFdAnOV+wW7XUra4Bp7ctBVmYps2ir7ArIljAxzDNcYUX0jEsKUtdb/AglfdQ4T4Z9q2 +9yKbohq9MbgD1Zrc4mMWaNuFDR9USdEVrkXTqgdm+KsA7EXF0dAG4QcV6+fpfGp0gxy5OGqM WXylpuCSXI/yy8N1gHvvf2r5045KeitBESJZDYnLx2tHbS8G8jrTYW6G+8BB0F0cHB9Tq0XHX hzWt2sVdguNbWOOoFrcYCRFIw/UCXG8JhBXLDvAnHDs6bJW5LcVeS3t+UIEcS3Ccr++VGplyB EOT6aKafGP/rPFRUrEdL43kwzxRGEREM+xhSSDEkUKk06b22gHzaTkkeglvRiZWecTnNZl7M9 ZXyCFOm1krQVgeK0c1a6Er2O5OUsJ9dht2ykL0owF7wrUTm4kcR4zPp92ql963JhT6qbdjjvI 1+domVz5/g== X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 45648 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 1/4/21 4:03 AM, Bela Lubkin wrote: > I constantly confuse 'seek=N' and 'skip=N'. The two words have no natural > affinity to one I/O direction or the other. While the words 'seek' and 'skip' may not be strong enough for everyone to be clear about whether they apply on input or output - e.g. for non-native English speaker like myself - they are well documented in usage() and more places: $ dd --help | grep -E ' (skip|seek)=N ' seek=N skip N obs-sized blocks at start of output skip=N skip N ibs-sized blocks at start of input FWIW these terms are required by POSIX: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/dd.html > I previously encountered a `dd` implementation which also accepted > 'oseek=N' and 'iseek=N', which I found far more natural and easy to > remember. What 'dd' implementation was this specifically? > Here is a small patch implementing the same for coreutils `dd`. In my opinion: if the word chosen for an option is not clear enough to distinguish from another one, then adding yet another alias would just increase confusion. Adding options to coreutils programs has to be carefully chosen. The only reason I'd see to add such an alias would be existing behavior in one of the other major implementations. Have a nice day, Berny From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 21:06:47 2021 Received: (at 45648) by debbugs.gnu.org; 5 Jan 2021 02:06:47 +0000 Received: from localhost ([127.0.0.1]:60700 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwbkF-0004y4-Da for submit@debbugs.gnu.org; Mon, 04 Jan 2021 21:06:47 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:50218) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwbkD-0004xe-9V for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 21:06:46 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 225EF1600F3; Mon, 4 Jan 2021 18:06:39 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 4R85tufW8l8m; Mon, 4 Jan 2021 18:06:38 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3F73B1600F7; Mon, 4 Jan 2021 18:06:38 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 08U3KpC6Lay7; Mon, 4 Jan 2021 18:06:38 -0800 (PST) Received: from [192.168.1.9] (cpe-23-243-218-95.socal.res.rr.com [23.243.218.95]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 19F951600F3; Mon, 4 Jan 2021 18:06:38 -0800 (PST) Subject: Re: bug#45648: `dd` seek/skip which way is up? To: Bernhard Voelker , Bela Lubkin , 45648@debbugs.gnu.org References: From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> Date: Mon, 4 Jan 2021 18:06:37 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45648 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) On 1/4/21 3:07 PM, Bernhard Voelker wrote: >> I previously encountered a `dd` implementation which also accepted >> 'oseek=N' and 'iseek=N', which I found far more natural and easy to >> remember. > What 'dd' implementation was this specifically? Solaris dd has iseek and oseek. However, they are not aliases for skip and seek. If coreutils dd were to add these features I expect we should do them the Solaris way, instead of making them aliases for skip and seek. This would take more work than the proposed patches. https://docs.oracle.com/cd/E36784_01/html/E36871/dd-1m.html From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 22:28:36 2021 Received: (at 45648) by debbugs.gnu.org; 5 Jan 2021 03:28:36 +0000 Received: from localhost ([127.0.0.1]:60737 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwd1P-0006uy-Gr for submit@debbugs.gnu.org; Mon, 04 Jan 2021 22:28:36 -0500 Received: from mout.kundenserver.de ([212.227.126.187]:51165) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwd1O-0006uf-6u for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 22:28:34 -0500 Received: from [192.168.101.10] ([91.12.160.30]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mqrs9-1k9pwH1BdR-00mtp3; Tue, 05 Jan 2021 04:28:16 +0100 Subject: Re: bug#45648: `dd` seek/skip which way is up? To: Paul Eggert , Bela Lubkin , 45648@debbugs.gnu.org References: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> From: Bernhard Voelker Message-ID: <8aa31ca0-18db-9e3d-6932-f510ce815266@bernhard-voelker.de> Date: Tue, 5 Jan 2021 04:28:15 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:dI5XDzccM6aAdC4zc9bvCxsnsueV045km59aAM8yghFQDNAyDbz vtLUiEeWCvWlob3uBhQDBz4sjDMJcMY63zGVB/DPuH3Jlaj9rJA9TLskcNk37UnrVp0fxL3 Y4STdA4yCCNZ8cnht4RIXRBz4rpqf394eBUfHT7Ju3a0iS6q2IeZrlNV8qs3kFJFVX1tgXC tOuoeGlq/n2Whrrf8MzaA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:CoBmJQwMfvU=:bddb9h0yR2XSVhRw3Vej3k shONYgo4Sz0Gzjvx/0/RlH3Z391+JUOUGq+/MCAT+tSlueFpFb5w6EgPBr3vWZ9viw/1YdaL3 f7r+vMsgUmlEadr0zdTIcjGkzSZ3+pUrcR0J98vcSoEV4HhuSdnaEi+t+jXJh4CZSsord7R1K KjKh3MkjtYrpcrOJhS2c90QeRfLcUUG4XFHHW1SNFqNMqB3RyOFjowlD2NwPy9RUeJVp6vfTK OZsF38QkzSpbS6bO27N99uacdptZESSpee7yvz877KPFuBuLj6MPg+kvXSa5+V0X3gzt8yvtI TeBZRB/WanDO73xdEYjquM41H1AE2rSqOQbqzrsZ7E0aAoX7wqZgksx0Mjilq3UzcyEgoZdwi IP/Pccg6lKMDqg64OIRKsaLy3MTqNHTObmIwfQqtRbN6DbYvdz3D4YS37QMkOTNUz88RUmx5H bEejXFyrSw== X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 45648 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 1/5/21 3:06 AM, Paul Eggert wrote: > On 1/4/21 3:07 PM, Bernhard Voelker wrote: >> What 'dd' implementation was this specifically? > > Solaris dd has iseek and oseek. However, they are not aliases for skip > and seek. If coreutils dd were to add these features I expect we should > do them the Solaris way, instead of making them aliases for skip and > seek. This would take more work than the proposed patches. > > https://docs.oracle.com/cd/E36784_01/html/E36871/dd-1m.html That would make the situation even more confusing for the user ... and more complex because such implementation would interfere with GNU dd's seek/skip and iflag=skip_bytes and oflag=skip_bytes functionality. Doesn't sound like a good idea. Have a nice day, Berny From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 22:44:37 2021 Received: (at 45648) by debbugs.gnu.org; 5 Jan 2021 03:44:37 +0000 Received: from localhost ([127.0.0.1]:60743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwdGv-0007OW-7Q for submit@debbugs.gnu.org; Mon, 04 Jan 2021 22:44:37 -0500 Received: from mail-yb1-f171.google.com ([209.85.219.171]:40811) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwdGs-0007OC-95 for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 22:44:35 -0500 Received: by mail-yb1-f171.google.com with SMTP id b64so28018866ybg.7 for <45648@debbugs.gnu.org>; Mon, 04 Jan 2021 19:44:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6ewJdgRUQQhD9VwoeEGrXrdlKHYFUcAFtfXl57LIxXY=; b=FfCGt1JbT+Y2/y/HJTSsKDDtKfophQ0SPm3DzgW+hWg3HwGdkhezSG9MZVJ2OahDFP o06oHmi90npfVcKnJBxavsZeWAtyXRPjILuCxeqm3bcxfrNh3FAAQCMlj5FbzaRtyDQw 9NyaVvU1Xe4ebZoYS80zz9mehuzzDwgNLNqtKq6KK/WsqQ2kEWebS+gAFdMoMv2O8qO/ 5pRHWxZcOI2lVCQusvHaG2ugoFG0HpF3nGmMv94/stgGB5XXt39z0xjodyjagEx4zTmH iHATbJbSqqPsXgm2oxEwlSCvTrp7fnD3OZcxrkFHaJWlEYu/2sCqfiJBUDrH6K7QoO8l r4WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6ewJdgRUQQhD9VwoeEGrXrdlKHYFUcAFtfXl57LIxXY=; b=qbgSUbGUTNMqs3aUjDbc/KD6p40lvggUsmGmnVeK01AQRZHKFSdz/+HaMTQWxp3tbP c1PqdXTZO1Uo/uMwSlTYcGDwGLwitxcMv8fVG4fYVtSra9OSlBx59NGZnNRaCvccfFRi oSOGDU6ReLr8UowZvhxIGXIygpebSNIo11R8It+w8krT6VZyY0Ofb5qP2ii4+/YS+ajt QfEDUqAgaPERP+X0bvKvWJTX+DF+cGJn9FOzGkc/tOj9Jw0BI4W1y4rYZKmmab6rlUh3 svWZoJuASZA3/hg7p8Obz644ZHfPESmD4SDGH2QmEg6wTKNDamVv/b/WzkMyYjFIp/pI 5e5g== X-Gm-Message-State: AOAM530BgfuawG2qzWlMPDXtOMxLqqBQGpKQUTq8q7ZLp72oom75ey0d kfStVtGyIPohnNcpZpBUAAJbTlzBkD5j5B0PWjA= X-Google-Smtp-Source: ABdhPJxRgIb0nfrqvNfZC9b0NJ6puKjcCk0AgFDWroR/wwslMSsRgVj25tZU+Miprk8CuTXzdNPFRHyVYIpfxA/U2FU= X-Received: by 2002:a25:3244:: with SMTP id y65mr105181246yby.124.1609818267528; Mon, 04 Jan 2021 19:44:27 -0800 (PST) MIME-Version: 1.0 References: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> In-Reply-To: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> From: Bela Lubkin Date: Mon, 4 Jan 2021 19:44:11 -0800 Message-ID: Subject: Re: bug#45648: `dd` seek/skip which way is up? To: Paul Eggert Content-Type: multipart/alternative; boundary="000000000000fd31ac05b81f0597" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 45648 Cc: Bernhard Voelker , 45648@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000fd31ac05b81f0597 Content-Type: text/plain; charset="UTF-8" TLDR: *huge* existing presence of 'iseek' and 'oseek'; most OSes document them as pure synonyms for 'skip' and 'seek'. ==== The implementation where I encountered it was SCO OpenServer. Like Solaris, there was a distinction between 'iseek' and 'skip' ('skip' reads, 'iseek' seeks); no distinction between 'oseek' and 'seek'. I consulted with freebsd.org/cgi/man.cgi?query=dd -- this shows that *many* OSes support these keywords. The current default display is FreeBSD 12.2, which says: 'iseek=n Seek on the input file n blocks. This is synonymous with skip=n.' 'oseek=n Seek on the output file n blocks. This is synonymous with seek=n.' Identical text exists since FreeBSD 4.0 (2000-03); Darwin 5.0.1; HP-UX 11.1; NetBSD 6.0; DEC OSF/1 4.0. These are *ancient* OSes. IRIX 6.5.30 actually documents 'seek' as 'Identical to oseek, retained for backward compatibility.', i.e. 'oseek' is the real flag in this man page's mind. The man pages from Plan 9 & Inferno 4th edition (AT&T research OSes) document 'skip', 'iseek', 'oseek', but not 'seek' at all! Regarding the actual implementation, being able to manually control seeking vs. actually doing useless I/O does not seem useful to me in 2021. The distinction exist(ed) for the benefit of things like tape drives, which of course do still exist. But back then, information about what was or was not seekable was poorly plumbed up from drivers to userland. Today, it should be clear whether a file (whatever its fundamental implementation is) is, or is not, seekable; `dd` should always attempt to seek if possible, slog through the corresponding I/O only if the underlying file cannot seek. In fact, the pointed-to Open Group specification precisely supports that position: 'skip' says, 'Skip n input blocks ... On seekable files, ... read the blocks or seek past them; on non-seekable files, ... read and ... [discard]'; 'seek' says, 'Skip n [output] blocks ... On non-seekable files, [read] existing blocks ...; on seekable files, ... seek ... or read ...' i.e. 'do I/O if not seekable; implementer's choice if seekable'. The Solaris page is the only one where there is a possible implication that 'oseek' is different from 'seek', but only because the 'oseek' description is vestigial. (Exact same text persists from Solaris 2.5.1 through the 11.2 pointed to above.) Should coreutils `dd` insist that if one uses 'oseek' and the file isn't seekable, it should fail? This violates least surprise. 'iseek' and 'oseek' should seek if possible, read if not. Whereas 'skip' and 'seek' *may* seek if possible, read if not. This distinction is uninteresting since the implementation *should* take advantage of the *may*. Both the Solaris and Open Group man pages describe 'seek' as 'Skip[s] n blocks', again showing that the words are not at all bound to a particular direction. >Bela< On Mon, Jan 4, 2021 at 6:06 PM Paul Eggert wrote: > On 1/4/21 3:07 PM, Bernhard Voelker wrote: > >> I previously encountered a `dd` implementation which also accepted > >> 'oseek=N' and 'iseek=N', which I found far more natural and easy to > >> remember. > > What 'dd' implementation was this specifically? > > Solaris dd has iseek and oseek. However, they are not aliases for skip > and seek. If coreutils dd were to add these features I expect we should > do them the Solaris way, instead of making them aliases for skip and > seek. This would take more work than the proposed patches. > > https://docs.oracle.com/cd/E36784_01/html/E36871/dd-1m.html > --000000000000fd31ac05b81f0597 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
TLDR: huge e= xisting presence of 'iseek' and 'oseek'; most OSes document= them as pure synonyms for 'skip' and 'seek'.
=3D=3D=3D=3D

The implementation where = I encountered it was SCO OpenServer.=C2=A0 Like Solaris, there was a distin= ction between 'iseek' and 'skip' ('skip' reads, = 9;iseek' seeks); no distinction between 'oseek' and 'seek&#= 39;.

I consulted with freebsd.org/cgi/man.cgi?query=3Ddd -- this sh= ows that *many* OSes support these keywords.=C2=A0 The current default disp= lay is FreeBSD 12.2, which says:

'iseek=3Dn=C2= =A0 Seek on the input file n blocks. This is synonymous with skip=3Dn.'=
'oseek=3Dn=C2=A0 Seek on the output file n blocks. This is s= ynonymous with seek=3Dn.'

Identical text exist= s since FreeBSD 4.0 (2000-03); Darwin 5.0.1; HP-UX 11.1; NetBSD 6.0; DEC OS= F/1 4.0.=C2=A0 These are *ancient* OSes.

IRIX 6.5.= 30 actually documents 'seek' as 'Identical to oseek, retained f= or backward compatibility.', i.e. 'oseek' is the real flag in t= his man page's mind.

The man pages from Plan 9= & Inferno 4th edition (AT&T research OSes) document 'skip'= , 'iseek', 'oseek', but not 'seek' at all!

Regarding the actual implementation, being able to manuall= y control seeking vs. actually doing useless I/O does not seem useful to me= in 2021.=C2=A0 The distinction exist(ed) for the benefit of things like ta= pe drives, which of course do still exist.=C2=A0 But back then, information= about what was or was not seekable was poorly plumbed up from drivers to u= serland.=C2=A0 Today, it should be clear whether a file (whatever its funda= mental implementation is) is, or is not, seekable; `dd` should always attem= pt to seek if possible, slog through the corresponding I/O only if the unde= rlying file cannot seek.

In fact, the pointed-to O= pen Group specification precisely supports that position:

'skip' says, 'Skip n input blocks ... On seekable files= , ... read the blocks or seek past them; on non-seekable files, ... read an= d ... [discard]';

'seek' says, 'Sk= ip n [output] blocks ... On non-seekable files, [read] existing blocks ...;= on seekable files, ... seek ... or read ...'

= i.e. 'do I/O if not seekable; implementer's choice if seekable'= .

The Solaris page is the only one where there is = a possible implication that 'oseek' is different from 'seek'= ;, but only because the 'oseek' description is vestigial.=C2=A0 (Ex= act same text persists from Solaris 2.5.1 through the 11.2 pointed to above= .)

Should coreutils `dd` insist that if one uses 'os= eek' and the file isn't seekable, it should fail?=C2=A0 This violat= es least surprise.=C2=A0 'iseek' and 'oseek' should seek if= possible, read if not.=C2=A0 Whereas 'skip' and 'seek' *ma= y* seek if possible, read if not.=C2=A0 This distinction is uninteresting s= ince the implementation *should* take advantage of the *may*.
Both the Solaris and Open Group man pages describe 'seek= 9; as 'Skip[s] n blocks', again showing that the words are not at a= ll bound to a particular direction.

>Bela= <

On Mon, Jan 4, 2021 at 6:06 PM Paul Eggert <eggert@cs.ucla.edu> wrote:
=
On 1/4/21 3:07 PM, Bernha= rd Voelker wrote:
>> I previously encountered a `dd` implementation which also accepted=
>> 'oseek=3DN' and 'iseek=3DN', which I found far mor= e natural and easy to
>> remember.
> What 'dd' implementation was this specifically?

Solaris dd has iseek and oseek. However, they are not aliases for skip
and seek. If coreutils dd were to add these features I expect we should do them the Solaris way, instead of making them aliases for skip and
seek. This would take more work than the proposed patches.

https://docs.oracle.com/cd/E36784_01/html= /E36871/dd-1m.html
--000000000000fd31ac05b81f0597-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 04 23:08:46 2021 Received: (at 45648) by debbugs.gnu.org; 5 Jan 2021 04:08:47 +0000 Received: from localhost ([127.0.0.1]:60764 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwdeI-00085U-M6 for submit@debbugs.gnu.org; Mon, 04 Jan 2021 23:08:46 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:36038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwdeF-00085D-Lr for 45648@debbugs.gnu.org; Mon, 04 Jan 2021 23:08:45 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 6216A1600F7; Mon, 4 Jan 2021 20:08:37 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id z29a9iBM4nO7; Mon, 4 Jan 2021 20:08:36 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id AEFDE1600F8; Mon, 4 Jan 2021 20:08:36 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id hUJvST9D4Zpw; Mon, 4 Jan 2021 20:08:36 -0800 (PST) Received: from [192.168.1.9] (cpe-23-243-218-95.socal.res.rr.com [23.243.218.95]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 4DEAA1600F7; Mon, 4 Jan 2021 20:08:36 -0800 (PST) Subject: Re: bug#45648: `dd` seek/skip which way is up? To: Bela Lubkin References: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <2b7bacda-8163-5804-cc08-4eb476b2e891@cs.ucla.edu> Date: Mon, 4 Jan 2021 20:08:36 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45648 Cc: Bernhard Voelker , 45648@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) On 1/4/21 7:44 PM, Bela Lubkin wrote: > TLDR: *huge* existing presence of 'iseek' and 'oseek'; most OSes document > them as pure synonyms for 'skip' and 'seek'. Thanks for doing all that research. It's compelling, and I think your patch (or something like it) should go in. I'll wait for a bit to hear other opinions. From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 22 12:12:56 2022 Received: (at 45648-done) by debbugs.gnu.org; 22 Feb 2022 17:12:56 +0000 Received: from localhost ([127.0.0.1]:42501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nMYib-0003Rf-Ns for submit@debbugs.gnu.org; Tue, 22 Feb 2022 12:12:56 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:49446) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nMYiZ-0003RQ-Cj for 45648-done@debbugs.gnu.org; Tue, 22 Feb 2022 12:12:52 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 67858160140; Tue, 22 Feb 2022 09:12:45 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id eLv70STJge6S; Tue, 22 Feb 2022 09:12:43 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3FBAD160145; Tue, 22 Feb 2022 09:12:43 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id oQ_3zWIuERnm; Tue, 22 Feb 2022 09:12:43 -0800 (PST) Received: from [192.168.1.9] (cpe-172-91-119-151.socal.res.rr.com [172.91.119.151]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 0C31C160140; Tue, 22 Feb 2022 09:12:43 -0800 (PST) Content-Type: multipart/mixed; boundary="------------9bGkJoLvy0N0Qluy27k2LMDn" Message-ID: <236820c4-1e7d-08f9-32e2-481f97af5bde@cs.ucla.edu> Date: Tue, 22 Feb 2022 09:12:42 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US From: Paul Eggert To: Bela Lubkin References: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> <2b7bacda-8163-5804-cc08-4eb476b2e891@cs.ucla.edu> Organization: UCLA Computer Science Department Subject: Re: bug#45648: `dd` seek/skip which way is up? In-Reply-To: <2b7bacda-8163-5804-cc08-4eb476b2e891@cs.ucla.edu> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45648-done Cc: 45648-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --------------9bGkJoLvy0N0Qluy27k2LMDn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/4/21 20:08, Paul Eggert wrote: > On 1/4/21 7:44 PM, Bela Lubkin wrote: >> TLDR: *huge* existing presence of 'iseek' and 'oseek'; most OSes document >> them as pure synonyms for 'skip' and 'seek'. > > Thanks for doing all that research. It's compelling, and I think your > patch (or something like it) should go in. I'll wait for a bit to hear > other opinions. After thinking about the patch a bit more, let's omit the part about adding new conversions iseek_bytes etc., as I think there's a better way to address that issue. I proposed something in . So instead of your patch, I installed the attached patches. The first one adds the iseek and oseek operands that you suggested; the second one clarifies dd documentation, as I found several things were confusing when rereading it carefully. Something like these patches should appear in the next coreutils release. --------------9bGkJoLvy0N0Qluy27k2LMDn Content-Type: text/x-patch; charset=UTF-8; name="0001-dd-support-iseek-and-oseek.patch" Content-Disposition: attachment; filename="0001-dd-support-iseek-and-oseek.patch" Content-Transfer-Encoding: base64 RnJvbSA2YWQ5ODE5MDBjYzE3MDI1OGQ0OTE0MTk3ZTI3OTZmYzk0YTM3ODYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDIxIEZlYiAyMDIyIDExOjIzOjAyIC0wODAwClN1YmplY3Q6IFtQQVRD SCAxLzJdIGRkOiBzdXBwb3J0IGlzZWVrPSBhbmQgb3NlZWs9CgpBbGlhcyBpc2Vlaz1OIHRv IHNraXA9Tiwgb3NlZWs9TiB0byBzZWVrPU4gKEJ1ZyM0NTY0OCkuCiogc3JjL2RkLmMgKHNj YW5hcmdzKTogUGFyc2UgaXNlZWs9IGFuZCBvc2Vlaz0uCiogdGVzdHMvZGQvc2tpcC1zZWVr LnBsIChzay1zZWVrNSk6IE5ldyB0ZXN0IGNhc2UuCi0tLQogTkVXUyAgICAgICAgICAgICAg ICAgIHwgIDMgKysrCiBkb2MvY29yZXV0aWxzLnRleGkgICAgfCAxNiArKysrKysrKysrLS0t LS0tCiBzcmMvZGQuYyAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogdGVzdHMvZGQvc2tp cC1zZWVrLnBsIHwgMTAgKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRp b25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRl eCBlZjY1YjRhYjguLmRlMDNmMGQ0NyAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBA IC01Nyw2ICs1Nyw5IEBAIEdOVSBjb3JldXRpbHMgTkVXUyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0qLSBvdXRsaW5lIC0qLQogICBkZCBjb252PWZzeW5jIG5vdyBz eW5jaHJvbml6ZXMgb3V0cHV0IGV2ZW4gYWZ0ZXIgYSB3cml0ZSBlcnJvciwKICAgYW5kIHNp bWlsYXJseSBmb3IgZGQgY29udj1mZGF0YXN5bmMuCiAKKyAgZGQgbm93IHN1cHBvcnRzIHRo ZSBhbGlhc2VzIGlzZWVrPU4gZm9yIHNraXA9TiwgYW5kIG9zZWVrPU4gZm9yIHNlZWs9TiwK KyAgbGlrZSBGcmVlQlNEIGFuZCBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcy4KKwogICB0aW1l b3V0IC0tZm9yZWdyb3VuZCAtLWtpbGwtYWZ0ZXI9Li4uIHdpbGwgbm93IGV4aXQgd2l0aCBz dGF0dXMgMTM3CiAgIGlmIHRoZSBraWxsIHNpZ25hbCB3YXMgc2VudCwgd2hpY2ggaXMgY29u c2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvcgogICB3aGVuIHRoZSAtLWZvcmVncm91bmQgb3B0 aW9uIGlzIG5vdCBzcGVjaWZpZWQuICBUaGlzIGFsbG93cyB1c2VycyB0bwpkaWZmIC0tZ2l0 IGEvZG9jL2NvcmV1dGlscy50ZXhpIGIvZG9jL2NvcmV1dGlscy50ZXhpCmluZGV4IDhkMjk3 NGJkZS4uNGVjOTk4ODAyIDEwMDY0NAotLS0gYS9kb2MvY29yZXV0aWxzLnRleGkKKysrIGIv ZG9jL2NvcmV1dGlscy50ZXhpCkBAIC05MTg5LDggKzkxODksNyBAQCBSZWFkIGZyb20gQHZh cntmaWxlfSBpbnN0ZWFkIG9mIHN0YW5kYXJkIGlucHV0LgogQGl0ZW0gb2Y9QHZhcntmaWxl fQogQG9waW5kZXggb2YKIFdyaXRlIHRvIEB2YXJ7ZmlsZX0gaW5zdGVhZCBvZiBzdGFuZGFy ZCBvdXRwdXQuICBVbmxlc3MKLUBzYW1we2NvbnY9bm90cnVuY30gaXMgZ2l2ZW4sIEBjb21t YW5ke2RkfSB0cnVuY2F0ZXMgQHZhcntmaWxlfSB0byB6ZXJvCi1ieXRlcyAob3IgdGhlIHNp emUgc3BlY2lmaWVkIHdpdGggQHNhbXB7c2Vlaz19KS4KK0BzYW1we2NvbnY9bm90cnVuY30g aXMgZ2l2ZW4sIHRydW5jYXRlIEB2YXJ7ZmlsZX0gYmVmb3JlIHdyaXRpbmcgaXQuCiAKIEBp dGVtIGlicz1AdmFye2J5dGVzfQogQG9waW5kZXggaWJzCkBAIC05MjMwLDE1ICs5MjI5LDIw IEBAIFdoZW4gY29udmVydGluZyB2YXJpYWJsZS1sZW5ndGggcmVjb3JkcyB0byBmaXhlZC1s ZW5ndGggb25lcwogdXNlIEB2YXJ7Ynl0ZXN9IGFzIHRoZSBmaXhlZCByZWNvcmQgbGVuZ3Ro LgogCiBAaXRlbSBza2lwPUB2YXJ7bn0KK0BpdGVteCBpc2Vlaz1AdmFye259CiBAb3BpbmRl eCBza2lwCitAb3BpbmRleCBpc2VlawogU2tpcCBAdmFye259IEBzYW1we2lic30tYnl0ZSBi bG9ja3MgaW4gdGhlIGlucHV0IGZpbGUgYmVmb3JlIGNvcHlpbmcuCiBJZiBAc2FtcHtpZmxh Zz1za2lwX2J5dGVzfSBpcyBzcGVjaWZpZWQsIEB2YXJ7bn0gaXMgaW50ZXJwcmV0ZWQKIGFz IGEgYnl0ZSBjb3VudCByYXRoZXIgdGhhbiBhIGJsb2NrIGNvdW50LgogCiBAaXRlbSBzZWVr PUB2YXJ7bn0KK0BpdGVteCBvc2Vlaz1AdmFye259CiBAb3BpbmRleCBzZWVrCi1Ta2lwIEB2 YXJ7bn0gQHNhbXB7b2JzfS1ieXRlIGJsb2NrcyBpbiB0aGUgb3V0cHV0IGZpbGUgYmVmb3Jl IGNvcHlpbmcuCi1pZiBAc2FtcHtvZmxhZz1zZWVrX2J5dGVzfSBpcyBzcGVjaWZpZWQsIEB2 YXJ7bn0gaXMgaW50ZXJwcmV0ZWQKK0BvcGluZGV4IG9zZWVrCitTa2lwIEB2YXJ7bn0gQHNh bXB7b2JzfS1ieXRlIGJsb2NrcyBpbiB0aGUgb3V0cHV0IGZpbGUgYmVmb3JlCit0cnVuY2F0 aW5nIG9yIGNvcHlpbmcuCitJZiBAc2FtcHtvZmxhZz1zZWVrX2J5dGVzfSBpcyBzcGVjaWZp ZWQsIEB2YXJ7bn0gaXMgaW50ZXJwcmV0ZWQKIGFzIGEgYnl0ZSBjb3VudCByYXRoZXIgdGhh biBhIGJsb2NrIGNvdW50LgogCiBAaXRlbSBjb3VudD1AdmFye259CkBAIC05NTg4LDE0ICs5 NTkyLDE0IEBAIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggQGNvZGV7aWZsYWd9 LgogCiBAaXRlbSBza2lwX2J5dGVzCiBAb3BpbmRleCBza2lwX2J5dGVzCi1JbnRlcnByZXQg dGhlIEBzYW1we3NraXA9fSBvcGVyYW5kIGFzIGEgYnl0ZSBjb3VudCwKK0ludGVycHJldCB0 aGUgQHNhbXB7c2tpcD19IG9yIEBzYW1we2lzZWVrPX0gb3BlcmFuZCBhcyBhIGJ5dGUgY291 bnQsCiByYXRoZXIgdGhhbiBhIGJsb2NrIGNvdW50LCB3aGljaCBhbGxvd3Mgc3BlY2lmeWlu ZwogYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIEkvTyBibG9jayBz aXplLgogVGhpcyBmbGFnIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBAY29kZXtpZmxhZ30uCiAK IEBpdGVtIHNlZWtfYnl0ZXMKIEBvcGluZGV4IHNlZWtfYnl0ZXMKLUludGVycHJldCB0aGUg QHNhbXB7c2Vlaz19IG9wZXJhbmQgYXMgYSBieXRlIGNvdW50LAorSW50ZXJwcmV0IHRoZSBA c2FtcHtzZWVrPX0gb3IgQHNhbXB7b3NlZWs9fSBvcGVyYW5kIGFzIGEgYnl0ZSBjb3VudCwK IHJhdGhlciB0aGFuIGEgYmxvY2sgY291bnQsIHdoaWNoIGFsbG93cyBzcGVjaWZ5aW5nCiBh biBvZmZzZXQgdGhhdCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgSS9PIGJsb2NrIHNpemUu CiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgb25seSB3aXRoIEBjb2Rle29mbGFnfS4KZGlmZiAt LWdpdCBhL3NyYy9kZC5jIGIvc3JjL2RkLmMKaW5kZXggNzM2MGE0OTczLi4xYzMwZTQxNGQg MTAwNjQ0Ci0tLSBhL3NyYy9kZC5jCisrKyBiL3NyYy9kZC5jCkBAIC01NjIsOCArNTYyLDgg QEAgQ29weSBhIGZpbGUsIGNvbnZlcnRpbmcgYW5kIGZvcm1hdHRpbmcgYWNjb3JkaW5nIHRv IHRoZSBvcGVyYW5kcy5cblwKICAgb2JzPUJZVEVTICAgICAgIHdyaXRlIEJZVEVTIGJ5dGVz IGF0IGEgdGltZSAoZGVmYXVsdDogNTEyKVxuXAogICBvZj1GSUxFICAgICAgICAgd3JpdGUg dG8gRklMRSBpbnN0ZWFkIG9mIHN0ZG91dFxuXAogICBvZmxhZz1GTEFHUyAgICAgd3JpdGUg YXMgcGVyIHRoZSBjb21tYSBzZXBhcmF0ZWQgc3ltYm9sIGxpc3RcblwKLSAgc2Vlaz1OICAg ICAgICAgIHNraXAgTiBvYnMtc2l6ZWQgYmxvY2tzIGF0IHN0YXJ0IG9mIG91dHB1dFxuXAot ICBza2lwPU4gICAgICAgICAgc2tpcCBOIGlicy1zaXplZCBibG9ja3MgYXQgc3RhcnQgb2Yg aW5wdXRcblwKKyAgc2Vlaz1OICAgICAgICAgIChvciBvc2Vlaz1OKSBza2lwIE4gb2JzLXNp emVkIG91dHB1dCBibG9ja3NcblwKKyAgc2tpcD1OICAgICAgICAgIChvciBpc2Vlaz1OKSBz a2lwIE4gaWJzLXNpemVkIGlucHV0IGJsb2Nrc1xuXAogICBzdGF0dXM9TEVWRUwgICAgVGhl IExFVkVMIG9mIGluZm9ybWF0aW9uIHRvIHByaW50IHRvIHN0ZGVycjtcblwKICAgICAgICAg ICAgICAgICAgICdub25lJyBzdXBwcmVzc2VzIGV2ZXJ5dGhpbmcgYnV0IGVycm9yIG1lc3Nh Z2VzLFxuXAogICAgICAgICAgICAgICAgICAgJ25veGZlcicgc3VwcHJlc3NlcyB0aGUgZmlu YWwgdHJhbnNmZXIgc3RhdGlzdGljcyxcblwKQEAgLTE1NjQsOSArMTU2NCw5IEBAIHNjYW5h cmdzIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YpCiAgICAgICAgICAgICAgIG5fbWF4 ID0gTUlOIChTSVpFX01BWCwgSURYX01BWCk7CiAgICAgICAgICAgICAgIGNvbnZlcnRlZF9p ZHggPSAmY29udmVyc2lvbl9ibG9ja3NpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg ZWxzZSBpZiAob3BlcmFuZF9pcyAobmFtZSwgInNraXAiKSkKKyAgICAgICAgICBlbHNlIGlm IChvcGVyYW5kX2lzIChuYW1lLCAic2tpcCIpIHx8IG9wZXJhbmRfaXMgKG5hbWUsICJpc2Vl ayIpKQogICAgICAgICAgICAgc2tpcCA9IG47Ci0gICAgICAgICAgZWxzZSBpZiAob3BlcmFu ZF9pcyAobmFtZSwgInNlZWsiKSkKKyAgICAgICAgICBlbHNlIGlmIChvcGVyYW5kX2lzIChu YW1lICsgKCpuYW1lID09ICdvJyksICJzZWVrIikpCiAgICAgICAgICAgICBzZWVrID0gbjsK ICAgICAgICAgICBlbHNlIGlmIChvcGVyYW5kX2lzIChuYW1lLCAiY291bnQiKSkKICAgICAg ICAgICAgIGNvdW50ID0gbjsKZGlmZiAtLWdpdCBhL3Rlc3RzL2RkL3NraXAtc2Vlay5wbCBi L3Rlc3RzL2RkL3NraXAtc2Vlay5wbAppbmRleCA0MTYzOWNjNzEuLjBmY2IxY2YyNSAxMDA3 NTUKLS0tIGEvdGVzdHMvZGQvc2tpcC1zZWVrLnBsCisrKyBiL3Rlc3RzL2RkL3NraXAtc2Vl ay5wbApAQCAtNjgsNiArNjgsMTYgQEAgbXkgQFRlc3RzID0KICAgICAgIHtPVVQ9PiAiYmNc biJ9LAogICAgICAge0VSUj0+ICIzKzAgcmVjb3JkcyBpblxuMyswIHJlY29yZHMgb3V0XG4i fSwKICAgICAgXSwKKyAgICAgWworICAgICAgIyBDaGVjayB0aGF0IGlzZWVrIGFuZCBvc2Vl ayBhbGlhc2VzIHdvcmsgdG9vLgorICAgICAgJ3NrLXNlZWs1JywKKyAgICAgIHF3IChicz0x IGlzZWVrPTEgb3NlZWs9MiBjb252PW5vdHJ1bmMgY291bnQ9MyBzdGF0dXM9bm94ZmVyIG9m PUBBVVhAIDwgKSwKKyAgICAgIHtJTj0+ICcwMTIzNDU2Nzg5YWJjZGVmJ30sCisgICAgICB7 QVVYPT4gJ3p5eHd2dXRzcnFwb25tbGtqaSd9LAorICAgICAge09VVD0+ICcnfSwKKyAgICAg IHtFUlI9PiAiMyswIHJlY29yZHMgaW5cbjMrMCByZWNvcmRzIG91dFxuIn0sCisgICAgICB7 Q01QPT4gWyd6eTEyM3V0c3JxcG9ubWxramknLCB7J0BBVVhAJz0+IHVuZGVmfV19LAorICAg ICBdLAogICAgICk7CiAKIG15ICRzYXZlX3RlbXBzID0gJEVOVntERUJVR307Ci0tIAoyLjMy LjAKCg== --------------9bGkJoLvy0N0Qluy27k2LMDn Content-Type: text/x-patch; charset=UTF-8; name="0002-dd-improve-doc-relative-to-POSIX.patch" Content-Disposition: attachment; filename="0002-dd-improve-doc-relative-to-POSIX.patch" Content-Transfer-Encoding: base64 RnJvbSBhMmQwYWQ2YzZkZTAzMmFjYWRlYzMyNTMyYWZjMjJlNDdkYTRiNjE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUdWUsIDIyIEZlYiAyMDIyIDA4OjU1OjUzIC0wODAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIGRkOiBpbXByb3ZlIGRvYyByZWxhdGl2ZSB0byBQT1NJWAoKKiBkb2MvY29yZXV0 aWxzLnRleGkgKGRkIGludm9jYXRpb24pOiBJbXByb3ZlIGRvY3VtZW50YXRpb24sCmNsYXJp Znlpbmcgd2hldGhlciBmZWF0dXJlcyBhcmUgZXh0ZW5zaW9ucyB0byBQT1NJWC4KLS0tCiBk b2MvY29yZXV0aWxzLnRleGkgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgMTgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2NvcmV1dGlscy50ZXhpIGIvZG9jL2Nv cmV1dGlscy50ZXhpCmluZGV4IDRlYzk5ODgwMi4uNTQxOWM2MWVmIDEwMDY0NAotLS0gYS9k b2MvY29yZXV0aWxzLnRleGkKKysrIGIvZG9jL2NvcmV1dGlscy50ZXhpCkBAIC05MTY2LDkg KzkxNjYsOCBAQCBvcHRpb24sIGFuZCBvdmVycmlkZXMgdGhlIEBvcHRpb257LS1wcmVzZXJ2 ZT1hbGx9IGFuZCBAb3B0aW9uey1hfSBvcHRpb25zLgogQHBpbmRleCBkZAogQGNpbmRleCBj b252ZXJ0aW5nIHdoaWxlIGNvcHlpbmcgYSBmaWxlCiAKLUBjb21tYW5ke2RkfSBjb3BpZXMg YSBmaWxlIChmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHN0YW5kYXJkIG91dHB1dCwgYnkKLWRl ZmF1bHQpIHdpdGggYSBjaGFuZ2VhYmxlIEkvTyBibG9jayBzaXplLCB3aGlsZSBvcHRpb25h bGx5IHBlcmZvcm1pbmcKLWNvbnZlcnNpb25zIG9uIGl0LiAgU3lub3BzZXM6CitAY29tbWFu ZHtkZH0gY29waWVzIGlucHV0IHRvIG91dHB1dCB3aXRoIGEgY2hhbmdlYWJsZSBJL08gYmxv Y2sgc2l6ZSwKK3doaWxlIG9wdGlvbmFsbHkgcGVyZm9ybWluZyBjb252ZXJzaW9ucyBvbiB0 aGUgZGF0YS4gIFN5bm9wc2VzOgogCiBAZXhhbXBsZQogZGQgW0B2YXJ7b3BlcmFuZH1dQGRv dHN7fQpAQCAtOTE3Niw3ICs5MTc1LDQzIEBAIGRkIEB2YXJ7b3B0aW9ufQogQGVuZCBleGFt cGxlCiAKIFRoZSBvbmx5IG9wdGlvbnMgYXJlIEBvcHRpb257LS1oZWxwfSBhbmQgQG9wdGlv bnstLXZlcnNpb259LgotQHhyZWZ7Q29tbW9uIG9wdGlvbnN9LiAgQGNvbW1hbmR7ZGR9IGFj Y2VwdHMgdGhlIGZvbGxvd2luZyBvcGVyYW5kcywKK0B4cmVme0NvbW1vbiBvcHRpb25zfS4K KworQnkgZGVmYXVsdCwgQGNvbW1hbmR7ZGR9IGNvcGllcyBzdGFuZGFyZCBpbnB1dCB0byBz dGFuZGFyZCBvdXRwdXQuCitUbyBjb3B5LCBAY29tbWFuZHtkZH0gcmVwZWF0ZWRseSBkb2Vz IHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gb3JkZXI6CisKK0BlbnVtZXJhdGUKK0BpdGVtCitS ZWFkIGFuIGlucHV0IGJsb2NrLgorCitAaXRlbQorSWYgY29udmVydGluZyB2aWEgQHNhbXB7 c3luY30sIHBhZCBhcyBuZWVkZWQgdG8gbWVldCB0aGUgaW5wdXQgYmxvY2sgc2l6ZS4KK1Bh ZCB3aXRoIHNwYWNlcyBpZiBjb252ZXJ0aW5nIHZpYSBAc2FtcHtibG9ja30gb3IgQHNhbXB7 dW5ibG9ja30sIE5VTAorYnl0ZXMgb3RoZXJ3aXNlLgorCitAaXRlbQorSWYgQHNhbXB7YnM9 fSBpcyBnaXZlbiBhbmQgbm8gY29udmVyc2lvbiBtZW50aW9uZWQgaW4gc3RlcHMgKDQpIG9y ICg1KQoraXMgZ2l2ZW4sIG91dHB1dCB0aGUgZGF0YSBhcyBhIHNpbmdsZSBibG9jayBhbmQg c2tpcCBhbGwgcmVtYWluaW5nIHN0ZXBzLgorCitAaXRlbQorSWYgdGhlIEBzYW1we3N3YWJ9 IGNvbnZlcnNpb24gaXMgZ2l2ZW4sIHN3YXAgZWFjaCBwYWlyIG9mIGlucHV0IGJ5dGVzLgor SWYgdGhlIGlucHV0IGRhdGEgbGVuZ3RoIGlzIG9kZCwgcHJlc2VydmUgdGhlIGxhc3QgaW5w dXQgYnl0ZQorKHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgdG8gc3dhcCBpdCB3aXRoKS4KKwor QGl0ZW0KK0lmIGFueSBvZiB0aGUgY29udmVyc2lvbnMgQHNhbXB7c3dhYn0sIEBzYW1we2Js b2NrfSwgQHNhbXB7dW5ibG9ja30sCitAc2FtcHtsY2FzZX0sIEBzYW1we3VjYXNlfSwgQHNh bXB7YXNjaWl9LCBAc2FtcHtlYmNkaWN9IGFuZCBAc2FtcHtpYm19CithcmUgZ2l2ZW4sIGRv IHRoZXNlIGNvbnZlcnNpb25zLiAgVGhlc2UgY29udmVyc2lvbnMgb3BlcmF0ZQoraW5kZXBl bmRlbnRseSBvZiBpbnB1dCBibG9ja2luZywgYW5kIG1pZ2h0IGRlYWwgd2l0aCByZWNvcmRz IHRoYXQgc3BhbgorYmxvY2sgYm91bmRhcmllcy4KKworQGl0ZW0KK0FnZ3JlZ2F0ZSB0aGUg cmVzdWx0aW5nIGRhdGEgaW50byBvdXRwdXQgYmxvY2tzIG9mIHRoZSBzcGVjaWZpZWQgc2l6 ZSwKK2FuZCBvdXRwdXQgZWFjaCBvdXRwdXQgYmxvY2sgaW4gdHVybi4gIERvIG5vdCBwYWQg dGhlIGxhc3Qgb3V0cHV0IGJsb2NrOworaXQgY2FuIGJlIHNob3J0ZXIgdGhhbiB1c3VhbC4K K0BlbmQgZW51bWVyYXRlCisKK0Bjb21tYW5ke2RkfSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcg b3BlcmFuZHMsCiB3aG9zZSBzeW50YXggd2FzIGluc3BpcmVkIGJ5IHRoZSBERCAoZGF0YSBk ZWZpbml0aW9uKSBzdGF0ZW1lbnQgb2YKIE9TLzM2MCBKQ0wuCiAKQEAgLTkyMzMsOCArOTI2 OCw5IEBAIHVzZSBAdmFye2J5dGVzfSBhcyB0aGUgZml4ZWQgcmVjb3JkIGxlbmd0aC4KIEBv cGluZGV4IHNraXAKIEBvcGluZGV4IGlzZWVrCiBTa2lwIEB2YXJ7bn0gQHNhbXB7aWJzfS1i eXRlIGJsb2NrcyBpbiB0aGUgaW5wdXQgZmlsZSBiZWZvcmUgY29weWluZy4KLUlmIEBzYW1w e2lmbGFnPXNraXBfYnl0ZXN9IGlzIHNwZWNpZmllZCwgQHZhcntufSBpcyBpbnRlcnByZXRl ZAorV2l0aCBAc2FtcHtpZmxhZz1za2lwX2J5dGVzfSwgaW50ZXJwcmV0IEB2YXJ7bn0KIGFz IGEgYnl0ZSBjb3VudCByYXRoZXIgdGhhbiBhIGJsb2NrIGNvdW50LgorKFRoZSBAc2FtcHtp c2Vlaz19IHNwZWxsaW5nIGlzIGFuIGV4dGVuc2lvbiB0byBQT1NJWC4pCiAKIEBpdGVtIHNl ZWs9QHZhcntufQogQGl0ZW14IG9zZWVrPUB2YXJ7bn0KQEAgLTkyNDIsMjAgKzkyNzgsMjIg QEAgYXMgYSBieXRlIGNvdW50IHJhdGhlciB0aGFuIGEgYmxvY2sgY291bnQuCiBAb3BpbmRl eCBvc2VlawogU2tpcCBAdmFye259IEBzYW1we29ic30tYnl0ZSBibG9ja3MgaW4gdGhlIG91 dHB1dCBmaWxlIGJlZm9yZQogdHJ1bmNhdGluZyBvciBjb3B5aW5nLgotSWYgQHNhbXB7b2Zs YWc9c2Vla19ieXRlc30gaXMgc3BlY2lmaWVkLCBAdmFye259IGlzIGludGVycHJldGVkCitX aXRoIEBzYW1we29mbGFnPXNlZWtfYnl0ZXN9LCBpbnRlcnByZXQgQHZhcntufQogYXMgYSBi eXRlIGNvdW50IHJhdGhlciB0aGFuIGEgYmxvY2sgY291bnQuCisoVGhlIEBzYW1we29zZWVr PX0gc3BlbGxpbmcgaXMgYW4gZXh0ZW5zaW9uIHRvIFBPU0lYLikKIAogQGl0ZW0gY291bnQ9 QHZhcntufQogQG9waW5kZXggY291bnQKIENvcHkgQHZhcntufSBAc2FtcHtpYnN9LWJ5dGUg YmxvY2tzIGZyb20gdGhlIGlucHV0IGZpbGUsIGluc3RlYWQKIG9mIGV2ZXJ5dGhpbmcgdW50 aWwgdGhlIGVuZCBvZiB0aGUgZmlsZS4KLWlmIEBzYW1we2lmbGFnPWNvdW50X2J5dGVzfSBp cyBzcGVjaWZpZWQsIEB2YXJ7bn0gaXMgaW50ZXJwcmV0ZWQKK1dpdGggQHNhbXB7aWZsYWc9 Y291bnRfYnl0ZXN9LCBpbnRlcnByZXQgQHZhcntufQogYXMgYSBieXRlIGNvdW50IHJhdGhl ciB0aGFuIGEgYmxvY2sgY291bnQuCi1Ob3RlIGlmIHRoZSBpbnB1dCBtYXkgcmV0dXJuIHNo b3J0IHJlYWRzIGFzIGNvdWxkIGJlIHRoZSBjYXNlCitJZiBzaG9ydCByZWFkcyBvY2N1ciwg YXMgY291bGQgYmUgdGhlIGNhc2UKIHdoZW4gcmVhZGluZyBmcm9tIGEgcGlwZSBmb3IgZXhh bXBsZSwgQHNhbXB7aWZsYWc9ZnVsbGJsb2NrfQotd2lsbCBlbnN1cmUgdGhhdCBAc2FtcHtj b3VudD19IGNvcnJlc3BvbmRzIHRvIGNvbXBsZXRlIGlucHV0IGJsb2NrcwotcmF0aGVyIHRo YW4gdGhlIHRyYWRpdGlvbmFsIFBPU0lYIHNwZWNpZmllZCBiZWhhdmlvciBvZiBjb3VudGlu ZwotaW5wdXQgcmVhZCBvcGVyYXRpb25zLgorZW5zdXJlcyB0aGF0IEBzYW1we2NvdW50PX0g Y291bnRzIGNvbXBsZXRlIGlucHV0IGJsb2NrcworcmF0aGVyIHRoYW4gaW5wdXQgcmVhZCBv cGVyYXRpb25zLgorQXMgYW4gZXh0ZW5zaW9uIHRvIFBPU0lYLCBAc2FtcHtjb3VudD0wfSBj b3BpZXMgemVybyBibG9ja3MKK2luc3RlYWQgb2YgY29weWluZyBhbGwgYmxvY2tzLgogCiBA aXRlbSBzdGF0dXM9QHZhcntsZXZlbH0KIEBvcGluZGV4IHN0YXR1cwpAQCAtOTMwMSw2ICs5 MzM5LDggQEAgQW4gYWRkaXRpb25hbCBsaW5lIGxpa2UgQHNhbXB7MSB0cnVuY2F0ZWQgcmVj b3JkfSBvciBAc2FtcHsxMAogdHJ1bmNhdGVkIHJlY29yZHN9IGlzIG91dHB1dCBhZnRlciB0 aGUgQHNhbXB7cmVjb3JkcyBvdXR9IGxpbmUgaWYKIEBzYW1we2NvbnY9YmxvY2t9IHByb2Nl c3NpbmcgdHJ1bmNhdGVkIG9uZSBvciBtb3JlIGlucHV0IHJlY29yZHMuCiAKK1RoZSBAc2Ft cHtzdGF0dXM9fSBvcGVyYW5kIGlzIGEgR05VIGV4dGVuc2lvbiB0byBQT1NJWC4KKwogQGl0 ZW0gY29udj1AdmFye2NvbnZlcnNpb259WyxAdmFye2NvbnZlcnNpb259XUBkb3Rze30KIEBv cGluZGV4IGNvbnYKIENvbnZlcnQgdGhlIGZpbGUgYXMgc3BlY2lmaWVkIGJ5IHRoZSBAdmFy e2NvbnZlcnNpb259IGFyZ3VtZW50KHMpLgpAQCAtOTM0OCw2ICs5Mzg4LDggQEAgUmVtb3Zl IGFueSB0cmFpbGluZyBzcGFjZXMgaW4gZWFjaCBAc2FtcHtjYnN9LXNpemVkIGlucHV0IGJs b2NrLAogYW5kIGFwcGVuZCBhIG5ld2xpbmUuCiAKIFRoZSBAc2FtcHtibG9ja30gYW5kIEBz YW1we3VuYmxvY2t9IGNvbnZlcnNpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCitJZiB5 b3UgdXNlIGVpdGhlciBvZiB0aGVzZSBjb252ZXJzaW9ucywgeW91IHNob3VsZCBhbHNvIHVz ZSB0aGUKK0BzYW1we2Nicz19IG9wZXJhbmQuCiAKIEBpdGVtIGxjYXNlCiBAb3BpbmRleCBs Y2FzZUByeywgY29udmVydGluZyB0b30KQEAgLTkzNzMsMTIgKzk0MTUsMTIgQEAgU2ltaWxh cmx5LCB3aGVuIHRoZSBvdXRwdXQgaXMgYSBkZXZpY2UgcmF0aGVyIHRoYW4gYSBmaWxlLAog TlVMIGlucHV0IGJsb2NrcyBhcmUgbm90IGNvcGllZCwgYW5kIHRoZXJlZm9yZSB0aGlzIGNv bnZlcnNpb24KIGlzIG1vc3QgdXNlZnVsIHdpdGggdmlydHVhbCBvciBwcmUgemVyb2VkIGRl dmljZXMuCiAKK1RoZSBAc2FtcHtzcGFyc2V9IGNvbnZlcnNpb24gaXMgYSBHTlUgZXh0ZW5z aW9uIHRvIFBPU0lYLgorCiBAaXRlbSBzd2FiCiBAb3BpbmRleCBzd2FiIEByeyhieXRlLXN3 YXBwaW5nKX0KIEBjaW5kZXggYnl0ZS1zd2FwcGluZwotU3dhcCBldmVyeSBwYWlyIG9mIGlu cHV0IGJ5dGVzLiAgR05VIEBjb21tYW5ke2RkfSwgdW5saWtlIG90aGVycywgd29ya3MKLXdo ZW4gYW4gb2RkIG51bWJlciBvZiBieXRlcyBhcmUgcmVhZC0tLXRoZSBsYXN0IGJ5dGUgaXMg c2ltcGx5IGNvcGllZAotKHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgdG8gc3dhcCBpdCB3aXRo KS4KK1N3YXAgZXZlcnkgcGFpciBvZiBpbnB1dCBieXRlcy4KIAogQGl0ZW0gc3luYwogQG9w aW5kZXggc3luYyBAcnsocGFkZGluZyB3aXRoIEFTQ0lJIE5VTHMpfQpAQCAtOTQwMyw3ICs5 NDQ1LDggQEAgb3V0cHV0IGZpbGUgaXRzZWxmLgogQGNpbmRleCBjcmVhdGluZyBvdXRwdXQg ZmlsZSwgYXZvaWRpbmcKIERvIG5vdCBjcmVhdGUgdGhlIG91dHB1dCBmaWxlOyB0aGUgb3V0 cHV0IGZpbGUgbXVzdCBhbHJlYWR5IGV4aXN0LgogCi1UaGUgQHNhbXB7ZXhjbH0gYW5kIEBz YW1we25vY3JlYXR9IGNvbnZlcnNpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCitUaGUg QHNhbXB7ZXhjbH0gYW5kIEBzYW1we25vY3JlYXR9IGNvbnZlcnNpb25zIGFyZSBtdXR1YWxs eSBleGNsdXNpdmUsCithbmQgYXJlIEdOVSBleHRlbnNpb25zIHRvIFBPU0lYLgogCiBAaXRl bSBub3RydW5jCiBAb3BpbmRleCBub3RydW5jCkBAIC05NDIxLDYgKzk0NjQsNyBAQCBDb250 aW51ZSBhZnRlciByZWFkIGVycm9ycy4KIFN5bmNocm9uaXplIG91dHB1dCBkYXRhIGp1c3Qg YmVmb3JlIGZpbmlzaGluZywKIGV2ZW4gaWYgdGhlcmUgd2VyZSB3cml0ZSBlcnJvcnMuCiBU aGlzIGZvcmNlcyBhIHBoeXNpY2FsIHdyaXRlIG9mIG91dHB1dCBkYXRhLgorVGhpcyBjb252 ZXJzaW9uIGlzIGEgR05VIGV4dGVuc2lvbiB0byBQT1NJWC4KIAogQGl0ZW0gZnN5bmMKIEBv cGluZGV4IGZzeW5jCkBAIC05NDI4LDYgKzk0NzIsNyBAQCBUaGlzIGZvcmNlcyBhIHBoeXNp Y2FsIHdyaXRlIG9mIG91dHB1dCBkYXRhLgogU3luY2hyb25pemUgb3V0cHV0IGRhdGEgYW5k IG1ldGFkYXRhIGp1c3QgYmVmb3JlIGZpbmlzaGluZywKIGV2ZW4gaWYgdGhlcmUgd2VyZSB3 cml0ZSBlcnJvcnMuCiBUaGlzIGZvcmNlcyBhIHBoeXNpY2FsIHdyaXRlIG9mIG91dHB1dCBk YXRhIGFuZCBtZXRhZGF0YS4KK1RoaXMgY29udmVyc2lvbiBpcyBhIEdOVSBleHRlbnNpb24g dG8gUE9TSVguCiAKIEBlbmQgdGFibGUKIApAQCAtOTQ0MSw4ICs5NDg2LDcgQEAgYXJndW1l bnQocykuICAoTm8gc3BhY2VzIGFyb3VuZCBhbnkgY29tbWEocykuKQogQWNjZXNzIHRoZSBv dXRwdXQgZmlsZSB1c2luZyB0aGUgZmxhZ3Mgc3BlY2lmaWVkIGJ5IHRoZSBAdmFye2ZsYWd9 CiBhcmd1bWVudChzKS4gIChObyBzcGFjZXMgYXJvdW5kIGFueSBjb21tYShzKS4pCiAKLUhl cmUgYXJlIHRoZSBmbGFncy4gIE5vdCBldmVyeSBmbGFnIGlzIHN1cHBvcnRlZCBvbiBldmVy eSBvcGVyYXRpbmcKLXN5c3RlbS4KK0hlcmUgYXJlIHRoZSBmbGFncy4KIAogQHRhYmxlIEBz YW1wCiAKQEAgLTk2MDYsNyArOTY1MCw4IEBAIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5 IHdpdGggQGNvZGV7b2ZsYWd9LgogCiBAZW5kIHRhYmxlCiAKLVRoZXNlIGZsYWdzIGFyZSBu b3Qgc3VwcG9ydGVkIG9uIGFsbCBzeXN0ZW1zLCBhbmQgQHNhbXB7ZGR9IHJlamVjdHMKK1Ro ZXNlIGZsYWdzIGFyZSBhbGwgR05VIGV4dGVuc2lvbnMgdG8gUE9TSVguCitUaGV5IGFyZSBu b3Qgc3VwcG9ydGVkIG9uIGFsbCBzeXN0ZW1zLCBhbmQgQHNhbXB7ZGR9IHJlamVjdHMKIGF0 dGVtcHRzIHRvIHVzZSB0aGVtIHdoZW4gdGhleSBhcmUgbm90IHN1cHBvcnRlZC4gIFdoZW4g cmVhZGluZyBmcm9tCiBzdGFuZGFyZCBpbnB1dCBvciB3cml0aW5nIHRvIHN0YW5kYXJkIG91 dHB1dCwgdGhlIEBzYW1we25vZm9sbG93fSBhbmQKIEBzYW1we25vY3R0eX0gZmxhZ3Mgc2hv dWxkIG5vdCBiZSBzcGVjaWZpZWQsIGFuZCB0aGUgb3RoZXIgZmxhZ3MKQEAgLTk2MTUsMTEg Kzk2NjAsMjAgQEAgYWZmZWN0ZWQgZmlsZSBkZXNjcmlwdG9ycywgZXZlbiBhZnRlciBAY29t bWFuZHtkZH0gZXhpdHMuCiAKIEBlbmQgdGFibGUKIAorVGhlIGJlaGF2aW9yIG9mIEBjb21t YW5ke2RkfSBpcyB1bnNwZWNpZmllZCBpZiBvcGVyYW5kcyBvdGhlciB0aGFuCitAc2FtcHtj b252PX0sIEBzYW1we2lmbGFnPX0sIEBzYW1we29mbGFnPX0sIGFuZCBAc2FtcHtzdGF0dXM9 fSBhcmUKK3NwZWNpZmllZCBtb3JlIHRoYW4gb25jZS4KKwogQGNpbmRleCBtdWx0aXBsaWVy cyBhZnRlciBudW1iZXJzCiBUaGUgbnVtZXJpYy12YWx1ZWQgc3RyaW5ncyBhYm92ZSAoQHZh cntufSBhbmQgQHZhcntieXRlc30pCithcmUgdW5zaWduZWQgZGVjaW1hbCBpbnRlZ2VycyB0 aGF0CiBjYW4gYmUgZm9sbG93ZWQgYnkgYSBtdWx0aXBsaWVyOiBAc2FtcHtifT01MTIsIEBz YW1we2N9PTEsCiBAc2FtcHt3fT0yLCBAc2FtcHt4QHZhcnttfX09QHZhcnttfSwgb3IgYW55 IG9mIHRoZQogc3RhbmRhcmQgYmxvY2sgc2l6ZSBzdWZmaXhlcyBsaWtlIEBzYW1we2t9PTEw MjQgKEBweHJlZntCbG9jayBzaXplfSkuCitUaGVzZSBtdWx0aXBsaWVycyBhcmUgR05VIGV4 dGVuc2lvbnMgdG8gUE9TSVgsIGV4Y2VwdCB0aGF0CitQT1NJWCBhbGxvd3MgQHZhcntieXRl c30gdG8gYmUgZm9sbG93ZWQgYnkgQHNhbXB7a30sIEBzYW1we2J9LCBhbmQKK0BzYW1we3hA dmFye219fS4KK0Jsb2NrIHNpemVzIChpLmUuLCBzcGVjaWZpZWQgYnkgQHZhcntieXRlc30g c3RyaW5ncykgbXVzdCBiZSBub256ZXJvLgogCiBBbnkgYmxvY2sgc2l6ZSB5b3Ugc3BlY2lm eSB2aWEgQHNhbXB7YnM9fSwgQHNhbXB7aWJzPX0sIEBzYW1we29icz19LCBAc2FtcHtjYnM9 fQogc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UtLS12YWx1ZXMgbGFyZ2VyIHRoYW4gYSBmZXcg bWVnYWJ5dGVzCi0tIAoyLjMyLjAKCg== --------------9bGkJoLvy0N0Qluy27k2LMDn-- From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 24 08:18:20 2022 Received: (at 45648) by debbugs.gnu.org; 24 Feb 2022 13:18:21 +0000 Received: from localhost ([127.0.0.1]:47839 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nNE0i-0003EP-MS for submit@debbugs.gnu.org; Thu, 24 Feb 2022 08:18:20 -0500 Received: from mail-wr1-f45.google.com ([209.85.221.45]:38882) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nNE0h-0003EA-QR for 45648@debbugs.gnu.org; Thu, 24 Feb 2022 08:18:20 -0500 Received: by mail-wr1-f45.google.com with SMTP id v21so3001997wrv.5 for <45648@debbugs.gnu.org>; Thu, 24 Feb 2022 05:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=unsXIqTBe+q/LwCOxv9WXgdf696fAOgrSz/EQetc+R4=; b=J3thO2aUIAbMdUyG4K4jkSIpV/rH2CYtTvWSXRfpJcMmbrGceqsbD5e9uCRDL2evNj mwYLT2HuYTjTWRAk3FZhrr+ZXetHH9tZFtzMsTXFGCItPzjOKmPowj/wuiCpC8QtKhpc GFXi74OHX4mTafx/XnSb05lEWVSXHAKv6Kke0B+d2ufqGa7HSsZT/hnUAeGt8e8zq3No Xpb3LB/b9cVbIsjdnzvC8vGgN6ZjLWzKZeITz3h3GX4ZgX5fxVZEBigDXtiPWCdpfOFe z7hq3jeXxSZ3T3+VCKly0Bhvdv1/3KamPZbnAYPwBstucT+xW7TFS2yrn0w88vqUfhRp NLrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :subject:content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=unsXIqTBe+q/LwCOxv9WXgdf696fAOgrSz/EQetc+R4=; b=C3fyaxYy6RonMn0P3y0v+1iyMSwyg8DBesPENfmA8YTz6qwtCrrGFoxEsjY6EVXa4m GGUEk0L3zgsgu+g7wO1NUMYxp/crMo6kEh7b7HbAoKre3jZwuagox4/3txuf/+fZU9E7 /70/iv0j2pOX+6u3BCFTO7O71NdvNFJzVbLOhRsmu1HaEmnOsUpLjUw96CJfN9yH33XG RHoflguiA+c8DNKrxSYw2uwXpKOC29xONfLPEZsqMTDyXW5ynvzx/oBMYvnh8hWYcJ7V +HCPiDjGkqYLeaLyVAw5oM6kwmkMVn1x/iGFOJZ7Z2ydGDy1ioZOvtR5+TGnpg7CfaPs DkDw== X-Gm-Message-State: AOAM533Ynbcin9JhBLOVBUcSbZVCh3/JXjJG9dls1G1vmkcf2EIYtk38 u/GlFLQj5D90k1av6i0Pgc+lWMH/UeE41Q== X-Google-Smtp-Source: ABdhPJxK4quQfRODaPsVLfn+nL66owN39bwnUCePVYtK8zF7rvi+Gm7+1csuYoVG9LfmDV3pADC3Bg== X-Received: by 2002:adf:dd0e:0:b0:1ed:d3c2:6f23 with SMTP id a14-20020adfdd0e000000b001edd3c26f23mr2299612wrm.277.1645708693646; Thu, 24 Feb 2022 05:18:13 -0800 (PST) Received: from [192.168.1.9] (95-44-90-175-dynamic.agg2.lod.rsl-rtd.eircom.net. [95.44.90.175]) by smtp.googlemail.com with ESMTPSA id w4sm2698730wre.102.2022.02.24.05.18.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 24 Feb 2022 05:18:13 -0800 (PST) Message-ID: <850b9856-8838-3dc8-c029-068fb9be3378@draigBrady.com> Date: Thu, 24 Feb 2022 13:18:11 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Thunderbird/97.0 Subject: Re: bug#45648: `dd` seek/skip which way is up? Content-Language: en-US To: 45648@debbugs.gnu.org, eggert@cs.ucla.edu, bela.lubkin@gmail.com References: <5c7aa45d-ea25-7eed-5b3b-bc53565171f6@cs.ucla.edu> <2b7bacda-8163-5804-cc08-4eb476b2e891@cs.ucla.edu> <236820c4-1e7d-08f9-32e2-481f97af5bde@cs.ucla.edu> From: =?UTF-8?Q?P=c3=a1draig_Brady?= In-Reply-To: <236820c4-1e7d-08f9-32e2-481f97af5bde@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 45648 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) On 22/02/2022 17:12, Paul Eggert wrote: > On 1/4/21 20:08, Paul Eggert wrote: >> On 1/4/21 7:44 PM, Bela Lubkin wrote: >>> TLDR: *huge* existing presence of 'iseek' and 'oseek'; most OSes document >>> them as pure synonyms for 'skip' and 'seek'. >> >> Thanks for doing all that research. It's compelling, and I think your >> patch (or something like it) should go in. I'll wait for a bit to hear >> other opinions. > > After thinking about the patch a bit more, let's omit the part about > adding new conversions iseek_bytes etc., as I think there's a better way > to address that issue. I proposed something in . > > So instead of your patch, I installed the attached patches. The first > one adds the iseek and oseek operands that you suggested; the second one > clarifies dd documentation, as I found several things were confusing > when rereading it carefully. Something like these patches should appear > in the next coreutils release. +1 The aliases are useful. I always remembered it like skIp for Input, but that is awkward. As for the overlap in solaris with disabling reading, I think that would be better as a flag, like "seek_only", if deemed useful. thanks, Pádraig From unknown Wed Jun 18 23:14:47 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 25 Mar 2022 11:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator