# HG changeset patch # User Jaroslav Hajek # Date 1263933921 -3600 # Node ID be13fa20656a7f332f237a3f480e1f0f24baca3d # Parent 2e4fc7fdba15c0492e740e1002bc480633c15cc1 error on invalid opts in structfun diff -r 2e4fc7fdba15 -r be13fa20656a scripts/ChangeLog --- a/scripts/ChangeLog Tue Jan 19 13:24:54 2010 +0100 +++ b/scripts/ChangeLog Tue Jan 19 21:45:21 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-19 Jaroslav Hajek + + * general/structfun.m: Error when invalid options are specified. + 2010-01-19 Jaroslav Hajek , Thorsten Meyer * general/structfun.m: Correctly support multiple arguments with diff -r 2e4fc7fdba15 -r be13fa20656a scripts/general/structfun.m --- a/scripts/general/structfun.m Tue Jan 19 13:24:54 2010 +0100 +++ b/scripts/general/structfun.m Tue Jan 19 21:45:21 2010 +0100 @@ -71,18 +71,32 @@ ## @end deftypefn function varargout = structfun (fun, s, varargin); + if (nargin < 2) print_usage (); endif + nargs = length (varargin); + + recognized_opts = {"UniformOutput", "ErrorHandler"}; + uo_str = recognized_opts{1}; + uniform_output = true; - uo_str = "uniformoutput"; - nargs = length (varargin); - if (nargs >= 2 && strcmpi (varargin{1}, uo_str)) - uniform_output =varargin{2}; - elseif (nargs >= 4 && strcmpi (varargin{3}, uo_str)) - uniform_output =varargin{4}; + while (nargs >= 2) + opt_match = strcmpi (varargin{nargs-1}, recognized_opts); + if (opt_match(1)) + uniform_output = varargin{nargs}; + endif + if (any (opt_match)) + nargs -= 2; + else + break; + endif + endwhile + + if (nargs > 0) + error ("structfun: invalid options"); endif varargout = cell (max ([nargout, 1]), 1);