seperate multiple filenames by non-space character in pkg.m

John W. Eaton jwe at bevo.che.wisc.edu
Thu Oct 2 14:02:34 CDT 2008


On  2-Oct-2008, John W. Eaton wrote:

| Shouldn't we also do the same thing for the .m files?  Should we try
| to avoid putting a trailing colon at the end of filenames?
| 
| Or, instead of
| 
|   m = dir (fullfile (src, "*.m"));
|   oct = dir (fullfile (src, "*.oct"));
|   mex = dir (fullfile (src, "*.mex"));
|   archdependent = "";
|   archindependent = "";
|   filenames = "";
|   if (length (m) > 0)
|     filenames = sprintf (fullfile (src, "%s "), m.name);
|   endif
|   if (length (oct) > 0)
|     filenames = cstrcat (filenames, " ",
| 			sprintf (fullfile (src, "%s "), oct.name));
|   endif
|   if (length (mex) > 0)
|     filenames = cstrcat (filenames, " ",
| 			sprintf (fullfile (src, "%s "), mex.name));
|   endif
|   filenames = split_by (filenames, " ");
| 
| maybe we could simplify all of this by doing something like
| 
|   m = dir (fullfile (src, "*.m"));
|   oct = dir (fullfile (src, "*.oct"));
|   mex = dir (fullfile (src, "*.mex"));
| 
|   ## FIXME -- we should not need the tests on size here, but there is
|   ## a bug in concatenation with { } when an expression like oct.name
|   ## produces nothing.
| 
|   if (isempty (m)) mnames = { }; else mnames = { m.name }; endif
|   if (isempty (oct)) octnames = { }; else octnames = { oct.name }; endif
|   if (isempty (mex)) mexnames = { }; else mexnames = { mex.name }; endif
| 
|   filenames = cellfun (@(x) fullfile (src, x), [mnames, octnames, mexnames],
|                        "UniformOutput", false);
| 
| Of course this could be further simplified if the bug is fixed, so I'll
| take a look at doing that.
| 
| Also, why are archdependent and archindependent even set in this
| block?  They appear to be set unconditionally just below.

I checked in a bug fix so now things like

  x = dir ("nonexistent-file");
  {x.name}

does the right thing and produces an empty cell array instead of a
cell array containing an undefined value.

Then I also checked in a fix for pkg.m as outlined above (but without
the isempty checks).

Thanks,

jwe


More information about the Bug-octave mailing list