# HG changeset patch # User Philip Nienhuis # Date 1432059585 -7200 # Node ID 935832827f47466e859e4f078a2d6cce93ce56af # Parent b7ee5cefa9d6f45701500e040deb2b439a2aed96 textread.m: properly initialize endofline if specified by user (bug #45046) diff -r b7ee5cefa9d6 -r 935832827f47 scripts/io/textread.m --- a/scripts/io/textread.m Mon May 18 19:14:41 2015 -0400 +++ b/scripts/io/textread.m Tue May 19 20:19:45 2015 +0200 @@ -115,7 +115,12 @@ endofline = find (strcmpi (varargin, "endofline"), 1); if (! isempty (endofline)) ## 'endofline' option set by user. - if (! ischar (varargin{endofline + 1})); + if (ischar (varargin{endofline + 1})) + eol_char = varargin{endofline + 1}; + if (! any (strcmp (eol_char, {"", "\n", "\r", "\r\n"}))) + error ("textscan: illegal EndOfLine character value specified"); + endif + else error ("character value required for EndOfLine"); endif else @@ -310,6 +315,20 @@ %! unlink (f); %! assert (A, [0 2 0 4; 5 0 0 0], 1e-6); +## Test endofline +%!test +%! f = tempname (); +%! fid = fopen (f, "w"); +%! fprintf (fid, "a\rb\rc"); +%! fclose (fid); +%! ## Test EOL detection +%! d = textread (f, "%s"); +%! assert (d, {"a";"b";"c"}); +%! ## Test explicit EOL specification (bug #45046) +%! d = textread (f, "%s", "endofline", "\r"); +%! assert (d, {"a"; "b"; "c"}); +%! unlink (f); + ## Test input validation %!error textread () %!error textread (1)