/usr/share/octave/packages/io-2.4.5/private/__OCT_spsh_close__.m is in octave-io 2.4.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | ## Copyright (C) 2013-2016 Philip Nienhuis
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with Octave; see the file COPYING. If not, see
## <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
## @deftypefn {Function File} {@var{xls} =} __OCT_spsh_close__ (@var{xls})
## Internal function! do not call directly; close spreadsheet pointer
## struct xls; for native OCT interface just set it to empty.
##
## @end deftypefn
## Author: Philip Nenhuis <prnienhuis at users.sf.net>
## Created: 2013-09-09
function [xls] = __OCT_spsh_close__ (xls)
if (isfield (xls, "nfilename"))
xls.filename = xls.nfilename;
endif
## Check extension and full path to file
[pth, fname, ext] = fileparts (xls.filename);
opwd = pwd;
if (isempty (pth))
filename = [ opwd filesep xls.filename ];
else
filename = make_absolute_filename (xls.filename);
endif
## .ods and.xlsx are both zipped
if (strcmpi (ext, ".ods") || strcmpi (ext, ".xlsx"))
if (xls.changed && xls.changed < 3)
## Go to temp dir where ods file has been unzipped
cd (xls.workbook);
pause (0.05);
## Zip tmp directory into .ods or .xlsx and copy it over original file
try
[stts, op] = system (sprintf ('zip -q -r "%s" *.* .', filename));
pause (0.20);
if (stts == 0)
xls.changed = 0;
endif
catch
printf ("odsclose: could not zip ods contents in %s to %s\n", ...
xls.workbook, filename);
end_try_catch;
endif
elseif (strcmpi (xls.filename(end-8:end), ".gnumeric"))
## gnumeric files are gzipped
try
status = system (sprintf ('gzip -c -S=gnumeric %s > "%s"', ...
xls.workbook, filename));
if (! status)
## Delete temporary file
unlink (xls.workbook);
xls.changed = 0;
endif
catch
status = 1;
end_try_catch
if (status)
printf ("odsclose: could not gzip gnumeric contents in %s to %s\n", ...
xls.workbook, filename);
endif
endif
## Delete tmp file and return to work dir
cd (opwd);
if (! xls.changed)
## Below is needed for a silent delete of our tmpdir
confirm_recursive_rmdir (0, "local");
rmdir (xls.workbook, "s");
endif
endfunction
|