changeset 19277:91a6f06c5052

Overhaul gzip.m and gunzip.m These functions now operate in the directory where the archive file is located rather than the current directory. * gunzip.m: Redo docstring. Default directory for unpacking is now the directory where the .gz file resides. Eliminate unnecessary varargout usage. Eliminate unnecessary mfilename() function call by replacing with string "gunzip". Add %!assert(1) to remove file from test statistics. The tests are located in gzip.m * gzip.m: Redo docstring. Rename outdir input variable to dir to match other compress/uncompress routines. * unpack.m: Redo seealso links in docstring.
author Rik <rik@octave.org>
date Thu, 09 Oct 2014 20:38:04 -0700
parents ba7e42dea4b2
children 79d4783a9978
files scripts/miscellaneous/gunzip.m scripts/miscellaneous/gzip.m scripts/miscellaneous/unpack.m
diffstat 3 files changed, 55 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/miscellaneous/gunzip.m	Thu Oct 09 16:14:46 2014 -0700
+++ b/scripts/miscellaneous/gunzip.m	Thu Oct 09 20:38:04 2014 -0700
@@ -17,28 +17,42 @@
 ## <http://www.gnu.org/licenses/>.
 
 ## -*- texinfo -*-
-## @deftypefn {Function File} {} gunzip (@var{gzfile}, @var{dir})
-## Unpack the gzip archive @var{gzfile} to the directory @var{dir}.  If
-## @var{dir} is not specified, it defaults to the current directory.  If
-## @var{gzfile} is a directory, all gzfiles in the directory will be
-## recursively gunzipped.
-## @seealso{gzip, unpack, bunzip2, unzip, untar}
+## @deftypefn  {Function File} {@var{files} =} gunzip (@var{gzfile})
+## @deftypefnx {Function File} {@var{files} =} gunzip (@var{gzfile}, @var{dir})
+## Unpack the gzip archive @var{gzfile}.
+##
+## If @var{gzfile} is a directory, all gzfiles in the directory will be
+## recursively unpacked.  
+##
+## If @var{dir} is specified the files are unpacked in this directory rather
+## than the one where @var{gzfile} is located.
+##
+## The optional output @var{files} is a list of the uncompressed files.
+## @seealso{gzip, bunzip2, unzip, untar, unpack}
 ## @end deftypefn
 
 ## Author: Bill Denney <denney@seas.upenn.edu>
 
-function varargout = gunzip (gzfile, dir = ".")
+function files = gunzip (gzfile, dir)
 
-  if (nargin != 1 && nargin != 2)
+  if (nargin < 1 || nargin > 2)
     print_usage ();
   endif
 
+  if (isempty (dir))
+    dir = fileparts (gzfile);
+  endif
+
   if (nargout > 0)
-    varargout = cell (1, nargout);
-    [varargout{:}] = unpack (gzfile, dir, mfilename ());
+    files = unpack (gzfile, dir, "gunzip");
   else
-    unpack (gzfile, dir, mfilename ());
+    unpack (gzfile, dir, "gunzip");
   endif
 
 endfunction
 
+
+## Tests for this m-file are located in gzip.m
+## Remove from test statistics
+%!assert (1);
+
--- a/scripts/miscellaneous/gzip.m	Thu Oct 09 16:14:46 2014 -0700
+++ b/scripts/miscellaneous/gzip.m	Thu Oct 09 20:38:04 2014 -0700
@@ -17,25 +17,32 @@
 ## <http://www.gnu.org/licenses/>.
 
 ## -*- texinfo -*-
-## @deftypefn  {Function File} {@var{entries} =} gzip (@var{files})
-## @deftypefnx {Function File} {@var{entries} =} gzip (@var{files}, @var{outdir})
-## Compress the list of files and/or directories specified in @var{files}.
-## Each file is compressed separately and a new file with a @file{".gz"}
-## extension is created.  The original files are not modified.  Existing
-## compressed files are silently overwritten.  If @var{outdir} is defined the
-## compressed files are placed in this directory.
-## @seealso{gunzip, bzip2, zip, tar}
+## @deftypefn  {Function File} {@var{filelist} =} gzip (@var{files})
+## @deftypefnx {Function File} {@var{filelist} =} gzip (@var{files}, @var{dir})
+## Compress the list of files and directories specified in @var{files}.
+##
+## @var{files} is a character array or cell array of strings.  Each file is
+## compressed separately and a new file with a @file{".gz"} extension is
+## created.  The original files are not modified, but, existing compressed
+## files will be silently overwritten.  If a directory is specified then
+## @code{gzip} recursively compresses all files in the directory.
+##
+## If @var{dir} is defined the compressed files are placed in this directory.
+##
+## The optional output @var{filelist} is a list of the compressed files.
+## @seealso{gunzip, bzip2, zip, tar, unpack}
 ## @end deftypefn
 
-function entries = gzip (varargin)
-  if (nargin != 1 && nargin != 2) || (nargout > 1)
+function filelist = gzip (varargin)
+
+  if (nargin < 1 || nargin > 2 || nargout > 1)
     print_usage ();
   endif
 
   if (nargout == 0)
     __xzip__ ("gzip", "gz", "gzip -r %s", varargin{:});
   else
-    entries = __xzip__ ("gzip", "gz", "gzip -r %s", varargin{:});
+    filelist = __xzip__ ("gzip", "gz", "gzip -r %s", varargin{:});
   endif
 
 endfunction
@@ -44,20 +51,21 @@
 %!xtest
 %! ## test gzip together with gunzip
 %! unwind_protect
-%!   filename = tmpnam;
-%!   dummy    = 1;
+%!   filename = tempname;
+%!   dummy    = pi;
 %!   save (filename, "dummy");
-%!   dirname  = tmpnam;
+%!   dirname  = tempname;
 %!   mkdir (dirname);
-%!   entry = gzip (filename, dirname);
-%!   [path, basename, extension] = fileparts (filename);
-%!   if (! strcmp (entry, [dirname, filesep, basename, extension, ".gz"]))
+%!   filelist = gzip (filename, dirname);
+%!   filelist = filelist{1};
+%!   [~, basename, extension] = fileparts (filename);
+%!   if (! strcmp (filelist, [dirname, filesep, basename, extension, ".gz"]))
 %!     error ("gzipped file does not match expected name!");
 %!   endif
-%!   if (! exist (entry, "file"))
+%!   if (! exist (filelist, "file"))
 %!     error ("gzipped file cannot be found!");
 %!   endif
-%!   gunzip (entry);
+%!   gunzip (filelist);
 %!   fid = fopen (filename, "rb");
 %!   assert (fid >= 0);
 %!   orig_data = fread (fid);
@@ -67,7 +75,7 @@
 %!   new_data = fread (fid);
 %!   fclose (fid);
 %!   if (orig_data != new_data)
-%!     error ("unzipped file not equal to original file!");
+%!     error ("gunzipped file not equal to original file!");
 %!   endif
 %! unwind_protect_cleanup
 %!   delete (filename);
@@ -77,6 +85,6 @@
 
 %!error gzip ()
 %!error gzip ("1", "2", "3")
-%!error <output directory does not exist> gzip ("1", tmpnam)
+%!error <output directory does not exist> gzip ("1", tempname)
 %!error <FILES must be a character array or cellstr> gzip (1)
 
--- a/scripts/miscellaneous/unpack.m	Thu Oct 09 16:14:46 2014 -0700
+++ b/scripts/miscellaneous/unpack.m	Thu Oct 09 20:38:04 2014 -0700
@@ -66,7 +66,7 @@
 ## @end table
 ##
 ## The optional return value is a list of @var{files} unpacked.
-## @seealso{bzip2, gzip, zip, tar}
+## @seealso{bunzip2, gunzip, unzip, untar, bzip2, gzip, zip, tar}
 ## @end deftypefn
 
 ## Author: Bill Denney <denney@seas.upenn.edu>