Mercurial > hg > octave-lyh
changeset 8664:e07e93c04080
style fixes
line wrap: on
line diff
--- a/examples/@polynomial/polynomial.m +++ b/examples/@polynomial/polynomial.m @@ -19,7 +19,7 @@ p.poly = a(:)'; p = class (p, "polynomial"); else - error ("polynomial: expecting real or complex vector") + error ("polynomial: expecting real or complex vector"); endif else print_usage ();
--- a/examples/@polynomial/polynomial_superiorto.m +++ b/examples/@polynomial/polynomial_superiorto.m @@ -9,7 +9,7 @@ p.poly = a(:)'; p = class (p, "polynomial"); else - error ("polynomial: expecting real or complex vector") + error ("polynomial: expecting real or complex vector"); endif else print_usage ();
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,26 @@ +2009-02-04 John W. Eaton <jwe@octave.org> + + * audio/wavwrite.m, deprecated/splu.m, general/bitcmp.m, + general/fliplr.m, general/flipud.m, general/genvarname.m, + general/nargchk.m, general/nargoutchk.m, general/quadgk.m, + general/rot90.m, geometry/griddata.m, geometry/rectint.m, + geometry/voronoi.m, geometry/voronoin.m, + help/__strip_html_tags__.m, image/brighten.m, image/imfinfo.m, + image/imread.m, linear-algebra/cond.m, linear-algebra/condest.m, + linear-algebra/dmult.m, linear-algebra/dot.m, + linear-algebra/expm.m, linear-algebra/housh.m, + linear-algebra/onenormest.m, linear-algebra/subspace.m, + miscellaneous/compare_versions.m, optimization/__all_opts__.m, + optimization/optimget.m, pkg/pkg.m, plot/__bar__.m, + plot/__plr2__.m, plot/ribbon.m, plot/slice.m, polynomial/pchip.m, + polynomial/roots.m, set/unique.m, signal/fractdiff.m, + signal/hurst.m, specfun/beta.m, specfun/legendre.m, + statistics/base/__quantile__.m, statistics/base/quantile.m, + statistics/tests/cor_test.m, + statistics/tests/kolmogorov_smirnov_test_2.m, strings/base2dec.m, + strings/dec2base.m, strings/strcat.m, strings/validatestring.m, + time/addtodate.m: Style fixes. + 2009-02-04 Jaroslav Hajek <highegg@gmail.com> * optimization/fsolve.m: remove redundant line.
--- a/scripts/audio/wavwrite.m +++ b/scripts/audio/wavwrite.m @@ -102,7 +102,7 @@ [fid, msg] = fopen (filename, "wb"); if (fid < 0) - error ("wavwrite: %s", msg) + error ("wavwrite: %s", msg); endif ## write RIFF/WAVE header
--- a/scripts/deprecated/splu.m +++ b/scripts/deprecated/splu.m @@ -38,7 +38,7 @@ for i = 2 : nargin arg = varargin {i}; if (! isscalar (arg)) - error ("splu: Can no longer treat input column permutations."); + error ("splu: Can no longer treat input column permutations"); endif endfor
--- a/scripts/general/bitcmp.m +++ b/scripts/general/bitcmp.m @@ -41,7 +41,7 @@ endif if (nargin == 2 && (! isscalar (n) || (floor (n) != n))) - error("k must be a scalar integer") + error ("k must be a scalar integer"); endif if (isa (a, "double"))
--- a/scripts/general/fliplr.m +++ b/scripts/general/fliplr.m @@ -44,7 +44,7 @@ endif if (ndims (x) > 2) - error ("fliplr: Only works with 2-D arrays") + error ("fliplr: Only works with 2-D arrays"); endif nc = columns (x);
--- a/scripts/general/flipud.m +++ b/scripts/general/flipud.m @@ -45,7 +45,7 @@ endif if (ndims (x) > 2) - error ("flipud: Only works with 2-d arrays") + error ("flipud: Only works with 2-d arrays"); endif nr = rows (x);
--- a/scripts/general/genvarname.m +++ b/scripts/general/genvarname.m @@ -105,19 +105,19 @@ exclusions = {}; elseif (ischar (exclusions)) if (rows (exclusions) != 1) - error ("genvarname: if more than one exclusion is given, it must be a cellstr") + error ("genvarname: if more than one exclusion is given, it must be a cellstr"); endif exclusions = {exclusions}; elseif (! iscellstr (exclusions)) - error ("genvarname: exclusions must be a string or a cellstr") + error ("genvarname: exclusions must be a string or a cellstr"); endif if (ischar (str)) if (rows (str) != 1) - error ("genvarname: if more than one str is given, it must be a cellstr") + error ("genvarname: if more than one str is given, it must be a cellstr"); endif str = {str}; elseif (! iscellstr (str)) - error ("genvarname: str must be a string or a cellstr") + error ("genvarname: str must be a string or a cellstr"); endif validchars = cstrcat ("A":"Z", "a":"z", "0":"9", "_");
--- a/scripts/general/nargchk.m +++ b/scripts/general/nargchk.m @@ -61,7 +61,7 @@ endif ## FIXME: remove the error below if error is modified to accept ## struct inputs - error ("nargchk: error does not yet support struct inputs") + error ("nargchk: error does not yet support struct inputs"); endif endfunction
--- a/scripts/general/nargoutchk.m +++ b/scripts/general/nargoutchk.m @@ -61,7 +61,7 @@ endif ## FIXME: remove the error below if error is modified to accept ## struct inputs - error ("nargoutchk: error does not yet support struct inputs") + error ("nargoutchk: error does not yet support struct inputs"); endif endfunction
--- a/scripts/general/quadgk.m +++ b/scripts/general/quadgk.m @@ -166,7 +166,7 @@ endif endwhile if (idx != nargin - 2) - error ("quadgk: expecting properties in pairs") + error ("quadgk: expecting properties in pairs"); endif endif endif @@ -285,7 +285,7 @@ unwind_protect ## Singularity will cause divide by zero warnings - warning ("off", "Octave:divide-by-zero") + warning ("off", "Octave:divide-by-zero"); ## Initial evaluation of the integrand on the sub-intervals [q_subs, q_errs] = __quadgk_eval__ (f, subs); @@ -371,7 +371,7 @@ endif unwind_protect_cleanup if (strcmp (warn_state.state, "on")) - warning ("on", "Octave:divide-by-zero") + warning ("on", "Octave:divide-by-zero"); endif end_unwind_protect endif
--- a/scripts/general/rot90.m +++ b/scripts/general/rot90.m @@ -61,7 +61,7 @@ endif if (ndims (x) > 2) - error ("rot90: Only works with 2-D arrays") + error ("rot90: Only works with 2-D arrays"); endif if (imag (k) != 0 || fix (k) != k)
--- a/scripts/geometry/griddata.m +++ b/scripts/geometry/griddata.m @@ -68,7 +68,7 @@ zi = nan (size (xi)); if (strcmp (method, "cubic")) - error ("griddata: cubic interpolation not yet implemented") + error ("griddata: cubic interpolation not yet implemented"); elseif (strcmp (method, "nearest")) ## Search index of nearest point.
--- a/scripts/geometry/rectint.m +++ b/scripts/geometry/rectint.m @@ -44,7 +44,7 @@ elseif (columns (b) != 4) error ("rectint: b must have 4 columns"); elseif any ([a(:,3:4);b(:,3:4)](:) < 0) - error ("rectint: all widths and heights must be > 0") + error ("rectint: all widths and heights must be > 0"); endif ## This runs faster if the number of rows of a is greater than the
--- a/scripts/geometry/voronoi.m +++ b/scripts/geometry/voronoi.m @@ -161,7 +161,7 @@ vvx = vx; vvy = vy; else - error ("voronoi: only two or zero output arguments supported") + error ("voronoi: only two or zero output arguments supported"); endif endfunction
--- a/scripts/geometry/voronoin.m +++ b/scripts/geometry/voronoin.m @@ -54,6 +54,6 @@ endif else - error ("voronoin: number of points must be greater than their dimension") + error ("voronoin: number of points must be greater than their dimension"); endif endfunction
--- a/scripts/help/__strip_html_tags__.m +++ b/scripts/help/__strip_html_tags__.m @@ -33,8 +33,7 @@ text = strip_superfluous_endlines (text); status = 0; else - warning ("help: invalid HTML data"); - warning ("Raw HTML source follows..."); + warning ("help: invalid HTML data -- raw HTML source follows..."); disp (html_text); text = ""; status = 1;
--- a/scripts/image/brighten.m +++ b/scripts/image/brighten.m @@ -45,14 +45,14 @@ h = m; m = get (h, "colormap"); elseif (! is_matrix (m) || size (m, 2) != 3) - error ("First argument must be a matrix of size nx3 or a handle."); + error ("brighten: first argument must be an Nx3 matrix or a handle"); endif else print_usage (); endif if (! isscalar (beta) || beta <= -1 || beta >= 1) - error ("brighten(...,beta) beta must be a scalar in the range (-1,1)."); + error ("brighten: beta must be a scalar in the range (-1,1)"); endif if (beta > 0)
--- a/scripts/image/imfinfo.m +++ b/scripts/image/imfinfo.m @@ -90,7 +90,7 @@ endif if (!ischar (filename)) - error ("imfinfo: filename must be a string") + error ("imfinfo: filename must be a string"); endif filename = tilde_expand (filename);
--- a/scripts/image/imread.m +++ b/scripts/image/imread.m @@ -42,7 +42,7 @@ endif if (! ischar (filename)) - error ("imread: filename must be a string") + error ("imread: filename must be a string"); endif filename = tilde_expand (filename); @@ -71,7 +71,7 @@ map_field = isfield (vars, "map"); endif catch - error ("imread: invalid image file: %s", magick_error) + error ("imread: invalid image file: %s", magick_error); end_try_catch if (map_field && (img_field || x_field))
--- a/scripts/linear-algebra/cond.m +++ b/scripts/linear-algebra/cond.m @@ -33,7 +33,7 @@ if (nargin && nargin < 3) if (ndims (a) > 2) - error ("cond: only valid on 2-D objects") + error ("cond: only valid on 2-D objects"); endif if (nargin <2)
--- a/scripts/linear-algebra/condest.m +++ b/scripts/linear-algebra/condest.m @@ -119,7 +119,7 @@ A = varargin{1}; n = issquare (A); if (! n) - error ("condest: matrix must be square."); + error ("condest: matrix must be square"); endif have_A = true; @@ -136,7 +136,7 @@ have_t = true; endif else - error ("condest: must supply both solve and solve_t."); + error ("condest: must supply both solve and solve_t"); endif endif elseif (nargin > 4) @@ -147,14 +147,14 @@ have_solve = true; n = varargin{5}; if (! isscalar (n)) - error ("condest: dimension argument of implicit form must be scalar."); + error ("condest: dimension argument of implicit form must be scalar"); endif if (nargin > 5) t = varargin{6}; have_t = true; endif else - error ("condest: implicit form of condest requires at least 5 arguments."); + error ("condest: implicit form of condest requires at least 5 arguments"); endif if (! have_t)
--- a/scripts/linear-algebra/dmult.m +++ b/scripts/linear-algebra/dmult.m @@ -69,7 +69,7 @@ s = kron (ones (sat, 1), kron (b, ones (sal, 1))); m = reshape (s, sa) .* a; else - error ("dmult: dimensions mismatch or index out of range") + error ("dmult: dimensions mismatch or index out of range"); endif else print_usage ();
--- a/scripts/linear-algebra/dot.m +++ b/scripts/linear-algebra/dot.m @@ -41,12 +41,12 @@ y = y(:); endif if (! size_equal (x, y)) - error ("dot: sizes of arguments must match") + error ("dot: sizes of arguments must match"); endif z = sum(x .* y); else if (! size_equal (x, y)) - error ("dot: sizes of arguments must match") + error ("dot: sizes of arguments must match"); endif z = sum(x .* y, dim); endif
--- a/scripts/linear-algebra/expm.m +++ b/scripts/linear-algebra/expm.m @@ -104,7 +104,7 @@ function r = expm (a) if (! ismatrix (a) || ! issquare (a)) - error ("expm requires a square matrix") + error ("expm requires a square matrix"); endif n = rows (a);
--- a/scripts/linear-algebra/housh.m +++ b/scripts/linear-algebra/housh.m @@ -63,9 +63,9 @@ ## Check for valid inputs. if (! isvector (x) && ! isscalar (x)) - error ("housh: first input must be a vector") + error ("housh: first input must be a vector"); elseif (! isscalar(j)) - error ("housh: second argment must be an integer scalar") + error ("housh: second argment must be an integer scalar"); else housv = x; m = max (abs (housv));
--- a/scripts/linear-algebra/onenormest.m +++ b/scripts/linear-algebra/onenormest.m @@ -102,7 +102,7 @@ if (ismatrix (varargin{1})) n = size (varargin{1}, 1); if n != size (varargin{1}, 2), - error ("onenormest: matrix must be square."); + error ("onenormest: matrix must be square"); endif apply = @(x) varargin{1} * x; apply_t = @(x) varargin{1}' * x;
--- a/scripts/linear-algebra/subspace.m +++ b/scripts/linear-algebra/subspace.m @@ -39,7 +39,7 @@ elseif (ndims (a) != 2 || ndims (b) != 2) error ("subspace: expecting A and B to be 2-dimensional arrays"); elseif (rows (a) != rows (b)) - error ("subspace: column dimensions of a and b must match") + error ("subspace: column dimensions of a and b must match"); endif a = orth (a);
--- a/scripts/miscellaneous/compare_versions.m +++ b/scripts/miscellaneous/compare_versions.m @@ -78,7 +78,7 @@ if (! (ischar (v1) && ischar (v2))) error ("compare_versions: both version numbers must be strings"); elseif (size (v1, 1) != 1 || size (v2, 1) != 1) - error ("compare_versions: version numbers must be a single row") + error ("compare_versions: version numbers must be a single row"); endif ## check and make sure that the operator is valid
--- a/scripts/optimization/__all_opts__.m +++ b/scripts/optimization/__all_opts__.m @@ -55,7 +55,7 @@ lnames = unique (tolower (names)); if (length (lnames) < length (names)) ## This is bad. - error ("__all_opts__: duplicate options with inconsistent case."); + error ("__all_opts__: duplicate options with inconsistent case"); endif saved_names = names; recursive = false;
--- a/scripts/optimization/optimget.m +++ b/scripts/optimization/optimget.m @@ -38,7 +38,7 @@ if (idx > 0 && strcmpi (parname, opts{idx})) parname = opts{idx}; else - warning ("unrecognized option: %s", parname) + warning ("unrecognized option: %s", parname); endif if (isfield (options, parname)) retval = options.(parname);
--- a/scripts/pkg/pkg.m +++ b/scripts/pkg/pkg.m @@ -877,7 +877,7 @@ endif else ## FIXME: We should have a better error message. - warning ("some of the packages you want to uninstall are not installed."); + warning ("some of the packages you want to uninstall are not installed"); endif endif
--- a/scripts/plot/__bar__.m +++ b/scripts/plot/__bar__.m @@ -104,7 +104,7 @@ ylen = size (y, 1); if (xlen != ylen) - error ("%s: length of x and y must be equal", func) + error ("%s: length of x and y must be equal", func); endif if (any (x(2:end) < x(1:end-1))) error ("%s: x vector values must be in ascending order", func);
--- a/scripts/plot/__plr2__.m +++ b/scripts/plot/__plr2__.m @@ -79,7 +79,7 @@ y = diag (sin (theta)) * rho; retval = __plt__ ("polar", h, x, y, fmt); else - error ("__plr2__: invalid data for plotting") + error ("__plr2__: invalid data for plotting"); endif elseif (ismatrix (theta)) if (isvector (rho)) @@ -112,10 +112,10 @@ y = rho .* sin (theta); retval = __plt__ ("polar", h, x, y, fmt); else - error ("__plr2__: invalid data for plotting") + error ("__plr2__: invalid data for plotting"); endif else - error ("__plr2__: invalid data for plotting") + error ("__plr2__: invalid data for plotting"); endif endfunction
--- a/scripts/plot/ribbon.m +++ b/scripts/plot/ribbon.m @@ -50,13 +50,13 @@ if (isvector (x) && isvector (y)) if (length (x) != length (y)) - error ("ribbon: in case of vectors, X and Y must have same length") + error ("ribbon: in case of vectors, X and Y must have same length"); else [x, y] = meshgrid (x, y); endif else if (! size_equal(x, y)) - error ("ribbon: in case of matrices, X and Y must have same size") + error ("ribbon: in case of matrices, X and Y must have same size"); endif endif
--- a/scripts/plot/slice.m +++ b/scripts/plot/slice.m @@ -102,7 +102,7 @@ elseif (ndims (x) == 3 && size_equal (x, y, z)) ## Do nothing. else - error ("slice: X, Y, Z size mismatch") + error ("slice: X, Y, Z size mismatch"); endif sx = varargin{5}; sy = varargin{6};
--- a/scripts/polynomial/pchip.m +++ b/scripts/polynomial/pchip.m @@ -99,7 +99,7 @@ h = diff (x); y = flipud (y); elseif (any (h <= 0)) - error("pchip: x must be strictly monotonic") + error("pchip: x must be strictly monotonic"); endif if (rows (y) != n)
--- a/scripts/polynomial/roots.m +++ b/scripts/polynomial/roots.m @@ -84,7 +84,7 @@ if (nargin != 1 || min (size (v)) > 1) print_usage (); elseif (any (isnan(v) | isinf(v))) - error ("roots: inputs must not contain Inf or NaN") + error ("roots: inputs must not contain Inf or NaN"); endif n = numel (v);
--- a/scripts/set/unique.m +++ b/scripts/set/unique.m @@ -54,9 +54,9 @@ optlast = strmatch ('last', varargin) > 0; optrows = strmatch ('rows', varargin) > 0 && size (x, 2) > 1; if (optfirst && optlast) - error ("unique: cannot specify both 'last' and 'first'."); + error ("unique: cannot specify both \"last\" and \"first\""); elseif (optfirst + optlast + optrows != nargin-1) - error ("unique: invalid option."); + error ("unique: invalid option"); endif else error ("unique: options must be strings");
--- a/scripts/signal/fractdiff.m +++ b/scripts/signal/fractdiff.m @@ -35,11 +35,11 @@ N = 100; if (! isvector (x)) - error ("fractdiff: x must be a vector") + error ("fractdiff: x must be a vector"); endif if (! isscalar (d)) - error ("fractdiff: d must be a scalar") + error ("fractdiff: d must be a scalar"); endif
--- a/scripts/signal/hurst.m +++ b/scripts/signal/hurst.m @@ -34,7 +34,7 @@ endif if (isscalar (x)) - error ("hurst: x must not be a scalar") + error ("hurst: x must not be a scalar"); elseif (isvector (x)) x = reshape (x, length (x), 1); endif
--- a/scripts/specfun/beta.m +++ b/scripts/specfun/beta.m @@ -46,11 +46,11 @@ endif if (any (size (a) != size (b)) && numel (a) != 1 && numel (b) != 1) - error ("beta: inputs have inconsistent sizes.") + error ("beta: inputs have inconsistent sizes"); endif if (! isreal (a) || ! isreal (b)) - error ("beta: inputs must be real.") + error ("beta: inputs must be real"); endif retval = real (exp (gammaln (a) + gammaln (b) - gammaln (a+b)));
--- a/scripts/specfun/legendre.m +++ b/scripts/specfun/legendre.m @@ -186,7 +186,7 @@ endif if (overflow && ! warned_overflow) - warning ("legendre: overflow - results may be unstable for high orders."); + warning ("legendre: overflow - results may be unstable for high orders"); warned_overflow = true; endif
--- a/scripts/statistics/base/__quantile__.m +++ b/scripts/statistics/base/__quantile__.m @@ -117,7 +117,7 @@ p = kron (p, m+0.25) + 0.375; otherwise - error ("quantile: Unknown method, '%d'",method) + error ("quantile: Unknown method, '%d'", method); endswitch ## Duplicate single values.
--- a/scripts/statistics/base/quantile.m +++ b/scripts/statistics/base/quantile.m @@ -101,7 +101,7 @@ endif if (dim > ndims(x)) - error ("quantile: invalid dimension.") + error ("quantile: invalid dimension"); endif ## Set the permutation vector.
--- a/scripts/statistics/tests/cor_test.m +++ b/scripts/statistics/tests/cor_test.m @@ -68,7 +68,7 @@ endif if (!isvector (X) || !isvector (Y) || length (X) != length (Y)) - error ("cor_test: X and Y must be vectors of the same length") + error ("cor_test: X and Y must be vectors of the same length"); endif if (nargin < 3) @@ -109,7 +109,7 @@ t.dist = "stdnormal"; cdf = stdnormal_cdf (t.stat); else - error ("cor_test: method `%s' not recognized", METHOD) + error ("cor_test: method `%s' not recognized", METHOD); endif if (strcmp (ALTERNATIVE, "!=") || strcmp (ALTERNATIVE, "<>"))
--- a/scripts/statistics/tests/kolmogorov_smirnov_test_2.m +++ b/scripts/statistics/tests/kolmogorov_smirnov_test_2.m @@ -77,7 +77,7 @@ ds = diff (s); if (any (ds == 0)) ## There are some ties, so keep only those changes. - warning ("cannot compute correct p-values with ties") + warning ("cannot compute correct p-values with ties"); elems = [find(ds); n_x+n_y]; z = z(elems); endif
--- a/scripts/strings/base2dec.m +++ b/scripts/strings/base2dec.m @@ -56,10 +56,10 @@ symbols = base; base = length (symbols); if (any (diff (sort (toascii (symbols))) == 0)) - error ("base2dec: symbols representing digits must be unique."); + error ("base2dec: symbols representing digits must be unique"); endif elseif (! isscalar (base)) - error ("base2dec: cannot convert from several bases at once."); + error ("base2dec: cannot convert from several bases at once"); elseif (base < 2 || base > length (symbols)) error ("base2dec: base must be between 2 and 36 or a string of symbols"); else
--- a/scripts/strings/dec2base.m +++ b/scripts/strings/dec2base.m @@ -55,7 +55,7 @@ if (numel (n) != length (n)) n = n(:); elseif (any (n < 0 | n != fix (n))) - error ("dec2base: can only convert non-negative integers") + error ("dec2base: can only convert non-negative integers"); endif symbols = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
--- a/scripts/strings/strcat.m +++ b/scripts/strings/strcat.m @@ -73,7 +73,7 @@ elseif (iscell (varargin{nv})) allchar = false; else - error ("strcat: inputs must be strings or cells of strings.") + error ("strcat: inputs must be strings or cells of strings"); endif dims{nv} = size (varargin{nv}); numstrs(nv) = numel (varargin{nv}); @@ -96,7 +96,7 @@ if (size_equal (st, varargin{nv})) st{ns} = [st{ns}, varargin{nv}{ns}]; else - error ("strcat: arguments must be the same size, or be scalars."); + error ("strcat: arguments must be the same size, or be scalars"); endif endfor endfor
--- a/scripts/strings/validatestring.m +++ b/scripts/strings/validatestring.m @@ -74,21 +74,21 @@ ## Check the inputs if (! ischar (str)) - error ("validatestring: str must be a character string") + error ("validatestring: str must be a character string"); elseif (rows (str) != 1) - error ("validatestring: str must have only one row") + error ("validatestring: str must have only one row"); elseif (! iscellstr (strarray)) - error ("validatestring: strarray must be a cellstr") + error ("validatestring: strarray must be a cellstr"); elseif (! ischar (funname)) - error ("validatestring: funname must be a character string") + error ("validatestring: funname must be a character string"); elseif (! isempty (funname) && (rows (funname) != 1)) - error ("validatestring: funname must be exactly one row") + error ("validatestring: funname must be exactly one row"); elseif (! ischar (varname)) - error ("validatestring: varname must be a character string") + error ("validatestring: varname must be a character string"); elseif (! isempty (varname) && (rows (varname) != 1)) - error ("validatestring: varname must be exactly one row") + error ("validatestring: varname must be exactly one row"); elseif (position < 0) - error ("validatestring: position must be >= 0") + error ("validatestring: position must be >= 0"); endif ## make the part of the error that will use funname, varname, and
--- a/scripts/time/addtodate.m +++ b/scripts/time/addtodate.m @@ -34,7 +34,7 @@ elseif (! (ischar (f) && rows (f) == 1)) ## FIXME: enhance the function so that it works with cellstrs of the ## same size as the output. - error ("addtodate: f must be a single row character string.") + error ("addtodate: f must be a single row character string"); endif if (numel (d) == 1 && numel (q) > 1) @@ -69,7 +69,7 @@ mult = struct ("day", 1, "hour", 1/24, "minute", 1/1440, "second", 1/86400); d += q.*mult.(f); else - error ("addtodate: Invalid time unit: %s", f) + error ("addtodate: Invalid time unit: %s", f); endif endfunction