Mercurial > octave
annotate libinterp/corefcn/dirfns.cc @ 31605:e88a07dec498 stable
maint: Use macros to begin/end C++ namespaces.
* oct-conf-post-public.in.h: Define two macros (OCTAVE_BEGIN_NAMESPACE,
OCTAVE_END_NAMESPACE) that can be used to start/end a namespace.
* mk-opts.pl, build-env.h, build-env.in.cc, __betainc__.cc, __contourc__.cc,
__dsearchn__.cc, __eigs__.cc, __expint__.cc, __ftp__.cc, __gammainc__.cc,
__ichol__.cc, __ilu__.cc, __isprimelarge__.cc, __lin_interpn__.cc,
__magick_read__.cc, __pchip_deriv__.cc, __qp__.cc, amd.cc, auto-shlib.cc,
auto-shlib.h, balance.cc, base-text-renderer.cc, base-text-renderer.h,
besselj.cc, bitfcns.cc, bsxfun.cc, c-file-ptr-stream.cc, c-file-ptr-stream.h,
call-stack.cc, call-stack.h, ccolamd.cc, cellfun.cc, chol.cc, colamd.cc,
colloc.cc, conv2.cc, daspk.cc, dasrt.cc, dassl.cc, data.cc, data.h, debug.cc,
defaults.cc, defaults.h, defun-int.h, defun.cc, det.cc, dirfns.cc, display.cc,
display.h, dlmread.cc, dmperm.cc, dot.cc, dynamic-ld.cc, dynamic-ld.h, eig.cc,
ellipj.cc, environment.cc, environment.h, error.cc, error.h, errwarn.h,
event-manager.cc, event-manager.h, event-queue.cc, event-queue.h, fcn-info.cc,
fcn-info.h, fft.cc, fft2.cc, fftn.cc, file-io.cc, filter.cc, find.cc,
ft-text-renderer.cc, ft-text-renderer.h, gcd.cc, getgrent.cc, getpwent.cc,
getrusage.cc, givens.cc, gl-render.cc, gl-render.h, gl2ps-print.cc,
gl2ps-print.h, graphics-toolkit.cc, graphics-toolkit.h, graphics.cc,
graphics.in.h, gsvd.cc, gtk-manager.cc, gtk-manager.h, hash.cc, help.cc,
help.h, hess.cc, hex2num.cc, hook-fcn.cc, hook-fcn.h, input.cc, input.h,
interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h,
inv.cc, jsondecode.cc, jsonencode.cc, kron.cc, latex-text-renderer.cc,
latex-text-renderer.h, load-path.cc, load-path.h, load-save.cc, load-save.h,
lookup.cc, ls-ascii-helper.cc, ls-ascii-helper.h, ls-oct-text.cc, ls-utils.cc,
ls-utils.h, lsode.cc, lu.cc, mappers.cc, matrix_type.cc, max.cc, mex-private.h,
mex.cc, mgorth.cc, nproc.cc, oct-fstrm.cc, oct-fstrm.h, oct-hdf5-types.cc,
oct-hdf5-types.h, oct-hist.cc, oct-hist.h, oct-iostrm.cc, oct-iostrm.h,
oct-opengl.h, oct-prcstrm.cc, oct-prcstrm.h, oct-procbuf.cc, oct-procbuf.h,
oct-process.cc, oct-process.h, oct-stdstrm.h, oct-stream.cc, oct-stream.h,
oct-strstrm.cc, oct-strstrm.h, oct-tex-lexer.in.ll, oct-tex-parser.yy,
ordqz.cc, ordschur.cc, pager.cc, pager.h, pinv.cc, pow2.cc, pr-flt-fmt.cc,
pr-output.cc, procstream.cc, procstream.h, psi.cc, qr.cc, quad.cc, quadcc.cc,
qz.cc, rand.cc, rcond.cc, regexp.cc, schur.cc, settings.cc, settings.h,
sighandlers.cc, sighandlers.h, sparse-xdiv.cc, sparse-xdiv.h, sparse-xpow.cc,
sparse-xpow.h, sparse.cc, spparms.cc, sqrtm.cc, stack-frame.cc, stack-frame.h,
stream-euler.cc, strfind.cc, strfns.cc, sub2ind.cc, svd.cc, sylvester.cc,
symbfact.cc, syminfo.cc, syminfo.h, symrcm.cc, symrec.cc, symrec.h,
symscope.cc, symscope.h, symtab.cc, symtab.h, syscalls.cc, sysdep.cc, sysdep.h,
text-engine.cc, text-engine.h, text-renderer.cc, text-renderer.h, time.cc,
toplev.cc, tril.cc, tsearch.cc, typecast.cc, url-handle-manager.cc,
url-handle-manager.h, urlwrite.cc, utils.cc, utils.h, variables.cc,
variables.h, xdiv.cc, xdiv.h, xnorm.cc, xnorm.h, xpow.cc, xpow.h,
__delaunayn__.cc, __fltk_uigetfile__.cc, __glpk__.cc, __init_fltk__.cc,
__init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, audiodevinfo.cc,
audioread.cc, convhulln.cc, fftw.cc, gzip.cc, mk-build-env-features.sh,
mk-builtins.pl, cdef-class.cc, cdef-class.h, cdef-fwd.h, cdef-manager.cc,
cdef-manager.h, cdef-method.cc, cdef-method.h, cdef-object.cc, cdef-object.h,
cdef-package.cc, cdef-package.h, cdef-property.cc, cdef-property.h,
cdef-utils.cc, cdef-utils.h, ov-base.cc, ov-base.h, ov-bool-mat.cc,
ov-builtin.h, ov-cell.cc, ov-class.cc, ov-class.h, ov-classdef.cc,
ov-classdef.h, ov-complex.cc, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn.h,
ov-java.cc, ov-java.h, ov-mex-fcn.h, ov-null-mat.cc, ov-oncleanup.cc,
ov-struct.cc, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h,
ov.cc, ov.h, octave.cc, octave.h, mk-ops.sh, op-b-b.cc, op-b-bm.cc,
op-b-sbm.cc, op-bm-b.cc, op-bm-bm.cc, op-bm-sbm.cc, op-cdm-cdm.cc, op-cell.cc,
op-chm.cc, op-class.cc, op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc,
op-cm-scm.cc, op-cm-sm.cc, op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc,
op-cs-scm.cc, op-cs-sm.cc, op-dm-dm.cc, op-dm-scm.cc, op-dm-sm.cc,
op-dm-template.cc, op-dms-template.cc, op-fcdm-fcdm.cc, op-fcm-fcm.cc,
op-fcm-fcs.cc, op-fcm-fm.cc, op-fcm-fs.cc, op-fcn.cc, op-fcs-fcm.cc,
op-fcs-fcs.cc, op-fcs-fm.cc, op-fcs-fs.cc, op-fdm-fdm.cc, op-fm-fcm.cc,
op-fm-fcs.cc, op-fm-fm.cc, op-fm-fs.cc, op-fs-fcm.cc, op-fs-fcs.cc,
op-fs-fm.cc, op-fs-fs.cc, op-i16-i16.cc, op-i32-i32.cc, op-i64-i64.cc,
op-i8-i8.cc, op-int-concat.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc,
op-m-scm.cc, op-m-sm.cc, op-mi.cc, op-pm-pm.cc, op-pm-scm.cc, op-pm-sm.cc,
op-pm-template.cc, op-range.cc, op-s-cm.cc, op-s-cs.cc, op-s-m.cc, op-s-s.cc,
op-s-scm.cc, op-s-sm.cc, op-sbm-b.cc, op-sbm-bm.cc, op-sbm-sbm.cc,
op-scm-cm.cc, op-scm-cs.cc, op-scm-m.cc, op-scm-s.cc, op-scm-scm.cc,
op-scm-sm.cc, op-sm-cm.cc, op-sm-cs.cc, op-sm-m.cc, op-sm-s.cc, op-sm-scm.cc,
op-sm-sm.cc, op-str-m.cc, op-str-s.cc, op-str-str.cc, op-struct.cc,
op-ui16-ui16.cc, op-ui32-ui32.cc, op-ui64-ui64.cc, op-ui8-ui8.cc, ops.h,
anon-fcn-validator.cc, anon-fcn-validator.h, bp-table.cc, bp-table.h,
comment-list.cc, comment-list.h, filepos.h, lex.h, lex.ll, oct-lvalue.cc,
oct-lvalue.h, oct-parse.yy, parse.h, profiler.cc, profiler.h,
pt-anon-scopes.cc, pt-anon-scopes.h, pt-arg-list.cc, pt-arg-list.h,
pt-args-block.cc, pt-args-block.h, pt-array-list.cc, pt-array-list.h,
pt-assign.cc, pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h,
pt-cbinop.cc, pt-cbinop.h, pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h,
pt-classdef.cc, pt-classdef.h, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc,
pt-const.h, pt-decl.cc, pt-decl.h, pt-eval.cc, pt-eval.h, pt-except.cc,
pt-except.h, pt-exp.cc, pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc,
pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc,
pt-mat.h, pt-misc.cc, pt-misc.h, pt-pr-code.cc, pt-pr-code.h, pt-select.cc,
pt-select.h, pt-spmd.cc, pt-spmd.h, pt-stmt.cc, pt-stmt.h, pt-tm-const.cc,
pt-tm-const.h, pt-unop.cc, pt-unop.h, pt-vm-eval.cc, pt-walk.cc, pt-walk.h,
pt.cc, pt.h, token.cc, token.h, Range.cc, Range.h, idx-vector.cc, idx-vector.h,
range-fwd.h, CollocWt.cc, CollocWt.h, aepbalance.cc, aepbalance.h, chol.cc,
chol.h, gepbalance.cc, gepbalance.h, gsvd.cc, gsvd.h, hess.cc, hess.h,
lo-mappers.cc, lo-mappers.h, lo-specfun.cc, lo-specfun.h, lu.cc, lu.h,
oct-convn.cc, oct-convn.h, oct-fftw.cc, oct-fftw.h, oct-norm.cc, oct-norm.h,
oct-rand.cc, oct-rand.h, oct-spparms.cc, oct-spparms.h, qr.cc, qr.h, qrp.cc,
qrp.h, randgamma.cc, randgamma.h, randmtzig.cc, randmtzig.h, randpoisson.cc,
randpoisson.h, schur.cc, schur.h, sparse-chol.cc, sparse-chol.h, sparse-lu.cc,
sparse-lu.h, sparse-qr.cc, sparse-qr.h, svd.cc, svd.h, child-list.cc,
child-list.h, dir-ops.cc, dir-ops.h, file-ops.cc, file-ops.h, file-stat.cc,
file-stat.h, lo-sysdep.cc, lo-sysdep.h, lo-sysinfo.cc, lo-sysinfo.h,
mach-info.cc, mach-info.h, oct-env.cc, oct-env.h, oct-group.cc, oct-group.h,
oct-password.cc, oct-password.h, oct-syscalls.cc, oct-syscalls.h, oct-time.cc,
oct-time.h, oct-uname.cc, oct-uname.h, action-container.cc, action-container.h,
base-list.h, cmd-edit.cc, cmd-edit.h, cmd-hist.cc, cmd-hist.h, f77-fcn.h,
file-info.cc, file-info.h, lo-array-errwarn.cc, lo-array-errwarn.h, lo-hash.cc,
lo-hash.h, lo-ieee.h, lo-regexp.cc, lo-regexp.h, lo-utils.cc, lo-utils.h,
oct-base64.cc, oct-base64.h, oct-glob.cc, oct-glob.h, oct-inttypes.h,
oct-mutex.cc, oct-mutex.h, oct-refcount.h, oct-shlib.cc, oct-shlib.h,
oct-sparse.cc, oct-sparse.h, oct-string.h, octave-preserve-stream-state.h,
pathsearch.cc, pathsearch.h, quit.cc, quit.h, unwind-prot.cc, unwind-prot.h,
url-transfer.cc, url-transfer.h : Use new macros to begin/end C++ namespaces.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 01 Dec 2022 14:23:45 -0800 |
parents | 509ba2cc30ec |
children | 597f3ee61a48 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30241
diff
changeset
|
3 // Copyright (C) 1994-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
523 | 25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21696
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
27 # include "config.h" |
523 | 28 #endif |
29 | |
1341 | 30 #include <cerrno> |
31 #include <cstdio> | |
32 #include <cstddef> | |
33 #include <cstdlib> | |
34 #include <cstring> | |
35 | |
5765 | 36 #include <sstream> |
1728 | 37 #include <string> |
38 | |
2926 | 39 #include "file-ops.h" |
40 #include "file-stat.h" | |
41 #include "glob-match.h" | |
42 #include "oct-env.h" | |
22155
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
43 #include "oct-glob.h" |
5777 | 44 #include "pathsearch.h" |
1755 | 45 #include "str-vec.h" |
46 | |
5102 | 47 #include "Cell.h" |
1355 | 48 #include "defun.h" |
1781 | 49 #include "dir-ops.h" |
1355 | 50 #include "error.h" |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21078
diff
changeset
|
51 #include "errwarn.h" |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
52 #include "event-manager.h" |
5640 | 53 #include "input.h" |
5832 | 54 #include "load-path.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21966
diff
changeset
|
55 #include "octave.h" |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20918
diff
changeset
|
56 #include "ovl.h" |
1355 | 57 #include "pager.h" |
58 #include "procstream.h" | |
59 #include "sysdep.h" | |
22094
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22089
diff
changeset
|
60 #include "interpreter.h" |
1449 | 61 #include "unwind-prot.h" |
523 | 62 #include "utils.h" |
1742 | 63 #include "variables.h" |
523 | 64 |
31605
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
31028
diff
changeset
|
65 OCTAVE_BEGIN_NAMESPACE(octave) |
29958
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
66 |
5640 | 67 // TRUE means we ask for confirmation before recursively removing a |
68 // directory tree. | |
69 static bool Vconfirm_recursive_rmdir = true; | |
70 | |
27408
9b19eec60931
move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents:
27395
diff
changeset
|
71 DEFMETHOD (cd, interp, args, nargout, |
9b19eec60931
move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents:
27395
diff
changeset
|
72 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
73 @deftypefn {} {} cd @var{dir} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
74 @deftypefnx {} {} cd |
27190
8ebe70b98e97
cd: only change to home directory if nargin and nargout are zero (bug #41275)
Michael C. Grant <mcg@cvxr.com>
parents:
26376
diff
changeset
|
75 @deftypefnx {} {@var{old_dir} =} cd |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
76 @deftypefnx {} {@var{old_dir} =} cd (@var{dir}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
77 @deftypefnx {} {} chdir @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
78 Change the current working directory to @var{dir}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
79 |
27190
8ebe70b98e97
cd: only change to home directory if nargin and nargout are zero (bug #41275)
Michael C. Grant <mcg@cvxr.com>
parents:
26376
diff
changeset
|
80 If called with no input or output arguments, the current directory is |
8ebe70b98e97
cd: only change to home directory if nargin and nargout are zero (bug #41275)
Michael C. Grant <mcg@cvxr.com>
parents:
26376
diff
changeset
|
81 changed to the user's home directory (@qcode{"~"}). |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
82 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
83 For example, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
84 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
85 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
86 cd ~/octave |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
87 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
88 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
89 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
90 changes the current working directory to @file{~/octave}. If the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
91 directory does not exist, an error message is printed and the working |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
92 directory is not changed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
93 |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
94 Programming Note: @code{chdir} is an alias for @code{cd} and can be used with |
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
95 all of the same calling formats. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
96 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
97 Compatibility Note: When called with no arguments, @sc{matlab} prints the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
98 present working directory rather than changing to the user's home directory. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
99 @seealso{pwd, mkdir, rmdir, dir, ls} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
100 @end deftypefn */) |
523 | 101 { |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
102 int nargin = args.length (); |
20884
f1b2a2dbc0e1
2015 Code Sprint: use ovl () in C++ files.
José Luis García Pallero <jgpallero@gmail.com>
parents:
20853
diff
changeset
|
103 |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
104 if (nargin > 1) |
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
105 print_usage (); |
523 | 106 |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
107 octave_value_list retval; |
1755 | 108 |
17397
0bf2fc8562c9
doc: Update documentation for file and directory functions.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
109 if (nargout > 0) |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
110 retval = octave_value (sys::env::get_current_directory ()); |
17397
0bf2fc8562c9
doc: Update documentation for file and directory functions.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
111 |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
112 if (nargin == 1) |
523 | 113 { |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
114 std::string dirname = args(0).xstring_value ("cd: DIR must be a string"); |
523 | 115 |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
116 if (! dirname.empty ()) |
27408
9b19eec60931
move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents:
27395
diff
changeset
|
117 interp.chdir (dirname); |
523 | 118 } |
27190
8ebe70b98e97
cd: only change to home directory if nargin and nargout are zero (bug #41275)
Michael C. Grant <mcg@cvxr.com>
parents:
26376
diff
changeset
|
119 else if (nargout == 0) |
523 | 120 { |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
121 std::string home_dir = sys::env::get_home_directory (); |
2926 | 122 |
17397
0bf2fc8562c9
doc: Update documentation for file and directory functions.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
123 if (! home_dir.empty ()) |
27408
9b19eec60931
move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents:
27395
diff
changeset
|
124 interp.chdir (home_dir); |
523 | 125 } |
126 | |
127 return retval; | |
128 } | |
129 | |
611 | 130 DEFALIAS (chdir, cd); |
131 | |
6482 | 132 DEFUN (pwd, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
133 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
134 @deftypefn {} {@var{dir} =} pwd () |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
135 Return the current working directory. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
136 @seealso{cd, dir, ls, mkdir, rmdir} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
137 @end deftypefn */) |
523 | 138 { |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
139 return ovl (sys::env::get_current_directory ()); |
523 | 140 } |
141 | |
1957 | 142 DEFUN (readdir, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
143 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
144 @deftypefn {} {@var{files} =} readdir (@var{dir}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
145 @deftypefnx {} {[@var{files}, @var{err}, @var{msg}] =} readdir (@var{dir}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
146 Return the names of files in the directory @var{dir} as a cell array of |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
147 strings. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
148 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
149 If an error occurs, return an empty cell array in @var{files}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
150 If successful, @var{err} is 0 and @var{msg} is an empty string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
151 Otherwise, @var{err} is nonzero and @var{msg} contains a system-dependent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
152 error message. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
153 @seealso{ls, dir, glob, what} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
154 @end deftypefn */) |
1389 | 155 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
156 if (args.length () != 1) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
157 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
158 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
159 std::string dirname = args(0).xstring_value ("readdir: DIR must be a string"); |
2669 | 160 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
161 octave_value_list retval = ovl (Cell (), -1.0, ""); |
20581
fd0efcdb3718
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20558
diff
changeset
|
162 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
163 dirname = sys::file_ops::tilde_expand (dirname); |
21897
39afd54c2981
perform tilde expansion for more file and directory functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
164 |
25516
8945a6a6c0eb
Add Unicode support for getting directory listing in Windows (bug #49118).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25407
diff
changeset
|
165 string_vector dirlist; |
8945a6a6c0eb
Add Unicode support for getting directory listing in Windows (bug #49118).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25407
diff
changeset
|
166 std::string msg; |
1389 | 167 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
168 if (sys::get_dirlist (dirname, dirlist, msg)) |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
169 { |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
170 retval(0) = Cell (dirlist.sort ()); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
171 retval(1) = 0.0; |
1389 | 172 } |
173 else | |
25516
8945a6a6c0eb
Add Unicode support for getting directory listing in Windows (bug #49118).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25407
diff
changeset
|
174 retval(2) = msg; |
1389 | 175 |
1401 | 176 return retval; |
177 } | |
178 | |
17397
0bf2fc8562c9
doc: Update documentation for file and directory functions.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
179 // FIXME: should maybe also allow second arg to specify mode? |
0bf2fc8562c9
doc: Update documentation for file and directory functions.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
180 // OTOH, that might cause trouble with compatibility later... |
1401 | 181 |
21696
b8c05cc524ef
mkdir.m: new script to implement recursive mkdir (bug #30650).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
182 DEFUN (__mkdir__, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
183 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
184 @deftypefn {} {} __mkdir__ (@var{dir}) |
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
185 @deftypefnx {} {} __mkdir__ (@var{parent}, @var{dir}) |
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
186 @deftypefnx {} {[@var{status}, @var{msg}, @var{msgid}] =} __mkdir__ (@dots{}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
187 Internal function called by mkdir.m. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
188 @seealso{mkdir, rmdir, pwd, cd, umask} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
189 @end deftypefn */) |
1401 | 190 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
191 int nargin = args.length (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
192 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
193 if (nargin < 1 || nargin > 2) |
21696
b8c05cc524ef
mkdir.m: new script to implement recursive mkdir (bug #30650).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
194 print_usage ("mkdir"); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
195 |
6187 | 196 std::string dirname; |
197 | |
198 if (nargin == 2) | |
1401 | 199 { |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20667
diff
changeset
|
200 std::string parent = args(0).xstring_value ("mkdir: PARENT must be a string"); |
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20667
diff
changeset
|
201 std::string dir = args(1).xstring_value ("mkdir: DIR must be a string"); |
1401 | 202 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
203 dirname = sys::file_ops::concat (parent, dir); |
6187 | 204 } |
6200 | 205 else if (nargin == 1) |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20667
diff
changeset
|
206 dirname = args(0).xstring_value ("mkdir: DIR must be a string"); |
6187 | 207 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
208 dirname = sys::file_ops::tilde_expand (dirname); |
6187 | 209 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
210 sys::file_stat fs (dirname); |
7970
b6d4c644b4b6
Fmkdir: improve compatibility
John W. Eaton <jwe@octave.org>
parents:
7272
diff
changeset
|
211 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
212 if (fs && fs.is_dir ()) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
213 { |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
214 // For Matlab compatibility, return true when directory already exists. |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
215 return ovl (true, "directory exists", "mkdir"); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
216 } |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
217 else |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
218 { |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
219 std::string msg; |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
220 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
221 int status = sys::mkdir (dirname, 0777, msg); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
222 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
223 if (status < 0) |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
224 return ovl (false, msg, "mkdir"); |
6187 | 225 else |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
226 return ovl (true, "", ""); |
1401 | 227 } |
228 } | |
229 | |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
230 DEFMETHODX ("rmdir", Frmdir, interp, args, nargout, |
25407
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
231 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
232 @deftypefn {} {} rmdir @var{dir} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
233 @deftypefnx {} {} rmdir (@var{dir}, "s") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
234 @deftypefnx {} {[@var{status}, @var{msg}, @var{msgid}] =} rmdir (@dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
235 Remove the directory named @var{dir}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
236 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
237 If the optional second parameter is supplied with value @qcode{"s"}, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
238 recursively remove all subdirectories as well. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
239 |
30241
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
240 If successful, @var{status} is logical 1, and @var{msg}, @var{msgid} are empty |
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
241 character strings (""). Otherwise, @var{status} is logical 0, @var{msg} |
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
242 contains a system-dependent error message, and @var{msgid} contains a unique |
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
243 message identifier. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
244 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
245 @seealso{mkdir, confirm_recursive_rmdir, pwd} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
246 @end deftypefn */) |
1401 | 247 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
248 int nargin = args.length (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
249 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
250 if (nargin < 1 || nargin > 2) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
251 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
252 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
253 std::string dirname = args(0).xstring_value ("rmdir: DIR must be a string"); |
5476 | 254 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
255 std::string fulldir = sys::file_ops::tilde_expand (dirname); |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
256 octave_value_list retval; |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
257 int status = -1; |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
258 std::string msg; |
1401 | 259 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
260 event_manager& evmgr = interp.get_event_manager (); |
27261
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27190
diff
changeset
|
261 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
262 if (nargin == 2) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
263 { |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
264 if (args(1).string_value () != "s") |
23803
90689bdbe048
Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents:
23743
diff
changeset
|
265 error (R"(rmdir: second argument must be "s" for recursive removal)"); |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
266 |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
267 bool doit = true; |
20581
fd0efcdb3718
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20558
diff
changeset
|
268 |
27301
a2b1ba6c92d5
eliminate unnecessary application::interative function
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
269 if (interp.interactive () |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
270 && ! application::forced_interactive () |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
21966
diff
changeset
|
271 && Vconfirm_recursive_rmdir) |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
272 { |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
273 input_system& input_sys = interp.get_input_system (); |
25407
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
274 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
275 std::string prompt = "remove entire contents of " + fulldir + "? "; |
5640 | 276 |
25407
ab10403a0b50
new input_system class to manage user input for the interpreter
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
277 doit = input_sys.yes_or_no (prompt); |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
278 } |
5640 | 279 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
280 if (doit) |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
281 { |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
282 evmgr.file_remove (fulldir, ""); |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
283 status = sys::recursive_rmdir (fulldir, msg); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
284 } |
1401 | 285 } |
1389 | 286 else |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
287 { |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
288 evmgr.file_remove (fulldir, ""); |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
289 status = sys::rmdir (fulldir, msg); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
290 } |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
291 |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
292 evmgr.file_renamed (status >= 0); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
293 |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
294 if (nargout == 0) |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
295 { |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
296 if (status < 0) |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
297 error ("rmdir: operation failed: %s", msg.c_str ()); |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
298 } |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
299 else |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
300 { |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
301 if (status < 0) |
30241
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
302 retval = ovl (false, msg, "rmdir"); |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
303 else |
30241
ba4aebad10d1
Return logical status variable from file functions for Matlab compatibility.
Rik <rik@octave.org>
parents:
30001
diff
changeset
|
304 retval = ovl (true, "", ""); |
28087
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
305 } |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
306 |
9cb04a9e81ec
rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
307 return retval; |
1401 | 308 } |
309 | |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
310 DEFUNX ("link", Flink, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
311 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
312 @deftypefn {} {} link @var{old} @var{new} |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
313 @deftypefnx {} {[@var{status}, @var{msg}] =} link (@var{old}, @var{new}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
314 Create a new link (also known as a hard link) to an existing file. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
315 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
316 If successful, @var{status} is 0 and @var{msg} is an empty string. |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
317 Otherwise, @var{status} is -1 and @var{msg} contains a system-dependent |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
318 error message. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
319 @seealso{symlink, unlink, readlink, lstat} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
320 @end deftypefn */) |
3710 | 321 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
322 if (args.length () != 2) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
323 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
324 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
325 std::string from = args(0).xstring_value ("link: OLD must be a string"); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
326 std::string to = args(1).xstring_value ("link: NEW must be a string"); |
3710 | 327 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
328 from = sys::file_ops::tilde_expand (from); |
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
329 to = sys::file_ops::tilde_expand (to); |
21897
39afd54c2981
perform tilde expansion for more file and directory functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
330 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
331 octave_value_list retval; |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
332 std::string msg; |
3710 | 333 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
334 int status = sys::link (from, to, msg); |
3710 | 335 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
336 if (nargout == 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
337 { |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
338 if (status < 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
339 error ("link: operation failed: %s", msg.c_str ()); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
340 } |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
341 else |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
342 { |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
343 if (status < 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
344 retval = ovl (-1.0, msg); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
345 else |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
346 retval = ovl (0.0, ""); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
347 } |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
348 |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
349 return retval; |
3710 | 350 } |
351 | |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
352 DEFUNX ("symlink", Fsymlink, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
353 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
354 @deftypefn {} {} symlink @var{old} @var{new} |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
355 @deftypefnx {} {[@var{status}, @var{msg}] =} symlink (@var{old}, @var{new}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
356 Create a symbolic link @var{new} which contains the string @var{old}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
357 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
358 If successful, @var{status} is 0 and @var{msg} is an empty string. |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
359 Otherwise, @var{status} is -1 and @var{msg} contains a system-dependent |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
360 error message. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
361 @seealso{link, unlink, readlink, lstat} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
362 @end deftypefn */) |
3710 | 363 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
364 if (args.length () != 2) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
365 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
366 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
367 std::string from = args(0).xstring_value ("symlink: OLD must be a string"); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
368 std::string to = args(1).xstring_value ("symlink: NEW must be a string"); |
3710 | 369 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
370 from = sys::file_ops::tilde_expand (from); |
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
371 to = sys::file_ops::tilde_expand (to); |
21897
39afd54c2981
perform tilde expansion for more file and directory functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
372 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
373 octave_value_list retval; |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
374 std::string msg; |
3710 | 375 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
376 int status = sys::symlink (from, to, msg); |
3710 | 377 |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
378 if (nargout == 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
379 { |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
380 if (status < 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
381 error ("symlink: operation failed: %s", msg.c_str ()); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
382 } |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
383 else |
28096
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
384 { |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
385 if (status < 0) |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
386 retval = ovl (-1.0, msg); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
387 else |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
388 retval = ovl (0.0, ""); |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
389 } |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
390 |
e8246b4a5459
link, symlink: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28087
diff
changeset
|
391 return retval; |
3710 | 392 } |
393 | |
10197
4d433bd2d4dc
attempt to avoid trouble with gnulib #defines in a consistent way
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
394 DEFUNX ("readlink", Freadlink, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
395 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
396 @deftypefn {} {@var{result} =} readlink @var{symlink} |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
397 @deftypefnx {} {[@var{result}, @var{err}, @var{msg}] =} readlink (@var{symlink}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
398 Read the value of the symbolic link @var{symlink}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
399 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
400 If successful, @var{result} contains the contents of the symbolic link |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
401 @var{symlink}, @var{err} is 0, and @var{msg} is an empty string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
402 Otherwise, @var{err} is nonzero and @var{msg} contains a system-dependent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
403 error message. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
404 @seealso{lstat, symlink, link, unlink, delete} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
405 @end deftypefn */) |
3710 | 406 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
407 if (args.length () != 1) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
408 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
409 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
410 std::string symlink = args(0).xstring_value ("readlink: SYMLINK must be a string"); |
20581
fd0efcdb3718
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20558
diff
changeset
|
411 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
412 symlink = sys::file_ops::tilde_expand (symlink); |
21897
39afd54c2981
perform tilde expansion for more file and directory functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
413 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
414 std::string result, msg; |
3710 | 415 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
416 int status = sys::readlink (symlink, result, msg); |
3710 | 417 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
418 if (status < 0) |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
419 return ovl ("", -1.0, msg); |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
420 else |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
421 return ovl (result, status, ""); |
3710 | 422 } |
423 | |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
424 DEFMETHODX ("rename", Frename, interp, args, nargout, |
27261
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27190
diff
changeset
|
425 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
426 @deftypefn {} {} rename @var{old} @var{new} |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
427 @deftypefnx {} {[@var{status}, @var{msg}] =} rename (@var{old}, @var{new}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
428 Change the name of file @var{old} to @var{new}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
429 |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
430 If successful, @var{status} is 0 and @var{msg} is an empty string. |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
431 Otherwise, @var{status} is -1 and @var{msg} contains a system-dependent |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
432 error message. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
433 @seealso{movefile, copyfile, ls, dir} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
434 @end deftypefn */) |
1401 | 435 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
436 if (args.length () != 2) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
437 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
438 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
439 std::string from = args(0).xstring_value ("rename: OLD must be a string"); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
440 std::string to = args(1).xstring_value ("rename: NEW must be a string"); |
1728 | 441 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
442 from = sys::file_ops::tilde_expand (from); |
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
443 to = sys::file_ops::tilde_expand (to); |
21897
39afd54c2981
perform tilde expansion for more file and directory functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
444 |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
445 octave_value_list retval; |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
446 std::string msg; |
1728 | 447 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
448 event_manager& evmgr = interp.get_event_manager (); |
27261
dccdc3b001a2
eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents:
27190
diff
changeset
|
449 |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
450 evmgr.file_remove (from, to); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
451 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
452 int status = sys::rename (from, to, msg); |
2669 | 453 |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
454 evmgr.file_renamed (status >= 0); |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
455 |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
456 if (nargout == 0) |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
457 { |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
458 if (status < 0) |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
459 error ("rename: operation failed: %s", msg.c_str ()); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
460 } |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
461 else |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
462 { |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
463 if (status < 0) |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
464 retval = ovl (-1.0, msg); |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
465 else |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
466 retval = ovl (0.0, ""); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25516
diff
changeset
|
467 } |
28099
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
468 |
ce660f584f00
rename: throw error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents:
28097
diff
changeset
|
469 return retval; |
1389 | 470 } |
471 | |
2495 | 472 DEFUN (glob, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
473 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
474 @deftypefn {} {@var{cstr} =} glob (@var{pattern}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
475 Given an array of pattern strings (as a char array or a cell array) in |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
476 @var{pattern}, return a cell array of filenames that match any of |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
477 them, or an empty cell array if no patterns match. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
478 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
479 The pattern strings are interpreted as filename globbing patterns (as they |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
480 are used by Unix shells). |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
481 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
482 Within a pattern |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
483 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
484 @table @code |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
485 @item * |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
486 matches any string, including the null string, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
487 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
488 @item ? |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
489 matches any single character, and |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
490 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
491 @item [@dots{}] |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
492 matches any of the enclosed characters. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
493 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
494 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
495 Tilde expansion is performed on each of the patterns before looking for |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
496 matching filenames. For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
497 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
498 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
499 ls |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
500 @result{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
501 file1 file2 file3 myfile1 myfile1b |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
502 glob ("*file1") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
503 @result{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
504 @{ |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
505 [1,1] = file1 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
506 [2,1] = myfile1 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
507 @} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
508 glob ("myfile?") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
509 @result{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
510 @{ |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
511 [1,1] = myfile1 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
512 @} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
513 glob ("file[12]") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
514 @result{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
515 @{ |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
516 [1,1] = file1 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
517 [2,1] = file2 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
518 @} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
519 @end example |
28869
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
520 |
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
521 Note: On Windows, patterns that contain non-ASCII characters are not |
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
522 supported. |
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
523 |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
524 @seealso{ls, dir, readdir, what} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
525 @end deftypefn */) |
2495 | 526 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
527 if (args.length () != 1) |
5823 | 528 print_usage (); |
2495 | 529 |
28869
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
530 string_vector pat |
4e64416772f1
Use Windows wide character API for __wglob__ (bug #59231).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28099
diff
changeset
|
531 = args(0).xstring_vector_value ("glob: PATTERN must be a string"); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
532 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
533 glob_match pattern (sys::file_ops::tilde_expand (pat)); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
534 |
21127
df7891224709
maint: Use "return ovl (...)" in DEFUN macros.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
535 return ovl (Cell (pattern.glob ())); |
2495 | 536 } |
537 | |
30979
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
538 /* |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
539 %!test |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
540 %! tmpdir = tempname (); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
541 %! filename = {"file1", "file2", "file3", "myfile1", "myfile1b"}; |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
542 %! if (mkdir (tmpdir)) |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
543 %! cwd = pwd (); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
544 %! cd (tmpdir); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
545 %! if (strcmp (canonicalize_file_name (pwd), canonicalize_file_name (tmpdir))) |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
546 %! a = 0; |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
547 %! for n = 1:5 |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
548 %! save (filename{n}, "a"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
549 %! endfor |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
550 %! else |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
551 %! sts = rmdir (tmpdir); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
552 %! error ("Couldn't change to temporary directory"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
553 %! endif |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
554 %! else |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
555 %! error ("Couldn't create temporary directory"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
556 %! endif |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
557 %! result1 = glob ("*file1"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
558 %! result2 = glob ("myfile?"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
559 %! result3 = glob ("file[12]"); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
560 %! for n = 1:5 |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
561 %! delete (filename{n}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
562 %! endfor |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
563 %! cd (cwd); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
564 %! sts = rmdir (tmpdir); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
565 %! assert (result1, {"file1"; "myfile1"}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
566 %! assert (result2, {"myfile1"}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
567 %! assert (result3, {"file1"; "file2"}); |
31027
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
568 |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
569 ## Check backslash handling on Windows |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
570 %!testif ; ispc () |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
571 %! win_dir = getenv ("WINDIR"); |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
572 %! assert (glob (win_dir), {win_dir}); |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
573 %! assert (glob ([win_dir, filesep]), {[win_dir, filesep]}); |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
574 %! win_dir2 = strrep(win_dir, filesep, '/'); |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
575 %! assert (glob (win_dir2), {win_dir}); |
72786e150001
oct-glob.cc: Fix yet another typo in 8475b51b990c.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31018
diff
changeset
|
576 %! assert (glob ([win_dir2, '/']), {[win_dir, filesep]}); |
30979
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
577 */ |
22155
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
578 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
579 DEFUN (__wglob__, args, , |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
580 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
581 @deftypefn {} {@var{cstr} =} __wglob__ (@var{pattern}) |
22155
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
582 Windows-like glob for dir. |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
583 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
584 Given an array of pattern strings (as a char array or a cell array) in |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
585 @var{pattern}, return a cell array of filenames that match any of |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
586 them, or an empty cell array if no patterns match. |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
587 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
588 The pattern strings are interpreted as filename globbing patterns |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
589 (roughly as they are used by Windows dir). |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
590 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
591 Within a pattern |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
592 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
593 @table @code |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
594 @item * |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
595 matches any string, including the null string, |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
596 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
597 @item ? |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
598 matches any single character, and |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
599 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
600 @item *.* |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
601 matches any string, even if no . is present. |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
602 @end table |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
603 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
604 Tilde expansion is performed on each of the patterns before looking for |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
605 matching filenames. For example: |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
606 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
607 @example |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
608 ls |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
609 @result{} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
610 file1 file2 file3 myfile1 myfile1b |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
611 glob ("*file1") |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
612 @result{} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
613 @{ |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
614 [1,1] = file1 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
615 [2,1] = myfile1 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
616 @} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
617 glob ("myfile?") |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
618 @result{} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
619 @{ |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
620 [1,1] = myfile1 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
621 @} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
622 glob ("*.*") |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
623 @result{} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
624 @{ |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
625 [1,1] = file1 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
626 [2,1] = file2 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
627 [3,1] = file3 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
628 [4,1] = myfile1 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
629 [5,1] = myfile1b |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
630 @} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
631 @end example |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
632 @seealso{glob, dir} |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
633 @end deftypefn */) |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
634 { |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
635 if (args.length () == 0) |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
636 return ovl (); |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
637 |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
638 string_vector pat = args(0).string_vector_value (); |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
639 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
640 string_vector pattern (sys::file_ops::tilde_expand (pat)); |
22155
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
641 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
642 return ovl (Cell (sys::windows_glob (pattern))); |
22155
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
643 } |
289409b2992d
Allow dir to accept [ and ] in arguments. (bug #47950)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
644 |
10335
9dd04a06410e
document glob patterns
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
10315
diff
changeset
|
645 /* |
30979
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
646 %!test <*62414> |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
647 %! ## get name of current directory and one file in it |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
648 %! [~, curr_dir, ext] = fileparts (pwd ()); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
649 %! curr_dir = [curr_dir, ext]; |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
650 %! files = dir (); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
651 %! if (numel (files) < 3) |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
652 %! return; |
14429
eff4a5933e28
Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14366
diff
changeset
|
653 %! endif |
30979
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
654 %! ## check some patterns including "." and ".." |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
655 %! file_in_pwd = files(3).name; |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
656 %! assert (__wglob__ (file_in_pwd), {file_in_pwd}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
657 %! glob_pattern = fullfile (".", file_in_pwd); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
658 %! assert (__wglob__ (glob_pattern), {glob_pattern}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
659 %! glob_pattern = fullfile ("..", curr_dir, file_in_pwd); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
660 %! assert (__wglob__ (glob_pattern), {glob_pattern}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
661 %! glob_pattern = fullfile ("..", curr_dir, "..", ".", curr_dir, ".", file_in_pwd); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
662 %! assert (__wglob__ (glob_pattern), {glob_pattern}); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
663 |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
664 %!test <*62414> |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
665 %! old_dir = cd (fileparts (which ("plot.m"))); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
666 %! unwind_protect |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
667 %! assert (__wglob__ (fullfile (".", "*.m")), ... |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
668 %! fullfile (".", __wglob__ ("*.m"))); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
669 %! unwind_protect_cleanup |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
670 %! cd (old_dir); |
302faf5bc425
__wglob__: Correctly handle "." and ".." in patterns on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30564
diff
changeset
|
671 %! end_unwind_protect |
31016
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
672 |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
673 ## retain trailing file separator |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
674 %!test <*62414> |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
675 %! old_dir = cd (fileparts (which ("plot.m"))); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
676 %! unwind_protect |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
677 %! assert (__wglob__ ("private"), {"private"}); |
31018
4f2f81989d50
dirfns.cc: Fix typos in BIST.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31016
diff
changeset
|
678 %! assert (__wglob__ ("private/"), {["private", filesep()]}); |
4f2f81989d50
dirfns.cc: Fix typos in BIST.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31016
diff
changeset
|
679 %! assert (__wglob__ ("private///"), {["private", filesep()]}); |
31016
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
680 %! assert (__wglob__ ("./private"), {fullfile(".", "private")}); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
681 %! assert (__wglob__ ("./private/"), ... |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
682 %! {[fullfile(".", "private"), filesep()]}); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
683 %! assert (__wglob__ ("./private///"), ... |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
684 %! {[fullfile(".", "private"), filesep()]}); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
685 %! assert (__wglob__ (["./p*","/"]), ... |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
686 %! {[fullfile(".", "private"), filesep()]}); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
687 %! unwind_protect_cleanup |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
688 %! cd (old_dir); |
8475b51b990c
__wglob__: Retain trailing file separator on Windows (bug #62414).
Markus Mützel <markus.muetzel@gmx.de>
parents:
30979
diff
changeset
|
689 %! end_unwind_protect |
10335
9dd04a06410e
document glob patterns
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
10315
diff
changeset
|
690 */ |
9dd04a06410e
document glob patterns
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
10315
diff
changeset
|
691 |
19119 | 692 DEFUN (__fnmatch__, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
693 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
694 @deftypefn {} {@var{TF} =} fnmatch (@var{pattern}, @var{string}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
695 Return true or false for each element of @var{string} that matches any of |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
696 the elements of the string array @var{pattern}, using the rules of |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
697 filename pattern matching. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
698 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
699 For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
700 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
701 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
702 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
703 fnmatch ("a*b", @{"ab"; "axyzb"; "xyzab"@}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
704 @result{} [ 1; 1; 0 ] |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
705 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
706 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
707 @seealso{glob, regexp} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
708 @end deftypefn */) |
2496 | 709 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
710 if (args.length () != 2) |
5823 | 711 print_usage (); |
2496 | 712 |
20990
fc9cca99b2de
Deprecate all_strings, replace with string_vector_value.
Rik <rik@octave.org>
parents:
20962
diff
changeset
|
713 string_vector pat = args(0).string_vector_value (); |
fc9cca99b2de
Deprecate all_strings, replace with string_vector_value.
Rik <rik@octave.org>
parents:
20962
diff
changeset
|
714 string_vector str = args(1).string_vector_value (); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
715 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
716 glob_match pattern (sys::file_ops::tilde_expand (pat)); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
717 |
21078
49852ff04747
maint: Remove unnecessary declarations of retval.
Rik <rik@octave.org>
parents:
20990
diff
changeset
|
718 return ovl (pattern.match (str)); |
2496 | 719 } |
720 | |
5777 | 721 DEFUN (filesep, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
722 doc: /* -*- texinfo -*- |
30888
32d2b6604a9f
doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents:
30588
diff
changeset
|
723 @deftypefn {} {@var{sep} =} filesep () |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
724 @deftypefnx {} {} filesep ("all") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
725 Return the system-dependent character used to separate directory names. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
726 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
727 If @qcode{"all"} is given, the function returns all valid file separators |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
728 in the form of a string. The list of file separators is system-dependent. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
729 It is @samp{/} (forward slash) under UNIX or @w{Mac OS X}, @samp{/} and |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
730 @samp{\} (forward and backward slashes) under Windows. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
731 @seealso{pathsep} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
732 @end deftypefn */) |
5777 | 733 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
734 int nargin = args.length (); |
5777 | 735 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
736 if (nargin > 1) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
737 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
738 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
739 octave_value retval; |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
740 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
741 if (nargin == 0) |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
742 retval = sys::file_ops::dir_sep_str (); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
743 else |
8317
135c0e7d7802
Extend filesep functionality by allowing to return all valid file separators
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8109
diff
changeset
|
744 { |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20667
diff
changeset
|
745 std::string s = args(0).xstring_value ("filesep: argument must be a string"); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
746 if (s != "all") |
23803
90689bdbe048
Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents:
23743
diff
changeset
|
747 error (R"(filesep: argument must be "all")"); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
748 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
749 retval = sys::file_ops::dir_sep_chars (); |
8317
135c0e7d7802
Extend filesep functionality by allowing to return all valid file separators
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8109
diff
changeset
|
750 } |
5777 | 751 |
752 return retval; | |
753 } | |
754 | |
23743
e919cc8d9d92
don't use singleton pattern in pathsearch class; treat pathsep as constant
John W. Eaton <jwe@octave.org>
parents:
23445
diff
changeset
|
755 DEFUN (pathsep, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
756 doc: /* -*- texinfo -*- |
24986
0b9e7fcaab91
doc: grammarcheck docstrings in C++ files ahead of 4.4 release.
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
757 @deftypefn {} {@var{val} =} pathsep () |
23743
e919cc8d9d92
don't use singleton pattern in pathsearch class; treat pathsep as constant
John W. Eaton <jwe@octave.org>
parents:
23445
diff
changeset
|
758 Query the character used to separate directories in a path. |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
759 @seealso{filesep} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
760 @end deftypefn */) |
5777 | 761 { |
28946
ef2b0a00daef
maint: Don't declare nargin in C++ files if it is used only once.
Rik <rik@octave.org>
parents:
28894
diff
changeset
|
762 if (args.length () > 0) |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
763 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20752
diff
changeset
|
764 |
29961
7d6709900da7
eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents:
29958
diff
changeset
|
765 return ovl (directory_path::path_sep_str ()); |
5777 | 766 } |
767 | |
5794 | 768 DEFUN (confirm_recursive_rmdir, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
769 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
770 @deftypefn {} {@var{val} =} confirm_recursive_rmdir () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
771 @deftypefnx {} {@var{old_val} =} confirm_recursive_rmdir (@var{new_val}) |
30588
ed17822e7662
doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
772 @deftypefnx {} {@var{old_val} =} confirm_recursive_rmdir (@var{new_val}, "local") |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
773 Query or set the internal variable that controls whether Octave |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
774 will ask for confirmation before recursively removing a directory tree. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
775 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
776 When called from inside a function with the @qcode{"local"} option, the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
777 variable is changed locally for the function and any subroutines it calls. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
778 The original variable value is restored when exiting the function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
779 @seealso{rmdir} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
780 @end deftypefn */) |
5640 | 781 { |
30001
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
782 return set_internal_variable (Vconfirm_recursive_rmdir, args, nargout, |
428cccc75cc9
move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents:
29961
diff
changeset
|
783 "confirm_recursive_rmdir"); |
4264 | 784 } |
29958
32c3a5805893
move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
785 |
31605
e88a07dec498
maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents:
31028
diff
changeset
|
786 OCTAVE_END_NAMESPACE(octave) |