Skip to content

Commit d6687b2

Browse files
committed
h5save/ncsave: check destination folder exists to avoid confusing error
1 parent 191fdc3 commit d6687b2

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

h5save.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
function h5save(filename, varname, A, sizeA, dtype)
2+
% H5SAVE
3+
% create or append to HDF5 file
4+
% parent folder (file directory) must already exist
25

36
narginchk(3, 5)
47

@@ -31,6 +34,7 @@ function h5save(filename, varname, A, sizeA, dtype)
3134

3235

3336
function exist_file(filename, varname, A, sizeA)
37+
narginchk(4,4)
3438

3539
diskshape = h5size(filename, varname);
3640
if length(diskshape) >= 2
@@ -54,6 +58,10 @@ function exist_file(filename, varname, A, sizeA)
5458

5559

5660
function new_file(filename, varname, A, sizeA)
61+
narginchk(4,4)
62+
63+
folder = fileparts(filename);
64+
assert(isfolder(folder), '%s is not a folder, cannot create %s', folder, filename)
5765

5866
if isvector(A)
5967
h5create(filename, varname, sizeA, 'DataType', class(A))

h5variables.m

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
function [names, groups] = h5variables(filename)
1+
function [names, groups] = h5variables(filename, group)
22
% get dataset names and groups in an HDF5 file
3-
narginchk(1,1)
3+
narginchk(1,2)
44

55
names = [];
66
groups = [];
@@ -11,11 +11,20 @@
1111
if isempty(ds)
1212
return
1313
end
14+
if nargin > 1
15+
gs = finf.Groups;
16+
i = contains({gs(:).Name}, group);
17+
if ~any(i)
18+
return
19+
end
20+
ds = gs(i).Datasets;
21+
end
1422

1523
names = {ds(:).Name};
1624

1725
if nargout > 1
18-
groups = {finf.Groups};
26+
gs = finf.Groups;
27+
groups = {gs.Name};
1928
end
2029

2130
end % function

ncsave.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ function exist_file(filename, varname, A, sizeA)
6161
function new_file(filename, varname, A, sizeA, ncdims)
6262
narginchk(5,5)
6363

64+
folder = fileparts(filename);
65+
assert(isfolder(folder), '%s is not a folder, cannot create %s', folder, filename)
66+
67+
6468
if isscalar(A)
6569
nccreate(filename, varname, 'Datatype', class(A), 'Format', 'netcdf4')
6670
elseif isvector(A)

0 commit comments

Comments
 (0)