changeset 32002:939e5d952675

Use upper/lower in preference to toupper/tolower to match Matlab. * mappers.cc (Fupper, Flower): Functions renamed from toupper/tolower and now use "DEFUN" macro. Change DEFALIAS to correctly map toXXX to XXX. Update all BIST tests. * func.txi, strings.txi: Update manual. * cellfun.cc, utils.cc, Map.m, idivide.m, integral.m, integral2.m, integral3.m, interp1.m, quad2d.m, quadgk.m, rng.m, griddata.m, griddatan.m, listdlg.m, movegui.m, __file_filter__.m, uigetfile.m, uisetfont.m, __unimplemented__.m, colormap.m, imformats.m, imshow.m, __imread__.m, __imwrite__.m, rgbplot.m, javaclasspath.m, genvarname.m, edit.m, inputParser.m, license.m, open.m, parseparams.m, unpack.m, validateattributes.m, __all_opts__.m, get_description.m, get_forge_pkg.m, camorbit.m, daspect.m, datetick.m, pbaspect.m, __tickangle__.m, rticks.m, thetaticks.m, xticks.m, yticks.m, zticks.m, camlight.m, colorbar.m, isocaps.m, isosurface.m, __add_datasource__.m, __patch__.m, __scatter__.m, reducepatch.m, smooth3.m, surfl.m, hgload.m, hold.m, openfig.m, __add_default_menu__.m, __print_parse_opts__.m, refreshdata.m, saveas.m, struct2hdl.m, movfun.m, stft.m, eigs.m, ichol.m, ilu.m, gammainc.m, gallery.m, corrcoef.m, iqr.m, normalize.m, base2dec.m, index.m, regexptranslate.m, strsplit.m, datestr.m, mk-sparse-tst.sh: Replace toupper/tolower with upper/lower in Octave code.
author Rik <rik@octave.org>
date Wed, 12 Apr 2023 15:34:43 -0700
parents 51b503f5ca3a
children 81de46cd091b
files doc/interpreter/func.txi doc/interpreter/strings.txi libinterp/corefcn/cellfun.cc libinterp/corefcn/mappers.cc libinterp/corefcn/utils.cc scripts/+containers/Map.m scripts/general/idivide.m scripts/general/integral.m scripts/general/integral2.m scripts/general/integral3.m scripts/general/interp1.m scripts/general/quad2d.m scripts/general/quadgk.m scripts/general/rng.m scripts/geometry/griddata.m scripts/geometry/griddatan.m scripts/gui/listdlg.m scripts/gui/movegui.m scripts/gui/private/__file_filter__.m scripts/gui/uigetfile.m scripts/gui/uisetfont.m scripts/help/__unimplemented__.m scripts/image/colormap.m scripts/image/imformats.m scripts/image/imshow.m scripts/image/private/__imread__.m scripts/image/private/__imwrite__.m scripts/image/rgbplot.m scripts/java/javaclasspath.m scripts/legacy/genvarname.m scripts/miscellaneous/edit.m scripts/miscellaneous/inputParser.m scripts/miscellaneous/license.m scripts/miscellaneous/open.m scripts/miscellaneous/parseparams.m scripts/miscellaneous/unpack.m scripts/miscellaneous/validateattributes.m scripts/optimization/__all_opts__.m scripts/pkg/private/get_description.m scripts/pkg/private/get_forge_pkg.m scripts/plot/appearance/camorbit.m scripts/plot/appearance/daspect.m scripts/plot/appearance/datetick.m scripts/plot/appearance/pbaspect.m scripts/plot/appearance/private/__tickangle__.m scripts/plot/appearance/rticks.m scripts/plot/appearance/thetaticks.m scripts/plot/appearance/xticks.m scripts/plot/appearance/yticks.m scripts/plot/appearance/zticks.m scripts/plot/draw/camlight.m scripts/plot/draw/colorbar.m scripts/plot/draw/isocaps.m scripts/plot/draw/isosurface.m scripts/plot/draw/private/__add_datasource__.m scripts/plot/draw/private/__patch__.m scripts/plot/draw/private/__scatter__.m scripts/plot/draw/reducepatch.m scripts/plot/draw/smooth3.m scripts/plot/draw/surfl.m scripts/plot/util/hgload.m scripts/plot/util/hold.m scripts/plot/util/openfig.m scripts/plot/util/private/__add_default_menu__.m scripts/plot/util/private/__print_parse_opts__.m scripts/plot/util/refreshdata.m scripts/plot/util/saveas.m scripts/plot/util/struct2hdl.m scripts/signal/movfun.m scripts/signal/stft.m scripts/sparse/eigs.m scripts/sparse/ichol.m scripts/sparse/ilu.m scripts/specfun/gammainc.m scripts/special-matrix/gallery.m scripts/statistics/corrcoef.m scripts/statistics/iqr.m scripts/statistics/normalize.m scripts/strings/base2dec.m scripts/strings/index.m scripts/strings/regexptranslate.m scripts/strings/strsplit.m scripts/time/datestr.m test/mk-sparse-tst.sh
diffstat 84 files changed, 179 insertions(+), 179 deletions(-) [+]
line wrap: on
line diff
--- a/doc/interpreter/func.txi	Wed Apr 12 14:40:52 2023 -0700
+++ b/doc/interpreter/func.txi	Wed Apr 12 15:34:43 2023 -0700
@@ -1955,7 +1955,7 @@
 
 @example
 @group
-toupper lower_case_arg
+upper lower_case_arg
    @result{} ans = LOWER_CASE_ARG
 @end group
 @end example
@@ -1967,9 +1967,9 @@
 @example
 @group
 strvar = "hello world";
-toupper strvar
+upper strvar
    @result{} ans = STRVAR
-toupper (strvar)
+upper (strvar)
    @result{} ans = HELLO WORLD
 @end group
 @end example
--- a/doc/interpreter/strings.txi	Wed Apr 12 14:40:52 2023 -0700
+++ b/doc/interpreter/strings.txi	Wed Apr 12 15:34:43 2023 -0700
@@ -254,9 +254,9 @@
 
 The following functions are useful to perform common String operations.
 
-@DOCSTRING(tolower)
+@DOCSTRING(lower)
 
-@DOCSTRING(toupper)
+@DOCSTRING(upper)
 
 @DOCSTRING(deblank)
 
--- a/libinterp/corefcn/cellfun.cc	Wed Apr 12 14:40:52 2023 -0700
+++ b/libinterp/corefcn/cellfun.cc	Wed Apr 12 15:34:43 2023 -0700
@@ -358,7 +358,7 @@
 
 @example
 @group
-cellfun ("tolower", @{"Foo", "Bar", "FooBar"@},
+cellfun ("lower", @{"Foo", "Bar", "FooBar"@},
          "UniformOutput", false)
 @result{} @{"foo", "bar", "foobar"@}
 @end group
--- a/libinterp/corefcn/mappers.cc	Wed Apr 12 14:40:52 2023 -0700
+++ b/libinterp/corefcn/mappers.cc	Wed Apr 12 15:34:43 2023 -0700
@@ -2163,10 +2163,10 @@
 %!error tanh (1, 2)
 */
 
-DEFUNX ("tolower", Ftolower, args, ,
-        doc: /* -*- texinfo -*-
-@deftypefn  {} {@var{y} =} tolower (@var{s})
-@deftypefnx {} {@var{y} =} lower (@var{s})
+DEFUN (lower, args, ,
+       doc: /* -*- texinfo -*-
+@deftypefn  {} {@var{y} =} lower (@var{s})
+@deftypefnx {} {@var{y} =} tolower (@var{s})
 Return a copy of the string or cell string @var{s}, with each uppercase
 character replaced by the corresponding lowercase one; non-alphabetic
 characters are left unchanged.
@@ -2175,15 +2175,15 @@
 
 @example
 @group
-tolower ("MiXeD cAsE 123")
-      @result{} "mixed case 123"
+lower ("MiXeD cAsE 123")
+    @result{} "mixed case 123"
 @end group
 @end example
 
-Programming Note: @code{lower} is an alias for @code{tolower} and either name
+Programming Note: @code{tolower} is an alias for @code{lower} and either name
 can be used in Octave.
 
-@seealso{toupper}
+@seealso{upper}
 @end deftypefn */)
 {
   if (args.length () != 1)
@@ -2192,24 +2192,24 @@
   return ovl (args(0).xtolower ());
 }
 
-DEFALIAS (lower, tolower);
+DEFALIAS (tolower, lower);
 
 /*
-%!assert (tolower ("OCTAVE"), "octave")
-%!assert (tolower ("123OCTave! _&"), "123octave! _&")
-%!assert (tolower ({"ABC", "DEF", {"GHI", {"JKL"}}}),
+%!assert (lower ("OCTAVE"), "octave")
+%!assert (lower ("123OCTave! _&"), "123octave! _&")
+%!assert (lower ({"ABC", "DEF", {"GHI", {"JKL"}}}),
 %!        {"abc", "def", {"ghi", {"jkl"}}})
-%!assert (tolower (["ABC"; "DEF"]), ["abc"; "def"])
-%!assert (tolower ({["ABC"; "DEF"]}), {["abc";"def"]})
-%!assert (tolower (["ABCÄÖÜSS"; "abcäöüß"]),
+%!assert (lower (["ABC"; "DEF"]), ["abc"; "def"])
+%!assert (lower ({["ABC"; "DEF"]}), {["abc";"def"]})
+%!assert (lower (["ABCÄÖÜSS"; "abcäöüß"]),
 %!        ["abcäöüss"; "abcäöüß"])
-%!assert (tolower (repmat ("ÄÖÜ", 2, 1, 3)), repmat ("äöü", 2, 1, 3))
-%!assert (tolower (68), 68)
-%!assert (tolower ({[68, 68; 68, 68]}), {[68, 68; 68, 68]})
-%!assert (tolower (68i), 68i)
-%!assert (tolower ({[68i, 68; 68, 68i]}), {[68i, 68; 68, 68i]})
-%!assert (tolower (single (68i)), single (68i))
-%!assert (tolower ({single([68i, 68; 68, 68i])}), {single([68i, 68; 68, 68i])})
+%!assert (lower (repmat ("ÄÖÜ", 2, 1, 3)), repmat ("äöü", 2, 1, 3))
+%!assert (lower (68), 68)
+%!assert (lower ({[68, 68; 68, 68]}), {[68, 68; 68, 68]})
+%!assert (lower (68i), 68i)
+%!assert (lower ({[68i, 68; 68, 68i]}), {[68i, 68; 68, 68i]})
+%!assert (lower (single (68i)), single (68i))
+%!assert (lower ({single([68i, 68; 68, 68i])}), {single([68i, 68; 68, 68i])})
 
 %!test
 %! classes = {@char, @double, @single, ...
@@ -2217,28 +2217,28 @@
 %!            @uint8, @uint16, @uint32, @uint64};
 %! for i = 1:numel (classes)
 %!   cls = classes{i};
-%!   assert (class (tolower (cls (97))), class (cls (97)));
-%!   assert (class (tolower (cls ([98, 99]))), class (cls ([98, 99])));
+%!   assert (class (lower (cls (97))), class (cls (97)));
+%!   assert (class (lower (cls ([98, 99]))), class (cls ([98, 99])));
 %! endfor
 %!test
 %! a(3,3,3,3) = "D";
-%! assert (tolower (a)(3,3,3,3), "d");
+%! assert (lower (a)(3,3,3,3), "d");
 
 %!test
 %! charset = char (0:127);
 %! result = charset;
 %! result (double ("A":"Z") + 1) = result (double ("a":"z") + 1);
-%! assert (tolower (charset), result);
+%! assert (lower (charset), result);
 
-%!error <Invalid call to tolower> lower ()
-%!error <Invalid call to tolower> tolower ()
-%!error tolower (1, 2)
+%!error <Invalid call to lower> lower ()
+%!error <Invalid call to lower> tolower ()
+%!error lower (1, 2)
 */
 
-DEFUNX ("toupper", Ftoupper, args, ,
-        doc: /* -*- texinfo -*-
-@deftypefn  {} {@var{y} =} toupper (@var{s})
-@deftypefnx {} {@var{y} =} upper (@var{s})
+DEFUN (upper, args, ,
+       doc: /* -*- texinfo -*-
+@deftypefn  {} {@var{y} =} upper (@var{s})
+@deftypefnx {} {@var{y} =} toupper (@var{s})
 Return a copy of the string or cell string @var{s}, with each lowercase
 character replaced by the corresponding uppercase one; non-alphabetic
 characters are left unchanged.
@@ -2247,15 +2247,15 @@
 
 @example
 @group
-toupper ("MiXeD cAsE 123")
-      @result{} "MIXED CASE 123"
+upper ("MiXeD cAsE 123")
+    @result{} "MIXED CASE 123"
 @end group
 @end example
 
-Programming Note: @code{upper} is an alias for @code{toupper} and either name
+Programming Note: @code{toupper} is an alias for @code{upper} and either name
 can be used in Octave.
 
-@seealso{tolower}
+@seealso{lower}
 @end deftypefn */)
 {
   if (args.length () != 1)
@@ -2264,25 +2264,25 @@
   return ovl (args(0).xtoupper ());
 }
 
-DEFALIAS (upper, toupper);
+DEFALIAS (toupper, upper);
 
 /*
-%!assert (toupper ("octave"), "OCTAVE")
-%!assert (toupper ("123OCTave! _&"), "123OCTAVE! _&")
-%!assert (toupper ({"abc", "def", {"ghi", {"jkl"}}}),
+%!assert (upper ("octave"), "OCTAVE")
+%!assert (upper ("123OCTave! _&"), "123OCTAVE! _&")
+%!assert (upper ({"abc", "def", {"ghi", {"jkl"}}}),
 %!        {"ABC", "DEF", {"GHI", {"JKL"}}})
-%!assert (toupper (["abc"; "def"]), ["ABC"; "DEF"])
-%!assert (toupper ({["abc"; "def"]}), {["ABC";"DEF"]})
-%!assert (toupper (["ABCÄÖÜSS"; "abcäöüß"]),
+%!assert (upper (["abc"; "def"]), ["ABC"; "DEF"])
+%!assert (upper ({["abc"; "def"]}), {["ABC";"DEF"]})
+%!assert (upper (["ABCÄÖÜSS"; "abcäöüß"]),
 %!        ["ABCÄÖÜSS"; "ABCÄÖÜSS"])
-%!assert (toupper (repmat ("äöü", 2, 1, 3)), repmat ("ÄÖÜ", 2, 1, 3))
-%!assert (toupper (100), 100)
-%!assert (toupper ({[100, 100; 100, 100]}), {[100, 100; 100, 100]})
-%!assert (toupper (100i), 100i)
-%!assert (toupper ({[100i, 100; 100, 100i]}), {[100i, 100; 100, 100i]})
-%!assert (toupper (single (100i)), single (100i))
-%!assert (toupper ({single([100i, 100; 100, 100i])}),
-%!                 {single([100i, 100; 100, 100i])})
+%!assert (upper (repmat ("äöü", 2, 1, 3)), repmat ("ÄÖÜ", 2, 1, 3))
+%!assert (upper (100), 100)
+%!assert (upper ({[100, 100; 100, 100]}), {[100, 100; 100, 100]})
+%!assert (upper (100i), 100i)
+%!assert (upper ({[100i, 100; 100, 100i]}), {[100i, 100; 100, 100i]})
+%!assert (upper (single (100i)), single (100i))
+%!assert (upper ({single([100i, 100; 100, 100i])}),
+%!        {single([100i, 100; 100, 100i])})
 
 %!test
 %! classes = {@char, @double, @single, ...
@@ -2290,21 +2290,21 @@
 %!            @uint8, @uint16, @uint32, @uint64};
 %! for i = 1:numel (classes)
 %!   cls = classes{i};
-%!   assert (class (toupper (cls (97))), class (cls (97)));
-%!   assert (class (toupper (cls ([98, 99]))), class (cls ([98, 99])));
+%!   assert (class (upper (cls (97))), class (cls (97)));
+%!   assert (class (upper (cls ([98, 99]))), class (cls ([98, 99])));
 %! endfor
 %!test
 %! a(3,3,3,3) = "d";
-%! assert (toupper (a)(3,3,3,3), "D");
+%! assert (upper (a)(3,3,3,3), "D");
 %!test
 %! charset = char (0:127);
 %! result = charset;
 %! result (double  ("a":"z") + 1) = result (double  ("A":"Z") + 1);
-%! assert (toupper (charset), result);
+%! assert (upper (charset), result);
 
-%!error <Invalid call to toupper> toupper ()
-%!error <Invalid call to toupper> upper ()
-%!error toupper (1, 2)
+%!error <Invalid call to upper> upper ()
+%!error <Invalid call to upper> toupper ()
+%!error upper (1, 2)
 */
 
 DEFALIAS (gammaln, lgamma);
--- a/libinterp/corefcn/utils.cc	Wed Apr 12 14:40:52 2023 -0700
+++ b/libinterp/corefcn/utils.cc	Wed Apr 12 15:34:43 2023 -0700
@@ -391,7 +391,7 @@
 %!testif ; ! ispc ()
 %! assert (is_same_file ("~", tilde_expand ("~")));
 %!testif ; ispc ()
-%! assert (is_same_file (tolower (tempdir ()), toupper (tempdir ())), true);
+%! assert (is_same_file (lower (tempdir ()), upper (tempdir ())), true);
 %!assert (is_same_file ({pwd(), ".", tempdir()}, canonicalize_file_name (".")),
 %!        [true, true, false])
 
--- a/scripts/+containers/Map.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/+containers/Map.m	Wed Apr 12 15:34:43 2023 -0700
@@ -217,7 +217,7 @@
         this.map = cell2struct (vals, keys);
       elseif (nargin == 4)
         for i = [1, 3]
-          switch (tolower (varargin{i}))
+          switch (lower (varargin{i}))
             case "keytype"
               this.KeyType = varargin{i+1};
             case "valuetype"
--- a/scripts/general/idivide.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/idivide.m	Wed Apr 12 15:34:43 2023 -0700
@@ -81,7 +81,7 @@
   if (nargin == 2)
     op = "fix";
   else
-    op = tolower (op);
+    op = lower (op);
   endif
 
   if (! isinteger (A) && ! isinteger (B))
--- a/scripts/general/integral.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/integral.m	Wed Apr 12 15:34:43 2023 -0700
@@ -171,7 +171,7 @@
         error ("integral: property PROP must be a string");
       endif
 
-      switch (tolower (prop))
+      switch (lower (prop))
         case "reltol"
           reltol = varargin{idx++};
         case "abstol"
--- a/scripts/general/integral2.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/integral2.m	Wed Apr 12 15:34:43 2023 -0700
@@ -168,7 +168,7 @@
       error ("integral2: property PROP must be a string");
     endif
 
-    switch (tolower (prop))
+    switch (lower (prop))
       case "abstol"
         abstol = varargin{idx++};
         if (! (isnumeric (abstol) && isscalar (abstol) && abstol >= 0))
@@ -182,7 +182,7 @@
         endif
 
       case "method"
-        method = tolower (varargin{idx++});
+        method = lower (varargin{idx++});
         if (! any (strcmp (method, {"auto", "iterated", "tiled"})))
           error ("integral2 : unrecognized method '%s'", method);
         endif
--- a/scripts/general/integral3.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/integral3.m	Wed Apr 12 15:34:43 2023 -0700
@@ -179,7 +179,7 @@
       error ("integral3: property PROP must be a string");
     endif
 
-    switch (tolower (prop))
+    switch (lower (prop))
       case "abstol"
         abstol = varargin{idx++};
         if (! (isnumeric (abstol) && isscalar (abstol) && abstol >= 0))
@@ -193,7 +193,7 @@
         endif
 
       case "method"
-        method = tolower (varargin{idx++});
+        method = lower (varargin{idx++});
         if (! any (strcmp (method, {"auto", "iterated", "tiled"})))
           error ("integral3 : unrecognized method '%s'", method);
         endif
--- a/scripts/general/interp1.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/interp1.m	Wed Apr 12 15:34:43 2023 -0700
@@ -133,7 +133,7 @@
     for i_arg = 1:length (varargin)
       arg = varargin{i_arg};
       if (ischar (arg))
-        arg = tolower (arg);
+        arg = lower (arg);
         switch (arg)
           case "extrap"
             extrap = "extrap";
--- a/scripts/general/quad2d.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/quad2d.m	Wed Apr 12 15:34:43 2023 -0700
@@ -180,7 +180,7 @@
       error ("quad2d: property PROP must be a string");
     endif
 
-    switch (tolower (prop))
+    switch (lower (prop))
       case "abstol"
         abstol = varargin{idx++};
         if (! (isnumeric (abstol) && isscalar (abstol) && abstol >= 0))
--- a/scripts/general/quadgk.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/quadgk.m	Wed Apr 12 15:34:43 2023 -0700
@@ -203,7 +203,7 @@
           error ("quadgk: property PROP must be a string");
         endif
         prop = varargin{idx++};
-        switch (tolower (prop))
+        switch (lower (prop))
           case "reltol"
             reltol = varargin{idx++};
           case "abstol"
--- a/scripts/general/rng.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/general/rng.m	Wed Apr 12 15:34:43 2023 -0700
@@ -173,7 +173,7 @@
     error ("rng: GENERATOR must be a string");
   endif
 
-  gen = tolower (char (val));
+  gen = lower (char (val));
   if (any (strcmp (gen, {"simdtwister", "combrecursive", "philox", "threefry", "multfibonacci", "v4"})))
     error ('rng: random number generator "%s" is not available in Octave', gen);
   elseif (! any (strcmp (gen, {"twister", "v5uniform", "v5normal"})))
--- a/scripts/geometry/griddata.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/geometry/griddata.m	Wed Apr 12 15:34:43 2023 -0700
@@ -131,7 +131,7 @@
       elseif (! ischar (method))
         error ("griddata: METHOD must be a string");
       else
-        method = tolower (method);
+        method = lower (method);
       endif
 
       if (any (strcmp (method, {"linear", "nearest", "v4"})))
--- a/scripts/geometry/griddatan.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/geometry/griddatan.m	Wed Apr 12 15:34:43 2023 -0700
@@ -106,7 +106,7 @@
     elseif (! ischar (method))
       error ("griddatan: METHOD must be a string");
     else
-      method = tolower (method);
+      method = lower (method);
     endif
 
     if (strcmp (method, "linear") || strcmp (method, "nearest"))
--- a/scripts/gui/listdlg.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/gui/listdlg.m	Wed Apr 12 15:34:43 2023 -0700
@@ -115,7 +115,7 @@
     if (strcmpi (varargin{i}, "ListString"))
       listcell = varargin{i+1};
     elseif (strcmpi (varargin{i}, "SelectionMode"))
-      selmode = tolower (varargin{i+1});
+      selmode = lower (varargin{i+1});
     elseif (strcmpi (varargin{i}, "ListSize"))
       listsize = varargin{i+1};
     elseif (strcmpi (varargin{i}, "InitialValue"))
--- a/scripts/gui/movegui.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/gui/movegui.m	Wed Apr 12 15:34:43 2023 -0700
@@ -159,7 +159,7 @@
     fpos(1) = ifelse (pos(1) >= 0, pos(1), pos(1) + x(3));
     fpos(2) = ifelse (pos(2) >= 0, pos(2), pos(2) + y(3));
   elseif (ischar (pos))
-    switch (tolower (pos))
+    switch (lower (pos))
       case "north"
         fpos(1:2) = [x(2), y(3)];
       case "south"
--- a/scripts/gui/private/__file_filter__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/gui/private/__file_filter__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -94,7 +94,7 @@
   if (isempty (name))
     extlist = ostrsplit (filterext, ";");
     extlist = strrep (extlist, "*.", "");
-    extlist = toupper (extlist);
+    extlist = upper (extlist);
     extlist(end+1, :) = repmat ({","}, 1, length (extlist));
     extlist = strcat (extlist{:});
     extlist = extlist(1:end-1);
--- a/scripts/gui/uigetfile.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/gui/uigetfile.m	Wed Apr 12 15:34:43 2023 -0700
@@ -173,7 +173,7 @@
         if (! ischar (val))
           error ('uigetfile: MultiSelect value must be a string ("on"/"off")');
         endif
-        outargs{4} = tolower (val);
+        outargs{4} = lower (val);
       else
         error ("uigetfile: unknown argument '%s'", prop);
       endif
--- a/scripts/gui/uisetfont.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/gui/uisetfont.m	Wed Apr 12 15:34:43 2023 -0700
@@ -110,7 +110,7 @@
   ## Populate fontstruct
   persistent defstruct = [];
   if (isempty (defstruct))
-    factory_fields = strcat ("factorytext", tolower (fontfields));
+    factory_fields = strcat ("factorytext", lower (fontfields));
     values = get (0, factory_fields);
     defstruct = struct ([fontfields; values]{:});
   endif
--- a/scripts/help/__unimplemented__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/help/__unimplemented__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -548,7 +548,7 @@
                  fcn, name);
 
   [~, status] = pkg ("describe", name);
-  switch (tolower (status{1}))
+  switch (lower (status{1}))
     case "loaded",
       for i = 1:length (classes)
         cls = classes{i};
--- a/scripts/image/colormap.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/colormap.m	Wed Apr 12 15:34:43 2023 -0700
@@ -106,7 +106,7 @@
   if (nargin == 1)
     map = varargin{1};
     if (ischar (map))
-      map = tolower (map);
+      map = lower (map);
       if (strcmp (map, "default"))
         map = viridis (64);
       else
--- a/scripts/image/imformats.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/imformats.m	Wed Apr 12 15:34:43 2023 -0700
@@ -89,7 +89,7 @@
       formats = arg1;
 
     elseif (ischar (arg1))
-      switch (tolower (arg1))
+      switch (lower (arg1))
         case "add",
           if (! isstruct (arg2))
             error ("imformats: FORMAT to %s must be a structure", arg1);
--- a/scripts/image/imshow.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/imshow.m	Wed Apr 12 15:34:43 2023 -0700
@@ -134,7 +134,7 @@
         error ("imshow: argument number %d is invalid", narg);
       endif
     elseif (ischar (arg))
-      switch (tolower (arg))
+      switch (lower (arg))
         case "border"
           warning ("imshow: border argument is not implemented");
           narg += 1;
--- a/scripts/image/private/__imread__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/private/__imread__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -91,7 +91,7 @@
   options.region = {1:1:info.rows, 1:1:info.columns};
 
   for idx = offset:2:(numel (varargin) - offset + 1)
-    switch (tolower (varargin{idx}))
+    switch (lower (varargin{idx}))
 
       case {"frames", "index"}
         ## Do nothing.  This option was already processed before the loop.
--- a/scripts/image/private/__imwrite__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/private/__imwrite__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -57,7 +57,7 @@
 
   for idx = 1:2:numel (param_list)
 
-    switch (tolower (param_list{idx}))
+    switch (lower (param_list{idx}))
 
       case "alpha"
         options.alpha = param_list{idx+1};
@@ -80,7 +80,7 @@
           error ("imwrite: value for %s option must be a string",
                  param_list{idx});
         endif
-        options.compression = tolower (options.compression);
+        options.compression = lower (options.compression);
         if (! any (strcmp (options.compression, {"none", "bzip", "fax3", ...
                                                  "fax4", "jpeg", "lzw", ...
                                                  "rle", "deflate"})))
@@ -115,7 +115,7 @@
         elseif (! iscell (options.disposalmethod))
           options.disposalmethod = {options.disposalmethod};
         endif
-        options.disposalmethod = tolower (options.disposalmethod);
+        options.disposalmethod = lower (options.disposalmethod);
         matches = ismember (options.disposalmethod,
                             {"donotspecify", "leaveinplace", ...
                              "restorebg", "restoreprevious"});
@@ -172,7 +172,7 @@
           error ('imwrite: value for %s option must be "append" or "overwrite"',
                  param_list{idx});
         endif
-        options.writemode = tolower (options.writemode);
+        options.writemode = lower (options.writemode);
 
       otherwise
         error ("imwrite: invalid PARAMETER '%s'", param_list{idx});
--- a/scripts/image/rgbplot.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/image/rgbplot.m	Wed Apr 12 15:34:43 2023 -0700
@@ -62,7 +62,7 @@
     error ("rgbplot: STYLE must be a string");
   endif
 
-  switch (tolower (style))
+  switch (lower (style))
     case "profile"
       x = 1:rows (cmap);
       htmp = plot (x,cmap(:,1),"r", x,cmap(:,2),"g", x,cmap(:,3),"b");
--- a/scripts/java/javaclasspath.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/java/javaclasspath.m	Wed Apr 12 15:34:43 2023 -0700
@@ -81,7 +81,7 @@
     if (! nargin)
       what = "-all";
     endif
-    switch (tolower (what))
+    switch (lower (what))
       case "-dynamic", disp_path_list ("DYNAMIC", dynamic_path_list);
       case "-static",  disp_path_list ("STATIC", static_path_list);
       case "-all"
@@ -100,7 +100,7 @@
       path1 = cellstr (dynamic_path_list);
       path2 = cellstr (static_path_list);
     else
-      switch (tolower (what))
+      switch (lower (what))
         case "-all",     path1 = cellstr ([static_path_list,dynamic_path_list]);
         case "-dynamic", path1 = cellstr (dynamic_path_list);
         case "-static",  path1 = cellstr (static_path_list);
--- a/scripts/legacy/genvarname.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/legacy/genvarname.m	Wed Apr 12 15:34:43 2023 -0700
@@ -149,7 +149,7 @@
     str{i}(! (isalnum (str{i}) | str{i} == "_")) = "_";
     ## do not use keywords
     if (iskeyword (str{i}))
-      firstcharacter = toupper (str{i}(1));
+      firstcharacter = upper (str{i}(1));
       str{i} = ["x", firstcharacter, str{i}(2:end)];
     endif
     ## The variable cannot be empty
--- a/scripts/miscellaneous/edit.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/edit.m	Wed Apr 12 15:34:43 2023 -0700
@@ -168,7 +168,7 @@
     ## so first check for the various states
     statevar = varargin{1};
     stateval = varargin{2};
-    switch (toupper (statevar))
+    switch (upper (statevar))
       case "EDITOR"
         error ("Octave:deprecated-function",
                "The EDITOR option of edit has been removed.  Use EDITOR() directly.");
@@ -204,8 +204,8 @@
         FUNCTION.EDITINPLACE = stateval;
         return;
       case "GET"
-        if (isfield (FUNCTION, toupper (stateval)))
-          retval = FUNCTION.(toupper (stateval));
+        if (isfield (FUNCTION, upper (stateval)))
+          retval = FUNCTION.(upper (stateval));
         else
           retval = FUNCTION;
         endif
@@ -419,7 +419,7 @@
     author = ["Author: " FUNCTION.AUTHOR " " FUNCTION.EMAIL];
 
     ## Fill in the header.
-    uclicense = toupper (FUNCTION.LICENSE);
+    uclicense = upper (FUNCTION.LICENSE);
     switch (uclicense)
       case "GPL"
         head = cstrcat (copyright, "\n\n", "\
--- a/scripts/miscellaneous/inputParser.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/inputParser.m	Wed Apr 12 15:34:43 2023 -0700
@@ -455,7 +455,7 @@
           else
             this.error (sprintf (["failed validation of %s\n", ...
                                   "Validation function: %s"],
-                                 toupper (opt.name), disp (opt.val)));
+                                 upper (opt.name), disp (opt.val)));
           endif
         endif
         this.Results.(opt.name) = in;
@@ -491,7 +491,7 @@
         if (this.is_argname ("Parameter", name))
           if (vidx++ > pnargin)
             this.error (sprintf ("no matching value for option '%s'",
-                                 toupper (name)));
+                                 upper (name)));
           endif
           this.validate_arg (this.last_name,
                              this.Parameter.(this.last_name).val,
@@ -503,7 +503,7 @@
             this.Unmatched.(name) = varargin{vidx};
           else
             this.error (sprintf ("argument '%s' is not a valid parameter",
-                                 toupper (name)));
+                                 upper (name)));
           endif
         endif
       endwhile
@@ -573,7 +573,7 @@
       end_try_catch
       if (! ok)
         this.error (sprintf ("failed validation of %s. %s",
-                             toupper (name), err));
+                             upper (name), err));
       endif
       this.Results.(name) = in;
 
--- a/scripts/miscellaneous/license.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/license.m	Wed Apr 12 15:34:43 2023 -0700
@@ -77,7 +77,7 @@
 
   [features, loaded] = get_all_features ();
 
-  switch (tolower (cmd))
+  switch (lower (cmd))
     case "inuse"
       features = features(loaded);
 
@@ -99,7 +99,7 @@
         ## We ignore the toggle argument because... what's the point?  We
         ## don't need a license management system on Octave.  This function
         ## will return true, even if anyone tries to disable a license.
-        switch (tolower (toggle))
+        switch (lower (toggle))
           case "enable"   # do nothing
           case "disable"  # do nothing
           otherwise       error ("license: TOGGLE must be enable or disable");
--- a/scripts/miscellaneous/open.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/open.m	Wed Apr 12 15:34:43 2023 -0700
@@ -91,9 +91,9 @@
   [~, fname, ext] = fileparts (file);
 
   if (! isempty (ext)
-      && any (exist (["open" tolower(ext(2:end))]) == [2 3 5 103]))
+      && any (exist (["open" lower(ext(2:end))]) == [2 3 5 103]))
     try
-      openfcn = ["open" tolower(ext(2:end))];
+      openfcn = ["open" lower(ext(2:end))];
       if (nargout > 0)
         output = feval (openfcn, file);
       else
--- a/scripts/miscellaneous/parseparams.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/parseparams.m	Wed Apr 12 15:34:43 2023 -0700
@@ -85,7 +85,7 @@
     if (! size_equal (names, defaults))
       error ("parseparams: needs odd number of arguments");
     endif
-    [names, sidx] = sort (toupper (names));
+    [names, sidx] = sort (upper (names));
 
     varargout = defaults;
     if (i)
@@ -95,7 +95,7 @@
       if (! size_equal (pnames, values) || ! all (strs(i:2:end)))
         error_as_caller ("options must be given as name-value pairs");
       endif
-      idx = lookup (names, toupper (pnames), "m");
+      idx = lookup (names, upper (pnames), "m");
       if (! all (idx))
         error_as_caller ("unrecognized option: %s", pnames{find (idx == 0, 1)});
       else
--- a/scripts/miscellaneous/unpack.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/unpack.m	Wed Apr 12 15:34:43 2023 -0700
@@ -241,7 +241,7 @@
     error ("unpack: %s: not a directory", dir);
   endif
 
-  if (isfield (commandlist, tolower (nodotext)))
+  if (isfield (commandlist, lower (nodotext)))
     [commandv, commandq, parsefcn, move] = deal (commandlist.(nodotext){:});
     origdir = pwd ();
     if (move)
--- a/scripts/miscellaneous/validateattributes.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/miscellaneous/validateattributes.m	Wed Apr 12 15:34:43 2023 -0700
@@ -259,7 +259,7 @@
     ## FIXME: once we use this in Octave core, it might be worthy to find
     ## which attributes are checked more often, and place them in that
     ## order inside the switch block.
-    switch (tolower (attr{idx++}))
+    switch (lower (attr{idx++}))
       case "2d",
         problem = ndims (A) != 2;
         err_id = "Octave:expected-2d";
--- a/scripts/optimization/__all_opts__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/optimization/__all_opts__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -63,7 +63,7 @@
       end_try_catch
     endfor
     names = unique (names);
-    [lnames, idx] = unique (tolower (names));
+    [lnames, idx] = unique (lower (names));
     if (length (lnames) < length (names))
       ## This is bad.
       error ("__all_opts__: duplicate options with inconsistent case");
--- a/scripts/pkg/private/get_description.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/pkg/private/get_description.m	Wed Apr 12 15:34:43 2023 -0700
@@ -54,7 +54,7 @@
         warning ("pkg: skipping invalid line in DESCRIPTION file");
       else
         colon = colon(1);
-        keyword = tolower (strtrim (line(1:colon-1)));
+        keyword = lower (strtrim (line(1:colon-1)));
         value = strtrim (line (colon+1:end));
         if (length (value) == 0)
             fclose (fid);
@@ -91,7 +91,7 @@
   else
     desc.depends = "";
   endif
-  desc.name = tolower (desc.name);
+  desc.name = lower (desc.name);
 
 endfunction
 
@@ -101,7 +101,7 @@
 ##   package, version, operator
 function deps_cell = fix_depends (depends)
 
-  deps = strtrim (ostrsplit (tolower (depends), ","));
+  deps = strtrim (ostrsplit (lower (depends), ","));
   deps_cell = cell (1, length (deps));
   dep_pat = ...
   '\s*(?<name>[-\w]+)\s*(\(\s*(?<op>[<>=]+)\s*(?<ver>\d+\.\d+(\.\d+)*)\s*\))*\s*';
@@ -113,7 +113,7 @@
     ## Is the dependency specified
     ## in the correct format?
     if (! isempty (start))
-      package = tolower (strtrim (nm.name));
+      package = lower (strtrim (nm.name));
       ## Does the dependency specify a version
       ## Example: package(>= version).
       if (! isempty (nm.ver))
@@ -128,7 +128,7 @@
         ## If no version is specified for the dependency
         ## we say that the version should be greater than
         ## or equal to "0.0.0".
-        package = tolower (strtrim (dep));
+        package = lower (strtrim (dep));
         operator = ">=";
         nm.ver  = "0.0.0";
       endif
--- a/scripts/pkg/private/get_forge_pkg.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/pkg/private/get_forge_pkg.m	Wed Apr 12 15:34:43 2023 -0700
@@ -40,7 +40,7 @@
     error ("get_forge_pkg: invalid package NAME: %s", name);
   endif
 
-  name = tolower (name);
+  name = lower (name);
 
   ## Try to download package's index page.
   [html, succ] = urlread (sprintf ("https://packages.octave.org/%s/index.html", ...
@@ -81,10 +81,10 @@
       len1 = length (name);
       len2 = length (x);
       if (len1 <= len2)
-        d = sum (abs (tolower (name(1:len1)) - tolower (x(1:len1)))) ...
+        d = sum (abs (lower (name(1:len1)) - lower (x(1:len1)))) ...
             + (len2 - len1)*23;
       else
-        d = sum (abs (tolower (name(1:len2)) - tolower (x(1:len2)))) ...
+        d = sum (abs (lower (name(1:len2)) - lower (x(1:len2)))) ...
             + (len1 - len2)*23;
       endif
 
--- a/scripts/plot/appearance/camorbit.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/camorbit.m	Wed Apr 12 15:34:43 2023 -0700
@@ -138,7 +138,7 @@
   endif
 
   if (ischar (dir))
-    switch (tolower (dir))
+    switch (lower (dir))
       case "x"
         dir = [1 0 0];
       case "y"
--- a/scripts/plot/appearance/daspect.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/daspect.m	Wed Apr 12 15:34:43 2023 -0700
@@ -82,7 +82,7 @@
         error ("daspect: DATA_ASPECT_RATIO must be a 2 or 3 element vector");
       endif
     elseif (ischar (arg))
-      arg = tolower (arg);
+      arg = lower (arg);
       switch (arg)
         case "auto"
           set (hax, "dataaspectratiomode", "auto");
--- a/scripts/plot/appearance/datetick.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/datetick.m	Wed Apr 12 15:34:43 2023 -0700
@@ -133,7 +133,7 @@
   if (nargin != 0)
     arg = varargin{1};
     if (ischar (arg) && any (strcmpi (arg, {"x", "y", "z"})))
-      ax = tolower (arg);
+      ax = lower (arg);
       if (nargin > 1)
         form = varargin{2};
         varargin(1:2) = [];
--- a/scripts/plot/appearance/pbaspect.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/pbaspect.m	Wed Apr 12 15:34:43 2023 -0700
@@ -83,7 +83,7 @@
         error ("pbaspect: PLOT_BOX_ASPECT_RATIO must be a 2 or 3 element vector");
       endif
     elseif (ischar (arg))
-      arg = tolower (arg);
+      arg = lower (arg);
       switch (arg)
         case "auto"
           set (hax, "plotboxaspectratiomode", "auto");
--- a/scripts/plot/appearance/private/__tickangle__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/private/__tickangle__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -31,7 +31,7 @@
 
 function retval = __tickangle__ (caller, hax, angle)
 
-  ax = tolower (caller(1));
+  ax = lower (caller(1));
   switch (nargin)
     case 1
       retval = get (gca (), [ax, "ticklabelrotation"]);
--- a/scripts/plot/appearance/rticks.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/rticks.m	Wed Apr 12 15:34:43 2023 -0700
@@ -92,7 +92,7 @@
     error ("rticks: MODE is not yet implemented for the rtick property");
 
     ## FIXME: Enable mode args if/when they are available in polar/polarplot
-    ## arg = tolower (arg);
+    ## arg = lower (arg);
     ## switch (arg)
     ##   case "mode"
     ##     tickval = get (hax, "rtickmode");
--- a/scripts/plot/appearance/thetaticks.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/thetaticks.m	Wed Apr 12 15:34:43 2023 -0700
@@ -96,7 +96,7 @@
     error ("thetaticks: MODE is not yet implemented for the ttick property");
 
     ## FIXME: Enable mode args if/when they are available in polar/polarplot
-    ##    arg = tolower (arg);
+    ##    arg = lower (arg);
     ## switch (arg)
     ##   case "mode"
     ##     tickval = get (hax, "ttickmode");
--- a/scripts/plot/appearance/xticks.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/xticks.m	Wed Apr 12 15:34:43 2023 -0700
@@ -94,7 +94,7 @@
     set (hax, "xtick", arg);
 
   elseif (ischar (arg))
-    arg = tolower (arg);
+    arg = lower (arg);
     switch (arg)
       case "mode"
         tickval = get (hax, "xtickmode");
--- a/scripts/plot/appearance/yticks.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/yticks.m	Wed Apr 12 15:34:43 2023 -0700
@@ -96,7 +96,7 @@
     endif
 
   elseif (ischar (arg))
-    arg = tolower (arg);
+    arg = lower (arg);
     switch (arg)
       case "mode"
         tickval = get (hax, "ytickmode");
--- a/scripts/plot/appearance/zticks.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/appearance/zticks.m	Wed Apr 12 15:34:43 2023 -0700
@@ -94,7 +94,7 @@
     set (hax, "ztick", arg);
 
   elseif (ischar (arg))
-    arg = tolower (arg);
+    arg = lower (arg);
     switch (arg)
       case "mode"
         tickval = get (hax, "ztickmode");
--- a/scripts/plot/draw/camlight.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/camlight.m	Wed Apr 12 15:34:43 2023 -0700
@@ -168,7 +168,7 @@
   endif
 
   if (! isempty (where))
-    switch (tolower (where))
+    switch (lower (where))
       case "left"
         az = -30;
         el = 30;
--- a/scripts/plot/draw/colorbar.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/colorbar.m	Wed Apr 12 15:34:43 2023 -0700
@@ -117,19 +117,19 @@
       error ("colorbar: expected string argument at position %d", i-1);
     endif
 
-    switch (tolower (arg))
+    switch (lower (arg))
       case {"north", "south", "east", "west", ...
             "northoutside", "southoutside", "eastoutside", "westoutside"}
         if (i <= nargin)
           error ("colorbar: LOC specification must occur as final argument");
         endif
-        loc = tolower (arg);
+        loc = lower (arg);
 
       case "location"
         if (i > nargin)
           error ('colorbar: missing value after "location"');
         endif
-        loc = tolower (varargin{i++});
+        loc = lower (varargin{i++});
 
       case {"delete", "hide", "off"}
         delete_cbar = true;
--- a/scripts/plot/draw/isocaps.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/isocaps.m	Wed Apr 12 15:34:43 2023 -0700
@@ -124,7 +124,7 @@
   ## select type of cap (above or below iso value)
   data_min = min ([v(:); isoval]);
   data_max = max ([v(:); isoval]);
-  switch (tolower (which_caps))
+  switch (lower (which_caps))
     case {"a", "above"}
       pad_val = data_min - 1;
 
--- a/scripts/plot/draw/isosurface.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/isosurface.m	Wed Apr 12 15:34:43 2023 -0700
@@ -245,7 +245,7 @@
     if (! ischar (varargin{i_arg}) || i_arg < 1)
       break;  # no string arguments at end, exit checking
     endif
-    switch (tolower (varargin{i_arg}))
+    switch (lower (varargin{i_arg}))
       case {"v", "verbose"}
         verbose = true;
         num_string_inputs++;
--- a/scripts/plot/draw/private/__add_datasource__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/private/__add_datasource__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -44,7 +44,7 @@
     arg = varargin{++i};
     if (i != numel (varargin) && ischar (arg)
         && length (arg) > 9 && strcmpi (arg(end-9:end), "datasource"))
-      arg = tolower (arg);
+      arg = lower (arg);
       val = varargin{++i};
       if (ischar (val))
         set (h, arg, val);
--- a/scripts/plot/draw/private/__patch__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/private/__patch__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -162,7 +162,7 @@
     elseif (iscolorspec (c))
       ## Color specification is a string
       args{7} = "facecolor";
-      args{8} = tolower (c);
+      args{8} = lower (c);
       args{9} = "cdata";
       args{10} = [];
     elseif (! isempty (c))
--- a/scripts/plot/draw/private/__scatter__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/private/__scatter__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -87,7 +87,7 @@
       c = c(:);
     endif
   elseif (firstnonnumeric == istart && ischar (varargin{istart})
-          && any (tolower (varargin{istart}(1)) == "ymcrgbwk"))
+          && any (lower (varargin{istart}(1)) == "ymcrgbwk"))
     [linespec, valid] = __pltopt__ (fcn, varargin{istart}, false);
     if (valid)
       c = varargin{istart};
--- a/scripts/plot/draw/reducepatch.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/reducepatch.m	Wed Apr 12 15:34:43 2023 -0700
@@ -155,7 +155,7 @@
     if (! ischar (arg{1}))
       break;  # no string arguments at end, exit checking
     endif
-    switch (tolower (arg{1}))
+    switch (lower (arg{1}))
       case {"f", "fast"}
         fast = true;
         num_string_inputs += 1;
--- a/scripts/plot/draw/smooth3.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/smooth3.m	Wed Apr 12 15:34:43 2023 -0700
@@ -117,7 +117,7 @@
             "of positive odd integers"]);
   endif
 
-  switch (tolower (method))
+  switch (lower (method))
     case {"b", "box"}
       conv_kernel = ones (sz) / prod (sz);
 
--- a/scripts/plot/draw/surfl.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/draw/surfl.m	Wed Apr 12 15:34:43 2023 -0700
@@ -97,7 +97,7 @@
   ## Check for lighting type.
   use_cdata = true;
   if (ischar (varargin{end}))
-    switch (tolower (varargin{end}))
+    switch (lower (varargin{end}))
       case "light"
         use_cdata = false;
       case "cdata"
--- a/scripts/plot/util/hgload.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/hgload.m	Wed Apr 12 15:34:43 2023 -0700
@@ -88,7 +88,7 @@
     for i = 1:numel (hg)
       fn_old = fieldnames (hg(i).properties);
       for j = 1:numel (fn_new)
-        idx = ismember (tolower (fn_old), tolower (fn_new{j}));
+        idx = ismember (lower (fn_old), lower (fn_new{j}));
         if (any (idx))
           if (calc_old_prop)
             old_prop{i}.(fn_new{j}) = hg(i).properties.(fn_old{idx});
--- a/scripts/plot/util/hold.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/hold.m	Wed Apr 12 15:34:43 2023 -0700
@@ -80,7 +80,7 @@
     axes_str = ifelse (have_axes_arg, "specified", "current");
     printf ("hold is now %s for %s axes\n", state_str, axes_str);
   elseif (nargs == 1)
-    state = tolower (varargin{1});
+    state = lower (varargin{1});
     switch (state)
       case "off"
         turn_hold_off = true;
--- a/scripts/plot/util/openfig.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/openfig.m	Wed Apr 12 15:34:43 2023 -0700
@@ -85,7 +85,7 @@
     if (! ischar (varargin{i}))
       error ("openfig: input argument %d must be a string", i+1);
     endif
-    switch (tolower (varargin{i}))
+    switch (lower (varargin{i}))
       case "reuse"
         copies = false;
       case "new"
--- a/scripts/plot/util/private/__add_default_menu__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/private/__add_default_menu__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -227,7 +227,7 @@
             "*.tiff", "TIFF Image"};
   ## Reorder filters to have current first
   [~, ~, ext] = fileparts (def);
-  idx = strcmp (filter(:,1), ["*" tolower(ext)]);
+  idx = strcmp (filter(:,1), ["*" lower(ext)]);
   filter = [filter(idx,:); filter(! idx,:)];
 
   [filename, filedir, filteridx] = uiputfile (filter, "Save Figure", def);
--- a/scripts/plot/util/private/__print_parse_opts__.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/private/__print_parse_opts__.m	Wed Apr 12 15:34:43 2023 -0700
@@ -155,7 +155,7 @@
           arg_st.debug_file = arg(8:end);
         endif
       elseif (length (arg) > 2 && arg(1:2) == "-d")
-        arg_st.devopt = tolower (arg(3:end));
+        arg_st.devopt = lower (arg(3:end));
       elseif (length (arg) > 2 && arg(1:2) == "-P")
         arg_st.printer = arg;
       elseif (strncmp (arg, "-EPSTOOL:", 9))
@@ -236,7 +236,7 @@
     elseif (dot == 0)
       arg_st.devopt = "psc";
     else
-      arg_st.devopt = tolower (arg_st.name(dot+1:end));
+      arg_st.devopt = lower (arg_st.name(dot+1:end));
     endif
   endif
 
--- a/scripts/plot/util/refreshdata.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/refreshdata.m	Wed Apr 12 15:34:43 2023 -0700
@@ -79,7 +79,7 @@
           || ! any (strcmpi (workspace, {"base", "caller"})))
         error ('refreshdata: WORKSPACE must be "base" or "caller"');
       endif
-      workspace = tolower (workspace);
+      workspace = lower (workspace);
     endif
   endif
 
--- a/scripts/plot/util/saveas.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/saveas.m	Wed Apr 12 15:34:43 2023 -0700
@@ -127,7 +127,7 @@
     endif
   endif
 
-  fmt = tolower (fmt);
+  fmt = lower (fmt);
 
   if (any (strcmp (fmt, {"ofig", "fig"})))
     savefig (fig, filename);
--- a/scripts/plot/util/struct2hdl.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/plot/util/struct2hdl.m	Wed Apr 12 15:34:43 2023 -0700
@@ -106,7 +106,7 @@
 
   ## Use lowercase for all properties
   s.properties = cell2struct (struct2cell (s.properties), ...
-                              tolower (fieldnames (s.properties)));
+                              lower (fieldnames (s.properties)));
 
   ## Place the "*mode" properties at the end to avoid having the updaters
   ## change the mode to "manual" when the value is "auto".
--- a/scripts/signal/movfun.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/signal/movfun.m	Wed Apr 12 15:34:43 2023 -0700
@@ -237,7 +237,7 @@
     bcfcn = @replaceval_bc;
     bcfcn (true, bc);  # initialize replaceval function with value
   else
-    switch (tolower (bc))
+    switch (lower (bc))
       case "shrink"
         bcfcn = @shrink_bc;
 
--- a/scripts/signal/stft.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/signal/stft.m	Wed Apr 12 15:34:43 2023 -0700
@@ -71,7 +71,7 @@
   endif
 
   if (ischar (win_type))
-    switch (tolower (win_type))
+    switch (lower (win_type))
       case "hanning"   , win_type = 1;
       case "hamming"   , win_type = 2;
       case "rectangle" , win_type = 3;
--- a/scripts/sparse/eigs.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/sparse/eigs.m	Wed Apr 12 15:34:43 2023 -0700
@@ -275,7 +275,7 @@
       if (nargin > 2 + offset)
         arg = varargin{3+offset};
         if (ischar (arg))
-          sigma = tolower (arg);
+          sigma = lower (arg);
         elseif (isnumeric (arg) && isscalar (arg))
           sigma = arg;
         elseif (isfield (arg, "p"))
--- a/scripts/sparse/ichol.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/sparse/ichol.m	Wed Apr 12 15:34:43 2023 -0700
@@ -182,7 +182,7 @@
   if (! isfield (opts, "type"))
     opts.type = "nofill";  # set default
   else
-    type = tolower (getfield (opts, "type"));
+    type = lower (getfield (opts, "type"));
     if (! strcmp (type, "nofill") && ! strcmp (type, "ict"))
       error ('ichol: TYPE must be "nofill" or "ict"');
     endif
@@ -202,7 +202,7 @@
   if (! isfield (opts, "michol"))
     opts.michol = "off";   # set default
   else
-    michol = tolower (getfield (opts, "michol"));
+    michol = lower (getfield (opts, "michol"));
     if (! strcmp (michol, "off") && ! strcmp (michol, "on"))
       error ('ichol: MICHOL must be "on" or "off"');
     endif
@@ -221,7 +221,7 @@
   if (! isfield (opts, "shape"))
     opts.shape = "lower";  # set default
   else
-    shape = tolower (getfield (opts, "shape"));
+    shape = lower (getfield (opts, "shape"));
     if (! strcmp (shape, "lower") && ! strcmp (shape, "upper"))
       error ('ichol: SHAPE must be "lower" or "upper"');
     endif
--- a/scripts/sparse/ilu.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/sparse/ilu.m	Wed Apr 12 15:34:43 2023 -0700
@@ -190,7 +190,7 @@
   if (! isfield (opts, "type"))
     opts.type = "nofill";  # set default
   else
-    type = tolower (getfield (opts, "type"));
+    type = lower (getfield (opts, "type"));
     if (! any (strcmp (type, {"nofill", "crout", "ilutp"})))
       error ("ilu: invalid TYPE specified");
     endif
@@ -209,7 +209,7 @@
   if (! isfield (opts, "milu"))
     opts.milu = "off";     # set default
   else
-    milu = tolower (getfield (opts, "milu"));
+    milu = lower (getfield (opts, "milu"));
     if (! any (strcmp (milu, {"off", "col", "row"})))
       error ('ilu: MILU must be one of "off", "col", or "row"');
     endif
--- a/scripts/specfun/gammainc.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/specfun/gammainc.m	Wed Apr 12 15:34:43 2023 -0700
@@ -121,7 +121,7 @@
       && ! any (strcmpi (tail, {"lower","upper","scaledlower","scaledupper"})))
     error ("gammainc: invalid value for TAIL");
   endif
-  tail = tolower (tail);
+  tail = lower (tail);
 
   ## If any of the arguments is single then the output should be as well.
   if (strcmp (class (x), "single") || strcmp (class (a), "single"))
--- a/scripts/special-matrix/gallery.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/special-matrix/gallery.m	Wed Apr 12 15:34:43 2023 -0700
@@ -437,7 +437,7 @@
     n_out = 1;
   endif
 
-  switch (tolower (name))
+  switch (lower (name))
     case "binomial"
       error ("gallery: matrix %s not implemented", name);
     case "cauchy"      , [varargout{1:n_out}] = cauchy      (varargin{:});
--- a/scripts/statistics/corrcoef.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/statistics/corrcoef.m	Wed Apr 12 15:34:43 2023 -0700
@@ -103,7 +103,7 @@
       endif
       value = varargin{i+1};
 
-      switch (tolower (parameter))
+      switch (lower (parameter))
         case "alpha"
           if (isnumeric (value) && isscalar (value)
               && value >= 0 && value <= 1)
@@ -116,7 +116,7 @@
           if (! ischar (value))
             error ('corrcoef: "rows" value must be a string');
           endif
-          value = tolower (value);
+          value = lower (value);
           switch (value)
             case {"all", "complete", "pairwise"}
               rows = value;
--- a/scripts/statistics/iqr.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/statistics/iqr.m	Wed Apr 12 15:34:43 2023 -0700
@@ -146,7 +146,7 @@
         error ("iqr: vector DIM must contain non-repeating positive integers");
       endif
 
-    elseif (strcmp (tolower (dim), "all"))
+    elseif (strcmp (lower (dim), "all"))
       ## "ALL" simplifies to collapsing all elements to single vector
       x = x(:);
       dim = 1;
--- a/scripts/statistics/normalize.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/statistics/normalize.m	Wed Apr 12 15:34:43 2023 -0700
@@ -216,7 +216,7 @@
         print_usage ();
       endif
 
-      prop = tolower (varargin{vararg_idx});
+      prop = lower (varargin{vararg_idx});
 
       if (strcmp (prop, "datavariables"))
         ## FIXME: Remove error on next line and undo block comment when support
@@ -268,7 +268,7 @@
           case "zscore"
             method = "zscore";
             if (vararg_idx < n_varargin)
-              nextprop = tolower (varargin{vararg_idx+1});
+              nextprop = lower (varargin{vararg_idx+1});
               if (strcmp (nextprop, "std") || strcmp (nextprop, "robust"))
                 methodoption = nextprop;
                 vararg_idx++;
@@ -312,7 +312,7 @@
           case "scale"
             method = "scale";
             if (vararg_idx < n_varargin)
-              nextprop = tolower (varargin{vararg_idx+1});
+              nextprop = lower (varargin{vararg_idx+1});
               if (isnumeric (nextprop))
                 if (! isscalar (nextprop))
                   error ("normalize: scale value must be a scalar");
@@ -333,7 +333,7 @@
           case "center"
             method = "center";
             if (vararg_idx < n_varargin)
-              nextprop = tolower (varargin{vararg_idx+1});
+              nextprop = lower (varargin{vararg_idx+1});
               if (isscalar (nextprop)
                   || any (strcmp (nextprop, {"mean", "median"})))
                 methodoption = nextprop;
--- a/scripts/strings/base2dec.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/strings/base2dec.m	Wed Apr 12 15:34:43 2023 -0700
@@ -82,7 +82,7 @@
   elseif (! (base >= 2 && base <= length (symbols)))
     error ("base2dec: BASE must be between 2 and 36, or a string of symbols");
   else
-    str = toupper (str);
+    str = upper (str);
   endif
 
   ## Right justify the values and squeeze out any spaces.
--- a/scripts/strings/index.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/strings/index.m	Wed Apr 12 15:34:43 2023 -0700
@@ -67,7 +67,7 @@
     f(cellfun ("isempty", f)) = {0};
   endif
 
-  direction = tolower (direction);
+  direction = lower (direction);
 
   if (strcmp (direction, "first"))
     if (iscell (f))
--- a/scripts/strings/regexptranslate.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/strings/regexptranslate.m	Wed Apr 12 15:34:43 2023 -0700
@@ -69,7 +69,7 @@
     error ("regexptranslate: operation OP must be a string");
   endif
 
-  op = tolower (op);
+  op = lower (op);
   if (strcmp ("wildcard", op))
     str = strrep (strrep (strrep (s, '.', '\.'),
                                      '*', '.*'),
--- a/scripts/strings/strsplit.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/strings/strsplit.m	Wed Apr 12 15:34:43 2023 -0700
@@ -159,7 +159,7 @@
   fields = fieldnames (args);
   for n = 1:2:numel (params)
     if (any (strcmpi (params{n}, fields)))
-      args.(tolower (params{n})) = params{n+1};
+      args.(lower (params{n})) = params{n+1};
     elseif (ischar (varargin{n}))
       error ("Octave:strsplit:invalid_parameter_name",
              "strsplit: invalid parameter name, '%s'", varargin{n});
--- a/scripts/time/datestr.m	Wed Apr 12 14:40:52 2023 -0700
+++ b/scripts/time/datestr.m	Wed Apr 12 15:34:43 2023 -0700
@@ -330,16 +330,16 @@
 ## Mac OS X interprets %p parameter to strftime as lower case am/pm indicator.
 ## Accommodate this, although no other UNIX-based OS does this.
 %!test
-%! obs = toupper (datestr (testtime,14));
+%! obs = upper (datestr (testtime,14));
 %! assert (obs, " 2:33:17 AM");
 %!assert (datestr (testtime,15), "02:33")
 %!test
-%! obs = toupper (datestr (testtime,16));
+%! obs = upper (datestr (testtime,16));
 %! assert (obs, " 2:33 AM");
 %!test <*48071>
 %! testtime2 = testtime;
 %! testtime2(4) = 15;
-%! obs = toupper (datestr (testtime2,16));
+%! obs = upper (datestr (testtime2,16));
 %! assert (obs, " 3:33 PM");
 %!assert (datestr (testtime,17), "Q4-05")
 %!assert (datestr (testtime,18), "Q4")
--- a/test/mk-sparse-tst.sh	Wed Apr 12 14:40:52 2023 -0700
+++ b/test/mk-sparse-tst.sh	Wed Apr 12 15:34:43 2023 -0700
@@ -513,8 +513,8 @@
 %! wn2s = warning ("query", "Octave:num-to-str");
 %! warning ("off", "Octave:num-to-str");
 %! if (isreal (af))
-%!   assert (tolower (as), as);
-%!   assert (toupper (as), as);
+%!   assert (lower (as), as);
+%!   assert (upper (as), as);
 %! endif
 %! warning (wn2s.state, "Octave:num-to-str");