fix uncommon bug in parsing dynare command line options

previously, `nopathchange` and `nopreprocessoroutput` were set even if they were values instead of option names.

`nopathchange` would further remove all options that contained `'nopathchange'`

e.g. `dynare example1.mod savemacro=nopathchange` would erroneously set `nopathchange` to true and would delete the `savemacro` option altogether

In the fix, just check that the match starts in position 1 as, if the argument passed is longer than the matching pattern (e.g. nopathchangee), the preprocessor will stop processing with a usage error
time-shift
Houtan Bastani 2019-12-03 12:04:49 +01:00
parent 2184195826
commit 3a223e9c08
No known key found for this signature in database
GPG Key ID: 000094FB955BE169
1 changed files with 4 additions and 7 deletions

View File

@ -51,15 +51,12 @@ change_path_flag = true;
% Filter out some options.
preprocessoroutput = true;
if nargin>1
id = strfind(varargin,'nopathchange');
if ~all(cellfun(@isempty, id))
id = ismember(varargin, 'nopathchange');
if any(id)
change_path_flag = false;
varargin(cellfun(@isempty, id) == 0) = [];
end
id = strfind(varargin, 'nopreprocessoroutput');
if ~all(cellfun(@isempty, id))
preprocessoroutput = false;
varargin(id) = [];
end
preprocessoroutput = ~ismember('nopreprocessoroutput', varargin);
end
% Check matlab path