diff --git a/MANIFEST b/MANIFEST
index 5a09c72e..985d1793 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -792,6 +792,7 @@ examples/loadables/csv.c f
examples/loadables/dsv.c f
examples/loadables/kv.c f
examples/loadables/cut.c f
+examples/loadables/ocut.c f
examples/loadables/logname.c f
examples/loadables/basename.c f
examples/loadables/dirname.c f
diff --git a/POSIX b/POSIX
index 20130133..a34084cf 100644
--- a/POSIX
+++ b/POSIX
@@ -362,14 +362,23 @@ The following list is what's changed when POSIX mode is in effect:
75. Bash removes an exited background process's status from the list
of such statuses after the ‘wait’ builtin returns it.
-There is other POSIX behavior that Bash does not implement by default
-even when in POSIX mode. Specifically:
+There is additional POSIX behavior that Bash does not implement by
+default even when in POSIX mode. Specifically:
- 1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
+ 1. POSIX requires that word splitting be byte-oriented. That is, each
+ _byte_ in the value of ‘IFS’ potentially splits a word, even if
+ that byte is part of a multibyte character in ‘IFS’ or part of
+ multibyte character in the word. Bash allows multibyte characters
+ in the value of ‘IFS’, treating a valid multibyte character as a
+ single delimiter, and will not split a valid multibyte character
+ even if one of the bytes composing that character appears in ‘IFS’.
+ This is POSIX interpretation 1560, further modified by issue 1924.
+
+ 2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
entries if ‘FCEDIT’ is unset, rather than defaulting directly to
‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset.
- 2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
+ 3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
for the ‘echo’ builtin to be fully conformant.
Bash can be configured to be POSIX-conformant by default, by specifying
diff --git a/doc/bash.info b/doc/bash.info
index c95e7dc5..48df32fc 100644
--- a/doc/bash.info
+++ b/doc/bash.info
@@ -1,9 +1,9 @@
-This is bash.info, produced by makeinfo version 7.1 from bashref.texi.
+This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 7 April 2025).
+Bash shell (version 5.3, 18 May 2025).
- This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
+ This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
Reference Manual’, for ‘Bash’, Version 5.3.
Copyright © 1988-2025 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 7 April 2025). The Bash home page is
+Bash shell (version 5.3, 18 May 2025). The Bash home page is
.
- This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
+ This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
Reference Manual’, for ‘Bash’, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -7990,14 +7990,23 @@ startup files.
75. Bash removes an exited background process's status from the list
of such statuses after the ‘wait’ builtin returns it.
- There is other POSIX behavior that Bash does not implement by default
-even when in POSIX mode. Specifically:
+ There is additional POSIX behavior that Bash does not implement by
+default even when in POSIX mode. Specifically:
- 1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
+ 1. POSIX requires that word splitting be byte-oriented. That is, each
+ _byte_ in the value of ‘IFS’ potentially splits a word, even if
+ that byte is part of a multibyte character in ‘IFS’ or part of
+ multibyte character in the word. Bash allows multibyte characters
+ in the value of ‘IFS’, treating a valid multibyte character as a
+ single delimiter, and will not split a valid multibyte character
+ even if one of the bytes composing that character appears in ‘IFS’.
+ This is POSIX interpretation 1560, further modified by issue 1924.
+
+ 2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
entries if ‘FCEDIT’ is unset, rather than defaulting directly to
‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset.
- 2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
+ 3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
for the ‘echo’ builtin to be fully conformant.
Bash can be configured to be POSIX-conformant by default, by
@@ -13600,141 +13609,140 @@ D.5 Concept Index
* yanking text: Readline Killing Commands.
(line 6)
-
Tag Table:
-Node: Top893
-Node: Introduction2826
-Node: What is Bash?3039
-Node: What is a shell?4172
-Node: Definitions6782
-Node: Basic Shell Features10109
-Node: Shell Syntax11333
-Node: Shell Operation12360
-Node: Quoting13651
-Node: Escape Character14989
-Node: Single Quotes15524
-Node: Double Quotes15873
-Node: ANSI-C Quoting17218
-Node: Locale Translation18612
-Node: Creating Internationalized Scripts20015
-Node: Comments24213
-Node: Shell Commands24980
-Node: Reserved Words25919
-Node: Simple Commands26784
-Node: Pipelines27446
-Node: Lists30702
-Node: Compound Commands32574
-Node: Looping Constructs33583
-Node: Conditional Constructs36132
-Node: Command Grouping51202
-Node: Coprocesses52694
-Node: GNU Parallel55380
-Node: Shell Functions56298
-Node: Shell Parameters64746
-Node: Positional Parameters69647
-Node: Special Parameters70737
-Node: Shell Expansions74198
-Node: Brace Expansion76387
-Node: Tilde Expansion79723
-Node: Shell Parameter Expansion82678
-Node: Command Substitution103321
-Node: Arithmetic Expansion106850
-Node: Process Substitution108026
-Node: Word Splitting109134
-Node: Filename Expansion111578
-Node: Pattern Matching114802
-Node: Quote Removal120525
-Node: Redirections120829
-Node: Executing Commands131092
-Node: Simple Command Expansion131759
-Node: Command Search and Execution133867
-Node: Command Execution Environment136311
-Node: Environment139759
-Node: Exit Status141662
-Node: Signals143720
-Node: Shell Scripts148649
-Node: Shell Builtin Commands151947
-Node: Bourne Shell Builtins154058
-Node: Bash Builtins180705
-Node: Modifying Shell Behavior217629
-Node: The Set Builtin217971
-Node: The Shopt Builtin229965
-Node: Special Builtins247017
-Node: Shell Variables248006
-Node: Bourne Shell Variables248440
-Node: Bash Variables250948
-Node: Bash Features290072
-Node: Invoking Bash291086
-Node: Bash Startup Files297670
-Node: Interactive Shells302912
-Node: What is an Interactive Shell?303320
-Node: Is this Shell Interactive?303982
-Node: Interactive Shell Behavior304806
-Node: Bash Conditional Expressions308567
-Node: Shell Arithmetic313984
-Node: Aliases317313
-Node: Arrays320447
-Node: The Directory Stack328035
-Node: Directory Stack Builtins328832
-Node: Controlling the Prompt333277
-Node: The Restricted Shell336162
-Node: Bash POSIX Mode339044
-Node: Shell Compatibility Mode357401
-Node: Job Control366408
-Node: Job Control Basics366865
-Node: Job Control Builtins373233
-Node: Job Control Variables379915
-Node: Command Line Editing381146
-Node: Introduction and Notation382849
-Node: Readline Interaction385201
-Node: Readline Bare Essentials386389
-Node: Readline Movement Commands388197
-Node: Readline Killing Commands389193
-Node: Readline Arguments391216
-Node: Searching392273
-Node: Readline Init File394516
-Node: Readline Init File Syntax395819
-Node: Conditional Init Constructs422644
-Node: Sample Init File427029
-Node: Bindable Readline Commands430149
-Node: Commands For Moving431687
-Node: Commands For History434151
-Node: Commands For Text439541
-Node: Commands For Killing443666
-Node: Numeric Arguments446454
-Node: Commands For Completion447606
-Node: Keyboard Macros453302
-Node: Miscellaneous Commands454003
-Node: Readline vi Mode460570
-Node: Programmable Completion461547
-Node: Programmable Completion Builtins470284
-Node: A Programmable Completion Example482021
-Node: Using History Interactively487366
-Node: Bash History Facilities488047
-Node: Bash History Builtins491782
-Node: History Interaction498253
-Node: Event Designators503203
-Node: Word Designators504781
-Node: Modifiers507173
-Node: Installing Bash509110
-Node: Basic Installation510226
-Node: Compilers and Options514102
-Node: Compiling For Multiple Architectures514852
-Node: Installation Names516605
-Node: Specifying the System Type518839
-Node: Sharing Defaults519585
-Node: Operation Controls520299
-Node: Optional Features521318
-Node: Reporting Bugs533698
-Node: Major Differences From The Bourne Shell535055
-Node: GNU Free Documentation License556481
-Node: Indexes581658
-Node: Builtin Index582109
-Node: Reserved Word Index589207
-Node: Variable Index591652
-Node: Function Index609065
-Node: Concept Index623060
+Node: Top891
+Node: Introduction2822
+Node: What is Bash?3035
+Node: What is a shell?4168
+Node: Definitions6778
+Node: Basic Shell Features10105
+Node: Shell Syntax11329
+Node: Shell Operation12356
+Node: Quoting13647
+Node: Escape Character14985
+Node: Single Quotes15520
+Node: Double Quotes15869
+Node: ANSI-C Quoting17214
+Node: Locale Translation18608
+Node: Creating Internationalized Scripts20011
+Node: Comments24209
+Node: Shell Commands24976
+Node: Reserved Words25915
+Node: Simple Commands26780
+Node: Pipelines27442
+Node: Lists30698
+Node: Compound Commands32570
+Node: Looping Constructs33579
+Node: Conditional Constructs36128
+Node: Command Grouping51198
+Node: Coprocesses52690
+Node: GNU Parallel55376
+Node: Shell Functions56294
+Node: Shell Parameters64742
+Node: Positional Parameters69643
+Node: Special Parameters70733
+Node: Shell Expansions74194
+Node: Brace Expansion76383
+Node: Tilde Expansion79719
+Node: Shell Parameter Expansion82674
+Node: Command Substitution103317
+Node: Arithmetic Expansion106846
+Node: Process Substitution108022
+Node: Word Splitting109130
+Node: Filename Expansion111574
+Node: Pattern Matching114798
+Node: Quote Removal120521
+Node: Redirections120825
+Node: Executing Commands131088
+Node: Simple Command Expansion131755
+Node: Command Search and Execution133863
+Node: Command Execution Environment136307
+Node: Environment139755
+Node: Exit Status141658
+Node: Signals143716
+Node: Shell Scripts148645
+Node: Shell Builtin Commands151943
+Node: Bourne Shell Builtins154054
+Node: Bash Builtins180701
+Node: Modifying Shell Behavior217625
+Node: The Set Builtin217967
+Node: The Shopt Builtin229961
+Node: Special Builtins247013
+Node: Shell Variables248002
+Node: Bourne Shell Variables248436
+Node: Bash Variables250944
+Node: Bash Features290068
+Node: Invoking Bash291082
+Node: Bash Startup Files297666
+Node: Interactive Shells302908
+Node: What is an Interactive Shell?303316
+Node: Is this Shell Interactive?303978
+Node: Interactive Shell Behavior304802
+Node: Bash Conditional Expressions308563
+Node: Shell Arithmetic313980
+Node: Aliases317309
+Node: Arrays320443
+Node: The Directory Stack328031
+Node: Directory Stack Builtins328828
+Node: Controlling the Prompt333273
+Node: The Restricted Shell336158
+Node: Bash POSIX Mode339040
+Node: Shell Compatibility Mode357986
+Node: Job Control366993
+Node: Job Control Basics367450
+Node: Job Control Builtins373818
+Node: Job Control Variables380500
+Node: Command Line Editing381731
+Node: Introduction and Notation383434
+Node: Readline Interaction385786
+Node: Readline Bare Essentials386974
+Node: Readline Movement Commands388782
+Node: Readline Killing Commands389778
+Node: Readline Arguments391801
+Node: Searching392858
+Node: Readline Init File395101
+Node: Readline Init File Syntax396404
+Node: Conditional Init Constructs423229
+Node: Sample Init File427614
+Node: Bindable Readline Commands430734
+Node: Commands For Moving432272
+Node: Commands For History434736
+Node: Commands For Text440126
+Node: Commands For Killing444251
+Node: Numeric Arguments447039
+Node: Commands For Completion448191
+Node: Keyboard Macros453887
+Node: Miscellaneous Commands454588
+Node: Readline vi Mode461155
+Node: Programmable Completion462132
+Node: Programmable Completion Builtins470869
+Node: A Programmable Completion Example482606
+Node: Using History Interactively487951
+Node: Bash History Facilities488632
+Node: Bash History Builtins492367
+Node: History Interaction498838
+Node: Event Designators503788
+Node: Word Designators505366
+Node: Modifiers507758
+Node: Installing Bash509695
+Node: Basic Installation510811
+Node: Compilers and Options514687
+Node: Compiling For Multiple Architectures515437
+Node: Installation Names517190
+Node: Specifying the System Type519424
+Node: Sharing Defaults520170
+Node: Operation Controls520884
+Node: Optional Features521903
+Node: Reporting Bugs534283
+Node: Major Differences From The Bourne Shell535640
+Node: GNU Free Documentation License557066
+Node: Indexes582243
+Node: Builtin Index582694
+Node: Reserved Word Index589792
+Node: Variable Index592237
+Node: Function Index609650
+Node: Concept Index623645
End Tag Table
diff --git a/doc/bash.pdf b/doc/bash.pdf
index d9c80d93..215fb4a8 100644
Binary files a/doc/bash.pdf and b/doc/bash.pdf differ
diff --git a/doc/bash.ps b/doc/bash.ps
index bc281c88..4f5e8e5d 100644
--- a/doc/bash.ps
+++ b/doc/bash.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.23.0
-%%CreationDate: Tue Apr 22 10:00:28 2025
+%%CreationDate: Fri May 30 08:52:48 2025
%%DocumentNeededResources: font Times-Italic
%%+ font Times-Roman
%%+ font Times-Bold
@@ -1469,18 +1469,18 @@ F1 .523(are each e)3.023 F -.25(va)-.25 G .523(luated as arith-).25 F
F .55(alue is usu-)-.25 F .595(ally an inte)108 424.8 R .595
(ger constant, b)-.15 F .595(ut may be an e)-.2 F 3.096(xpression. When)
-.15 F .596(\231+=\232 is applied to an array v)3.096 F .596
-(ariable using com-)-.25 F .262(pound assignment \(see)108 436.8 R F2
-(Arrays)2.761 E F1(belo)2.761 E .261(w\), the v)-.25 F(ariable')-.25 E
-2.761(sv)-.55 G .261(alue is not unset \(as it is when using and ne)
--3.011 F 2.761(wv)-.25 G(alues)-3.011 E .437
-(are appended to the array be)108 448.8 R .438
-(ginning at one greater than the array')-.15 F 2.938(sm)-.55 G .438
-(aximum inde)-2.938 F 2.938(x\()-.15 G .438(for inde)-2.938 F -.15(xe)
--.15 G 2.938(da).15 G .438(rrays\) or)-2.938 F .123
-(added as additional k)108 460.8 R -.15(ey)-.1 G.15 E .123
-(alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E
-5.123(.W)-.65 G .122(hen applied to a string-v)-5.123 F .122(alued v)
--.25 F(ariable,)-.25 E F0(value)2.622 E F1(is e)108 472.8 Q
+(ariable using com-)-.25 F .537(pound assignment \(see)108 436.8 R F2
+(Arrays)3.036 E F1(belo)3.036 E .536(w\), the v)-.25 F(ariable')-.25 E
+3.036(sv)-.55 G .536
+(alue is not unset \(as it is when using \231=\232\), and ne)-3.286 F(w)
+-.25 E -.25(va)108 448.8 S .431(lues are appended to the array be).25 F
+.431(ginning at one greater than the array')-.15 F 2.931(sm)-.55 G .431
+(aximum inde)-2.931 F 2.932(x\()-.15 G .432(for inde)-2.932 F -.15(xe)
+-.15 G 2.932(da).15 G -.2(r-)-2.932 G .532
+(rays\) or added as additional k)108 460.8 R -.15(ey)-.1 G.15 E
+.532(alue pairs in an associati)-.25 F .832 -.15(ve a)-.25 H(rray).15 E
+5.532(.W)-.65 G .532(hen applied to a string-v)-5.532 F .531(alued v)
+-.25 F(ari-)-.25 E(able,)108 472.8 Q F0(value)2.5 E F1(is e)2.5 E
(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G
(alue.)-2.75 E 3.382(Av)108 489.6 S .882(ariable can be assigned the)
-3.632 F F0(namer)3.382 E(ef)-.37 E F1(attrib)3.382 E .882
diff --git a/doc/bashref.dvi b/doc/bashref.dvi
index bc0a1fba..b810243e 100644
Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ
diff --git a/doc/bashref.html b/doc/bashref.html
index 2cc31506..2d8f30b8 100644
--- a/doc/bashref.html
+++ b/doc/bashref.html
@@ -1,12 +1,12 @@
-
+