function str = fill_var(cdfid, nvars)
%  FILL_VAR fills a row of an array with the name of a variable
%--------------------------------------------------------------------
%     Copyright (C) J. V. Mansbridge, CSIRO, january 24 1992
%     Revision $Revision: 1.5 $
% CHANGE   1.2 92/03/10
%  function str = fill_var(cdfid, nvars)
%
% DESCRIPTION:
%  This function fills the ith row of an array named 'str', with the
%  the name of the ith variable in the netcdf file with id number
%  cdfid.  nvars is the number of variables.  Each name is initially
%  allowed up to 25 letters but the number of columns in 'str' will
%  be expanded if necessary.
% 
% INPUT:
%  cdfid: the id number of the netCDF file under consideration.
%  nvars: the number of variables of the netCDF file under consideration.
%
% OUTPUT:
%  str: the array that receives each variable name as one of its rows.
%
% EXAMPLE:
%
% This function calls : mexnc.m
% This function is called by: getnc.m
%
% AUTHOR:   J. V. Mansbridge, CSIRO
%---------------------------------------------------------------------

%     Copyright (C), J.V. Mansbridge, 
%     Commonwealth Scientific and Industrial Research Organisation
%     $Id: fill_var.m Mon, 03 Jul 2006 17:16:40 $
% 
%--------------------------------------------------------------------

% First try to fill each row of str with the relevant name.  If any
% name has more than max_le characters then the number of characters
% in the longest name will be stores and become the number of columns
% when the operation is done correctly.

str = [];
max_le = 25;
new_max = 25;
for i = 0:nvars - 1
   [varnam, vartyp, nvdims, vdims, nvatts, rcode] = ...
       mexnc('ncvarinq', cdfid, i);
   if rcode == -1
     error(['** ERROR ** ncvarinq: rcode = ' num2str(rcode)])
   end
   le = length(varnam);

   if le > max_le | new_max > max_le 
      new_max = max ([ le new_max ]);
   else
      str_tmp = [ varnam ];
      while le < max_le
         str_tmp = [ str_tmp ' ' ];
         le = le + 1;
      end
      str = [ str ; str_tmp ];
   end
end

% If any name is more than max_le characters long then store the names
% correctly in str now that we know the length of the longest name.

if new_max > max_le
   str = [];
   max_le = new_max;
   for i = 0:nvars - 1
      [varnam, vartyp, nvdims, vdims, nvatts, rcode] = ...
	  mexnc('ncvarinq', cdfid, i);
      if rcode == -1
	error(['** ERROR ** ncvarinq: rcode = ' num2str(rcode)])
      end
      le = length(varnam);

      str_tmp = [ varnam ];
      while le < max_le
         str_tmp = [ str_tmp ' ' ];
         le = le + 1;
      end
      str = [ str ; str_tmp ];
   end
end
