Mercurial > octave
annotate libinterp/corefcn/sysdep.cc @ 24710:a979bb895b64
avoid reinterpret_cast on function pointer in previous change
* sysdep.cc (reg_close_key_wrapper): New function.
(get_regkey_value): Use it with unwind_protect instead of casting
function pointer.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 08 Feb 2018 16:20:41 -0500 |
parents | 6a6108db3a6b |
children | d2c727a438ab |
rev | line source |
---|---|
1 | 1 /* |
2 | |
23219
3ac9f9ecfae5
maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents:
23083
diff
changeset
|
3 Copyright (C) 1993-2017 John W. Eaton |
1 | 4 |
5 This file is part of Octave. | |
6 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24442
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24442
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
10 (at your option) any later version. |
1 | 11 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
15 GNU General Public License for more details. |
1 | 16 |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24442
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
1 | 20 |
21 */ | |
22 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
24 # include "config.h" |
1 | 25 #endif |
26 | |
23662
bd77ab816e43
eliminate obsolete file lo-math.h
John W. Eaton <jwe@octave.org>
parents:
23575
diff
changeset
|
27 #include <cmath> |
1343 | 28 #include <cstddef> |
29 | |
3503 | 30 #include <iostream> |
1728 | 31 #include <string> |
32 | |
1430 | 33 #if defined (HAVE_TERMIOS_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
34 # include <termios.h> |
1430 | 35 #elif defined (HAVE_TERMIO_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
36 # include <termio.h> |
1430 | 37 #elif defined (HAVE_SGTTY_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
38 # include <sgtty.h> |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
39 #endif |
4067 | 40 |
41 #if defined (HAVE_CONIO_H) | |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
42 # include <conio.h> |
1430 | 43 #endif |
44 | |
3248 | 45 #if defined (HAVE_SYS_IOCTL_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
46 # include <sys/ioctl.h> |
3248 | 47 #endif |
48 | |
1463 | 49 #if defined (HAVE_FLOATINGPOINT_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
50 # include <floatingpoint.h> |
1463 | 51 #endif |
52 | |
2508 | 53 #if defined (HAVE_IEEEFP_H) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
54 # include <ieeefp.h> |
2508 | 55 #endif |
56 | |
21554
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
57 #if defined (HAVE_OMP_H) |
21556 | 58 # include <omp.h> |
21554
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
59 #endif |
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
60 |
2926 | 61 #include "cmd-edit.h" |
62 #include "file-ops.h" | |
2893 | 63 #include "lo-mappers.h" |
2317 | 64 #include "mach-info.h" |
2926 | 65 #include "oct-env.h" |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21888
diff
changeset
|
66 #include "unistd-wrappers.h" |
21888
00f1249f2483
create wrappers for some gnulib functions
John W. Eaton <jwe@octave.org>
parents:
21782
diff
changeset
|
67 #include "unsetenv-wrapper.h" |
1769 | 68 |
22097
5ad67277b007
include builtin-defun-decls.h as needed
John W. Eaton <jwe@octave.org>
parents:
22096
diff
changeset
|
69 #include "builtin-defun-decls.h" |
6208 | 70 #include "Cell.h" |
1352 | 71 #include "defun.h" |
72 #include "error.h" | |
21115
629643522cc0
include errwarn.h in all files that use gripe_disabled_feature
John W. Eaton <jwe@octave.org>
parents:
21109
diff
changeset
|
73 #include "errwarn.h" |
529 | 74 #include "input.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
75 #include "octave.h" |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
76 #include "ov.h" |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20939
diff
changeset
|
77 #include "ovl.h" |
3234 | 78 #include "pager.h" |
6419 | 79 #include "parse.h" |
5770 | 80 #include "sighandlers.h" |
1352 | 81 #include "sysdep.h" |
22094
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22089
diff
changeset
|
82 #include "interpreter.h" |
529 | 83 #include "utils.h" |
6598 | 84 #include "file-stat.h" |
529 | 85 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
86 #if ! defined (STDIN_FILENO) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
87 # define STDIN_FILENO 1 |
529 | 88 #endif |
444 | 89 |
9441
160c564d5d25
initialize floating point values properly for NetBSD systems
Aleksej Saushev <asau@inbox.ru>
parents:
9411
diff
changeset
|
90 #if defined (__386BSD__) || defined (__FreeBSD__) || defined (__NetBSD__) |
2508 | 91 static void |
92 BSD_init (void) | |
93 { | |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
94 # if defined (HAVE_FLOATINGPOINT_H) |
2508 | 95 // Disable trapping on common exceptions. |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
96 # if ! defined (FP_X_DNML) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
97 # define FP_X_DNML 0 |
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
98 # endif |
2508 | 99 fpsetmask (~(FP_X_OFL|FP_X_INV|FP_X_DZ|FP_X_DNML|FP_X_UFL|FP_X_IMP)); |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21115
diff
changeset
|
100 # endif |
2508 | 101 } |
102 #endif | |
103 | |
22019
2d8e9bdf5683
Dont use OCTAVE_USE_WINDOWS_API for w32_XXXX function definitions (Bug #48352)
John Donoghue
parents:
21989
diff
changeset
|
104 #if defined (__MINGW32__) || defined (_MSC_VER) |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
105 |
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
106 #define WIN32_LEAN_AND_MEAN |
21949
baeffde5c87d
fix build for Windows systems
John W. Eaton <jwe@octave.org>
parents:
21910
diff
changeset
|
107 #include <windows.h> |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
108 #include <tlhelp32.h> |
21949
baeffde5c87d
fix build for Windows systems
John W. Eaton <jwe@octave.org>
parents:
21910
diff
changeset
|
109 #include <shellapi.h> |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
110 |
6080 | 111 static void |
112 w32_set_octave_home (void) | |
113 { | |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
114 std::string bin_dir; |
6080 | 115 |
13885
2f42a7b0cf94
Fix MinGW compilation problem with tlhelp32.h
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13771
diff
changeset
|
116 HANDLE h = CreateToolhelp32Snapshot (TH32CS_SNAPMODULE |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
117 #if defined (TH32CS_SNAPMODULE32) |
13885
2f42a7b0cf94
Fix MinGW compilation problem with tlhelp32.h
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13771
diff
changeset
|
118 | TH32CS_SNAPMODULE32 |
2f42a7b0cf94
Fix MinGW compilation problem with tlhelp32.h
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13771
diff
changeset
|
119 #endif |
2f42a7b0cf94
Fix MinGW compilation problem with tlhelp32.h
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13771
diff
changeset
|
120 , 0); |
6080 | 121 |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
122 if (h != INVALID_HANDLE_VALUE) |
6080 | 123 { |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
124 MODULEENTRY32 mod_info; |
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
125 |
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
126 ZeroMemory (&mod_info, sizeof (mod_info)); |
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
127 mod_info.dwSize = sizeof (mod_info); |
13751
be7ff59cbc7a
Fix octinterp DLL searching on Win32.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13282
diff
changeset
|
128 |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
129 if (Module32First (h, &mod_info)) |
14445 | 130 { |
131 do | |
132 { | |
133 std::string mod_name (mod_info.szModule); | |
6080 | 134 |
14445 | 135 if (mod_name.find ("octinterp") != std::string::npos) |
136 { | |
137 bin_dir = mod_info.szExePath; | |
23812
057a894914df
Use C++11 string fcns back() and pop_back() to simplify code.
Rik <rik@octave.org>
parents:
23809
diff
changeset
|
138 if (! bin_dir.empty () && bin_dir.back () != '\\') |
057a894914df
Use C++11 string fcns back() and pop_back() to simplify code.
Rik <rik@octave.org>
parents:
23809
diff
changeset
|
139 bin_dir.push_back ('\\'); |
14445 | 140 break; |
141 } | |
142 } | |
143 while (Module32Next (h, &mod_info)); | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
144 } |
13771
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
145 |
80b30e186b73
[Win32] Use Toolhelp32 APi to find octinterp module path.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13751
diff
changeset
|
146 CloseHandle (h); |
6080 | 147 } |
148 | |
149 if (! bin_dir.empty ()) | |
150 { | |
23804
8057d3f0673d
Use C++11 raw string literals to avoid escaping backslashes in strings.
Rik <rik@octave.org>
parents:
23746
diff
changeset
|
151 size_t pos = bin_dir.rfind (R"(\bin\)"); |
6080 | 152 |
8021 | 153 if (pos != std::string::npos) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
154 octave::sys::env::putenv ("OCTAVE_HOME", bin_dir.substr (0, pos)); |
6080 | 155 } |
156 } | |
157 | |
19302
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
158 static void |
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
159 w32_init (void) |
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
160 { |
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
161 w32_set_octave_home (); |
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
162 |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21739
diff
changeset
|
163 octave::command_editor::prefer_env_winsize (true); |
19302
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
164 } |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
165 |
5451 | 166 #endif |
167 | |
22165
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
168 // Set app id if we have the SetCurrentProcessExplicitAppUserModelID |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
169 // available (>= Win7). FIXME: Could we check for existence of this |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
170 // function in the configure script instead of dynamically loading |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
171 // shell32.dll? |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
172 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
173 void |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
174 set_application_id (void) |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
175 { |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
176 #if defined (__MINGW32__) || defined (_MSC_VER) |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
177 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
178 typedef HRESULT (WINAPI *SETCURRENTAPPID)(PCWSTR AppID); |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
179 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
180 HMODULE hShell = LoadLibrary ("shell32.dll"); |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
181 |
23459
ddcbf10c8c39
maint: Use C++11 nullptr rather than 0 or NULL for remaining instances in code.
Rik <rik@octave.org>
parents:
23455
diff
changeset
|
182 if (hShell) |
22165
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
183 { |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
184 SETCURRENTAPPID pfnSetCurrentProcessExplicitAppUserModelID = |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
185 reinterpret_cast<SETCURRENTAPPID> (GetProcAddress (hShell, |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
186 "SetCurrentProcessExplicitAppUserModelID")); |
22165
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
187 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
188 if (pfnSetCurrentProcessExplicitAppUserModelID) |
23319 | 189 pfnSetCurrentProcessExplicitAppUserModelID (L"gnu.octave." VERSION); |
22165
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
190 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
191 FreeLibrary (hShell); |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
192 } |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
193 |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
194 #endif |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
195 } |
20e684ec108e
move system dependent code to sysdep.cc
John W. Eaton <jwe@octave.org>
parents:
22141
diff
changeset
|
196 |
19856
5c1a38089f89
Change open_with_system_app to internal function.
Rik <rik@octave.org>
parents:
19849
diff
changeset
|
197 DEFUN (__open_with_system_app__, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
198 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
199 @deftypefn {} {} __open_with_system_app__ (@var{file}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
200 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
201 @end deftypefn */) |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
202 { |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
203 if (args.length () != 1) |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
204 print_usage (); |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
205 |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
206 std::string file = args(0).xstring_value ("__open_with_system_app__: argument must be a filename"); |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
207 |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
208 octave_value retval; |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
209 |
21979
d04da18a407a
use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents:
21966
diff
changeset
|
210 #if defined (OCTAVE_USE_WINDOWS_API) |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
211 HINSTANCE status = ShellExecute (0, 0, file.c_str (), 0, 0, |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
212 SW_SHOWNORMAL); |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
213 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
214 // ShellExecute returns a value greater than 32 if successful. |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
215 retval = (reinterpret_cast<ptrdiff_t> (status) > 32); |
20961
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
216 #elif defined (__APPLE__) |
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
217 octave_value_list tmp |
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
218 = Fsystem (ovl ("open " + file + " 2> /dev/null", |
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
219 false, "async"), |
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
220 1); |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
221 |
20961
f55251db0833
Add support for the Mac OS X "open" command.
Ben Abbott <bpabbott@mac.com>
parents:
20941
diff
changeset
|
222 retval = (tmp(0).double_value () == 0); |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
223 #else |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
224 octave_value_list tmp |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
225 = Fsystem (ovl ("xdg-open " + file + " 2> /dev/null", |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
226 false, "async"), |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
227 1); |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
228 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
229 retval = (tmp(0).double_value () == 0); |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
230 #endif |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
231 |
19774
904912f18357
make open_with_system_app a built-in function
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
232 return retval; |
19271
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
233 } |
030d56f67363
implement the open function
John W. Eaton <jwe@octave.org>
parents:
19270
diff
changeset
|
234 |
5451 | 235 #if defined (__MINGW32__) |
236 static void | |
237 MINGW_init (void) | |
238 { | |
19302
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
239 w32_init (); |
5451 | 240 } |
241 #endif | |
242 | |
6080 | 243 #if defined (_MSC_VER) |
244 static void | |
245 MSVC_init (void) | |
246 { | |
19302
37159a873c96
preserve text on Windows terminal resize (bug #41893; patch #8532)
John W. Eaton <jwe@octave.org>
parents:
18674
diff
changeset
|
247 w32_init (); |
6080 | 248 } |
249 #endif | |
250 | |
6598 | 251 // Return TRUE if FILE1 and FILE2 refer to the same (physical) file. |
252 | |
253 bool | |
254 same_file_internal (const std::string& file1, const std::string& file2) | |
255 { | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21662
diff
changeset
|
256 #if defined (OCTAVE_USE_WINDOWS_API) |
6598 | 257 |
6691 | 258 bool retval = false; |
259 | |
16564
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
260 const char *f1 = file1.c_str (); |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
261 const char *f2 = file2.c_str (); |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
262 |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
263 bool f1_is_dir = GetFileAttributes (f1) & FILE_ATTRIBUTE_DIRECTORY; |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
264 bool f2_is_dir = GetFileAttributes (f2) & FILE_ATTRIBUTE_DIRECTORY; |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
265 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
266 // Windows native code |
6598 | 267 // Reference: http://msdn2.microsoft.com/en-us/library/aa363788.aspx |
268 | |
16564
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
269 DWORD share = FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE; |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
270 |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
271 HANDLE hfile1 |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
272 = CreateFile (f1, 0, share, 0, OPEN_EXISTING, |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
273 f1_is_dir ? FILE_FLAG_BACKUP_SEMANTICS : 0, 0); |
6691 | 274 |
275 if (hfile1 != INVALID_HANDLE_VALUE) | |
276 { | |
16564
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
277 HANDLE hfile2 |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
278 = CreateFile (f2, 0, share, 0, OPEN_EXISTING, |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
279 f2_is_dir ? FILE_FLAG_BACKUP_SEMANTICS : 0, 0); |
6598 | 280 |
6691 | 281 if (hfile2 != INVALID_HANDLE_VALUE) |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
282 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
283 BY_HANDLE_FILE_INFORMATION hfi1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
284 BY_HANDLE_FILE_INFORMATION hfi2; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
285 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
286 if (GetFileInformationByHandle (hfile1, &hfi1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
287 && GetFileInformationByHandle (hfile2, &hfi2)) |
16564
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
288 { |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
289 retval = (hfi1.dwVolumeSerialNumber == hfi2.dwVolumeSerialNumber |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
290 && hfi1.nFileIndexHigh == hfi2.nFileIndexHigh |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
291 && hfi1.nFileIndexLow == hfi2.nFileIndexLow); |
aa5299a1d770
* sysdep.cc (same_file_internal): Handle directories on Windows systems.
John W. Eaton <jwe@octave.org>
parents:
16537
diff
changeset
|
292 } |
6598 | 293 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
294 CloseHandle (hfile2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
295 } |
6691 | 296 |
6598 | 297 CloseHandle (hfile1); |
298 } | |
6691 | 299 |
300 return retval; | |
6598 | 301 |
302 #else | |
303 | |
304 // POSIX Code | |
305 | |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21733
diff
changeset
|
306 octave::sys::file_stat fs_file1 (file1); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21733
diff
changeset
|
307 octave::sys::file_stat fs_file2 (file2); |
6598 | 308 |
309 return (fs_file1 && fs_file2 | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
310 && fs_file1.ino () == fs_file2.ino () |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
311 && fs_file1.dev () == fs_file2.dev ()); |
6598 | 312 |
313 #endif | |
314 } | |
315 | |
1 | 316 void |
317 sysdep_init (void) | |
318 { | |
21557
f6663c49870c
Add comment clarifying why omp_get_num_threads is called in sysdep.cc.
Rik <rik@octave.org>
parents:
21556
diff
changeset
|
319 // Use a function from libgomp to force loading of OpenMP library. |
f6663c49870c
Add comment clarifying why omp_get_num_threads is called in sysdep.cc.
Rik <rik@octave.org>
parents:
21556
diff
changeset
|
320 // Otherwise, a dynamically loaded library making use of OpenMP such |
f6663c49870c
Add comment clarifying why omp_get_num_threads is called in sysdep.cc.
Rik <rik@octave.org>
parents:
21556
diff
changeset
|
321 // as GraphicsMagick will segfault on exit (bug #41699). |
21554
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
322 #if defined (HAVE_OMP_GET_NUM_THREADS) |
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
323 omp_get_num_threads (); |
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
324 #endif |
9f0088f3f335
call openmp function at initialization (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
20788
diff
changeset
|
325 |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14445
diff
changeset
|
326 #if defined (__386BSD__) || defined (__FreeBSD__) || defined (__NetBSD__) |
2508 | 327 BSD_init (); |
5451 | 328 #elif defined (__MINGW32__) |
329 MINGW_init (); | |
6080 | 330 #elif defined (_MSC_VER) |
331 MSVC_init (); | |
1 | 332 #endif |
333 } | |
334 | |
5451 | 335 void |
336 sysdep_cleanup (void) | |
337 { | |
21989
6bce4d23af6b
eliminate OCTAVE_USE_WINDOWS_API and OCTAVE_USE_OS_X_API from header files
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
338 #if defined (OCTAVE_USE_WINDOWS_API) |
6bce4d23af6b
eliminate OCTAVE_USE_WINDOWS_API and OCTAVE_USE_OS_X_API from header files
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
339 // Let us fail immediately without displaying any dialog. |
6bce4d23af6b
eliminate OCTAVE_USE_WINDOWS_API and OCTAVE_USE_OS_X_API from header files
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
340 SetProcessShutdownParameters (0x280, SHUTDOWN_NORETRY); |
6bce4d23af6b
eliminate OCTAVE_USE_WINDOWS_API and OCTAVE_USE_OS_X_API from header files
John W. Eaton <jwe@octave.org>
parents:
21979
diff
changeset
|
341 #endif |
5451 | 342 } |
343 | |
767 | 344 // Set terminal in raw mode. From less-177. |
345 // | |
346 // Change terminal to "raw mode", or restore to "normal" mode. | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
347 // "Raw mode" means |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
348 // 1. An outstanding read will complete on receipt of a single keystroke. |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
349 // 2. Input is not echoed. |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
350 // 3. On output, \n is mapped to \r\n. |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
351 // 4. \t is NOT expanded into spaces. |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
352 // 5. Signal-causing characters such as ctrl-C (interrupt), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
353 // etc. are NOT disabled. |
767 | 354 // It doesn't matter whether an input \n is mapped to \r, or vice versa. |
355 | |
529 | 356 void |
3657 | 357 raw_mode (bool on, bool wait) |
529 | 358 { |
3657 | 359 static bool curr_on = false; |
529 | 360 |
361 int tty_fd = STDIN_FILENO; | |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21888
diff
changeset
|
362 if (! octave_isatty_wrapper (tty_fd)) |
529 | 363 { |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
364 if (octave::application::interactive () |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
365 && ! octave::application::forced_interactive ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
366 error ("stdin is not a tty!"); |
529 | 367 } |
368 | |
369 if (on == curr_on) | |
370 return; | |
371 | |
372 #if defined (HAVE_TERMIOS_H) | |
373 { | |
374 struct termios s; | |
375 static struct termios save_term; | |
376 | |
377 if (on) | |
378 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
379 // Get terminal modes. |
529 | 380 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
381 tcgetattr (tty_fd, &s); |
529 | 382 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
383 // Save modes and set certain variables dependent on modes. |
529 | 384 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
385 save_term = s; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
386 // ospeed = s.c_cflag & CBAUD; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
387 // erase_char = s.c_cc[VERASE]; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
388 // kill_char = s.c_cc[VKILL]; |
529 | 389 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
390 // Set the modes to the way we want them. |
529 | 391 |
21662
5b9868c2e212
maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents:
21557
diff
changeset
|
392 s.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL); |
5b9868c2e212
maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents:
21557
diff
changeset
|
393 s.c_oflag |= (OPOST | ONLCR); |
529 | 394 #if defined (OCRNL) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
395 s.c_oflag &= ~(OCRNL); |
529 | 396 #endif |
397 #if defined (ONOCR) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
398 s.c_oflag &= ~(ONOCR); |
529 | 399 #endif |
400 #if defined (ONLRET) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
401 s.c_oflag &= ~(ONLRET); |
529 | 402 #endif |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23325
diff
changeset
|
403 s.c_cc[VMIN] = (wait ? 1 : 0); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
404 s.c_cc[VTIME] = 0; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
405 } |
529 | 406 else |
407 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
408 // Restore saved modes. |
1358 | 409 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
410 s = save_term; |
529 | 411 } |
3658 | 412 |
9411
c9636d98e5cd
fix kbhit(1) to not discard waiting keystrokes
Joe Rothweiler <octaveuser@sensicomm.com>
parents:
9242
diff
changeset
|
413 tcsetattr (tty_fd, wait ? TCSAFLUSH : TCSADRAIN, &s); |
529 | 414 } |
415 #elif defined (HAVE_TERMIO_H) | |
416 { | |
417 struct termio s; | |
418 static struct termio save_term; | |
419 | |
420 if (on) | |
421 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
422 // Get terminal modes. |
529 | 423 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
424 ioctl (tty_fd, TCGETA, &s); |
529 | 425 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
426 // Save modes and set certain variables dependent on modes. |
529 | 427 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
428 save_term = s; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
429 // ospeed = s.c_cflag & CBAUD; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
430 // erase_char = s.c_cc[VERASE]; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
431 // kill_char = s.c_cc[VKILL]; |
529 | 432 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
433 // Set the modes to the way we want them. |
529 | 434 |
21662
5b9868c2e212
maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents:
21557
diff
changeset
|
435 s.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL); |
5b9868c2e212
maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents:
21557
diff
changeset
|
436 s.c_oflag |= (OPOST | ONLCR); |
529 | 437 #if defined (OCRNL) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
438 s.c_oflag &= ~(OCRNL); |
529 | 439 #endif |
440 #if defined (ONOCR) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
441 s.c_oflag &= ~(ONOCR); |
529 | 442 #endif |
443 #if defined (ONLRET) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
444 s.c_oflag &= ~(ONLRET); |
529 | 445 #endif |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23325
diff
changeset
|
446 s.c_cc[VMIN] = (wait ? 1 : 0); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
447 } |
529 | 448 else |
449 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
450 // Restore saved modes. |
1358 | 451 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
452 s = save_term; |
529 | 453 } |
3658 | 454 |
529 | 455 ioctl (tty_fd, TCSETAW, &s); |
456 } | |
457 #elif defined (HAVE_SGTTY_H) | |
458 { | |
24118
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23812
diff
changeset
|
459 octave_unused_parameter (wait); |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23812
diff
changeset
|
460 |
529 | 461 struct sgttyb s; |
462 static struct sgttyb save_term; | |
463 | |
464 if (on) | |
465 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
466 // Get terminal modes. |
529 | 467 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
468 ioctl (tty_fd, TIOCGETP, &s); |
529 | 469 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
470 // Save modes and set certain variables dependent on modes. |
529 | 471 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
472 save_term = s; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
473 // ospeed = s.sg_ospeed; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
474 // erase_char = s.sg_erase; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
475 // kill_char = s.sg_kill; |
529 | 476 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
477 // Set the modes to the way we want them. |
529 | 478 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
479 s.sg_flags |= CBREAK; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
480 s.sg_flags &= ~(ECHO); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
481 } |
529 | 482 else |
483 { | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
484 // Restore saved modes. |
1358 | 485 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
486 s = save_term; |
529 | 487 } |
3658 | 488 |
529 | 489 ioctl (tty_fd, TIOCSETN, &s); |
490 } | |
491 #else | |
24118
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23812
diff
changeset
|
492 |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23812
diff
changeset
|
493 octave_unused_parameter (wait); |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23812
diff
changeset
|
494 |
21109
bd1752782e56
Use err_disabled_feature, warn_disabled_feature throughout code base.
Rik <rik@octave.org>
parents:
21078
diff
changeset
|
495 warn_disabled_feature ("", "raw mode console I/O"); |
4064 | 496 |
497 // Make sure the current mode doesn't toggle. | |
498 on = curr_on; | |
529 | 499 #endif |
500 | |
501 curr_on = on; | |
502 } | |
503 | |
6726 | 504 FILE * |
505 octave_popen (const char *command, const char *mode) | |
506 { | |
507 #if defined (__MINGW32__) || defined (_MSC_VER) | |
508 if (mode && mode[0] && ! mode[1]) | |
509 { | |
22855
f9fdd2f66514
maint: use initializer of char array for octave_popen tmode.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
510 // Use binary mode on Windows if unspecified |
f9fdd2f66514
maint: use initializer of char array for octave_popen tmode.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
511 char tmode[3] = {mode[0], 'b', '\0'}; |
6726 | 512 |
513 return _popen (command, tmode); | |
514 } | |
515 else | |
516 return _popen (command, mode); | |
517 #else | |
518 return popen (command, mode); | |
519 #endif | |
520 } | |
521 | |
522 int | |
523 octave_pclose (FILE *f) | |
524 { | |
525 #if defined (__MINGW32__) || defined (_MSC_VER) | |
526 return _pclose (f); | |
527 #else | |
528 return pclose (f); | |
529 #endif | |
530 } | |
531 | |
767 | 532 // Read one character from the terminal. |
533 | |
529 | 534 int |
4067 | 535 octave_kbhit (bool wait) |
529 | 536 { |
20788
a2b96b523472
Rewrite a8ee668e7fd7 to use #if defined rather than #ifdef.
Rik <rik@octave.org>
parents:
20786
diff
changeset
|
537 #if defined (HAVE__KBHIT) && defined (HAVE__GETCH) |
20786
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
538 // This essentially means we are on a Windows system. |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
539 int c; |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
540 |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
541 if (wait) |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
542 c = _getch (); |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
543 else |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
544 c = (! _kbhit ()) ? 0 : _getch (); |
a8ee668e7fd7
Fix kbhit and pause on Windows systems.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
545 |
4067 | 546 #else |
3658 | 547 raw_mode (true, wait); |
548 | |
5770 | 549 // Get current handler. |
22051
6db928d06b07
move signal functions into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22019
diff
changeset
|
550 octave::interrupt_handler saved_interrupt_handler |
6db928d06b07
move signal functions into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22019
diff
changeset
|
551 = octave::ignore_interrupts (); |
5770 | 552 |
553 // Restore it, disabling system call restarts (if possible) so the | |
554 // read can be interrupted. | |
555 | |
22051
6db928d06b07
move signal functions into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22019
diff
changeset
|
556 octave::set_interrupt_handler (saved_interrupt_handler, false); |
5770 | 557 |
3658 | 558 int c = std::cin.get (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
559 |
3658 | 560 if (std::cin.fail () || std::cin.eof ()) |
561 std::cin.clear (); | |
562 | |
5770 | 563 // Restore it, enabling system call restarts (if possible). |
22051
6db928d06b07
move signal functions into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22019
diff
changeset
|
564 octave::set_interrupt_handler (saved_interrupt_handler, true); |
5770 | 565 |
3658 | 566 raw_mode (false, true); |
4067 | 567 #endif |
3658 | 568 |
529 | 569 return c; |
570 } | |
571 | |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
572 std::string |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
573 get_P_tmpdir (void) |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
574 { |
21979
d04da18a407a
use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents:
21966
diff
changeset
|
575 #if defined (OCTAVE_USE_WINDOWS_API) |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
576 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
577 std::string retval; |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
578 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
579 #if defined (P_tmpdir) |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
580 retval = P_tmpdir; |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
581 #endif |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
582 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
583 // Apparently some versions of MinGW and MSVC either don't define |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
584 // P_tmpdir, or they define it to a single backslash, neither of which |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
585 // is particularly helpful. |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
586 |
23809
e56d84a16a2e
Fix "no match for 'operator=='" when comparing C++ string to char literal.
Markus Mützel <markus.muetzel@gmx.de>
parents:
23804
diff
changeset
|
587 if (retval.empty () || retval == R"(\)") |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
588 { |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
589 retval = octave::sys::env::getenv ("TEMP"); |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
590 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
591 if (retval.empty ()) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
592 retval = octave::sys::env::getenv ("TMP"); |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
593 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
594 if (retval.empty ()) |
23804
8057d3f0673d
Use C++11 raw string literals to avoid escaping backslashes in strings.
Rik <rik@octave.org>
parents:
23746
diff
changeset
|
595 retval = R"(c:\temp)"; |
12228
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
596 } |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
597 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
598 return retval; |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
599 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
600 #elif defined (P_tmpdir) |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
601 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
602 return P_tmpdir; |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
603 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
604 #else |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
605 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
606 return "/tmp"; |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
607 |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
608 #endif |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
609 } |
0f70c5db58c3
try to get better value than \ for P_tmpdir on Windows systems
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
610 |
1957 | 611 DEFUN (clc, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
612 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
613 @deftypefn {} {} clc () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
614 @deftypefnx {} {} home () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
615 Clear the terminal screen and move the cursor to the upper left corner. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
616 @end deftypefn */) |
529 | 617 { |
16537
106a38d7b396
optionall disable redisplay in command editor clear screen function
John W. Eaton <jwe@octave.org>
parents:
16404
diff
changeset
|
618 bool skip_redisplay = true; |
106a38d7b396
optionall disable redisplay in command editor clear screen function
John W. Eaton <jwe@octave.org>
parents:
16404
diff
changeset
|
619 |
21748
176536b15d68
use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents:
21739
diff
changeset
|
620 octave::command_editor::clear_screen (skip_redisplay); |
529 | 621 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
622 return ovl (); |
529 | 623 } |
624 | |
549 | 625 DEFALIAS (home, clc); |
626 | |
1957 | 627 DEFUN (getenv, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
628 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
629 @deftypefn {} {} getenv (@var{var}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
630 Return the value of the environment variable @var{var}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
631 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
632 For example, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
633 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
634 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
635 getenv ("PATH") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
636 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
637 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
638 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
639 returns a string containing the value of your path. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
640 @seealso{setenv, unsetenv} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
641 @end deftypefn */) |
529 | 642 { |
20819
f428cbe7576f
eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents:
20799
diff
changeset
|
643 if (args.length () != 1) |
5823 | 644 print_usage (); |
529 | 645 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
646 std::string name = args(0).string_value (); |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
647 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
648 return ovl (octave::sys::env::getenv (name)); |
529 | 649 } |
650 | |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
651 /* |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
652 %!assert (ischar (getenv ("OCTAVE_HOME"))) |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
653 */ |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
654 |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
655 DEFUN (setenv, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
656 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
657 @deftypefn {} {} setenv (@var{var}, @var{value}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
658 @deftypefnx {} {} setenv (@var{var}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
659 @deftypefnx {} {} putenv (@dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
660 Set the value of the environment variable @var{var} to @var{value}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
661 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
662 If no @var{value} is specified then the variable will be assigned the null |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
663 string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
664 @seealso{unsetenv, getenv} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
665 @end deftypefn */) |
1706 | 666 { |
667 int nargin = args.length (); | |
668 | |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
669 if (nargin < 1 || nargin > 2) |
5823 | 670 print_usage (); |
1706 | 671 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
672 std::string var = args(0).xstring_value ("setenv: VAR must be a string"); |
1706 | 673 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
674 std::string val = (nargin == 2 |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
675 ? args(1).xstring_value ("setenv: VALUE must be a string") |
21017
93748bcaec17
maint: Replace emtpy 'std::string ()' calls with "".
Rik <rik@octave.org>
parents:
20990
diff
changeset
|
676 : ""); |
20582
ba2b07c13913
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
677 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
678 octave::sys::env::putenv (var, val); |
1706 | 679 |
21078
49852ff04747
maint: Remove unnecessary declarations of retval.
Rik <rik@octave.org>
parents:
21017
diff
changeset
|
680 return ovl (); |
1706 | 681 } |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
682 |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
683 DEFALIAS (putenv, setenv); |
1706 | 684 |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
685 /* |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
686 %!test |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
687 %! setenv ("dummy_variable_that_cannot_matter", "foobar"); |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
688 %! assert (getenv ("dummy_variable_that_cannot_matter"), "foobar"); |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
689 %! unsetenv ("dummy_variable_that_cannot_matter"); |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
690 %! assert (getenv ("dummy_variable_that_cannot_matter"), ""); |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
691 */ |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
692 |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
693 DEFUN (unsetenv, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
694 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
695 @deftypefn {} {@var{status} =} unsetenv (@var{var}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
696 Delete the environment variable @var{var}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
697 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
698 Return 0 if the variable was deleted, or did not exist, and -1 if an error |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
699 occurred. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
700 @seealso{setenv, getenv} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
701 @end deftypefn */) |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
702 { |
20819
f428cbe7576f
eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents:
20799
diff
changeset
|
703 if (args.length () != 1) |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
704 print_usage (); |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
705 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
706 std::string tmp = args(0).string_value (); |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
707 |
21888
00f1249f2483
create wrappers for some gnulib functions
John W. Eaton <jwe@octave.org>
parents:
21782
diff
changeset
|
708 return ovl (octave_unsetenv_wrapper (tmp.c_str ())); |
19167
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
709 } |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
710 |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
711 /* |
6f0290863d50
Add new function unsetenv from gnulib to Octave.
Rik <rik@octave.org>
parents:
18674
diff
changeset
|
712 ## Test for unsetenv is in setenv test |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
713 */ |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
714 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
715 #if defined (OCTAVE_USE_WINDOWS_API) |
24710
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
716 |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
717 static void |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
718 reg_close_key_wrapper (HKEY key) |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
719 { |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
720 RegCloseKey (key); |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
721 } |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
722 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
723 LONG |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
724 get_regkey_value (HKEY h_rootkey, const std::string subkey, |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
725 const std::string name, octave_value& value) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
726 { |
24702
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
727 LONG result; |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
728 HKEY h_subkey; |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
729 |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
730 result = RegOpenKeyExA (h_rootkey, subkey.c_str (), 0, KEY_READ, &h_subkey); |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
731 if (result != ERROR_SUCCESS) |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
732 return result; |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
733 |
24710
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
734 octave::unwind_protect frame; |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
735 |
a979bb895b64
avoid reinterpret_cast on function pointer in previous change
John W. Eaton <jwe@octave.org>
parents:
24709
diff
changeset
|
736 frame.add_fcn (reg_close_key_wrapper, h_subkey); |
24709
6a6108db3a6b
winqueryreg: Close registry key after use (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24702
diff
changeset
|
737 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
738 DWORD length = 0; |
24702
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
739 result = RegQueryValueExA (h_subkey, name.c_str (), nullptr, nullptr, nullptr, |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
740 &length); |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
741 if (result != ERROR_SUCCESS) |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
742 return result; |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
743 |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
744 DWORD type = 0; |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
745 OCTAVE_LOCAL_BUFFER (BYTE, data, length); |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
746 result = RegQueryValueExA (h_subkey, name.c_str (), nullptr, &type, data, |
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
747 &length); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
748 if (result != ERROR_SUCCESS) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
749 return result; |
24691
b658e0fa0cb3
maint: Remove trailing whitespace from files.
Rik <rik@octave.org>
parents:
24682
diff
changeset
|
750 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
751 if (type == REG_DWORD) |
24702
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
752 value = octave_int32 (*data); |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
753 else if (type == REG_SZ || type == REG_EXPAND_SZ) |
24702
15daa0b34826
winqueryreg: Use WinAPI functions available in Windows XP (bug #50463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24691
diff
changeset
|
754 value = string_vector (reinterpret_cast<char *> (data)); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
755 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
756 return result; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
757 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
758 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
759 LONG |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
760 get_regkey_names (HKEY h_rootkey, const std::string subkey, |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
761 std::list<std::string> &fields) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
762 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
763 LONG retval; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
764 HKEY h_subkey; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
765 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
766 fields.clear (); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
767 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
768 retval = RegOpenKeyEx (h_rootkey, subkey.c_str (), 0, KEY_READ, &h_subkey); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
769 if (retval != ERROR_SUCCESS) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
770 return retval; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
771 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
772 DWORD idx = 0; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
773 const int MAX_VALUE_NAME_SIZE = 32767; |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
774 char value_name[MAX_VALUE_NAME_SIZE+1]; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
775 DWORD value_name_size = MAX_VALUE_NAME_SIZE; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
776 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
777 while (true) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
778 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
779 retval = RegEnumValue (h_subkey, idx, value_name, &value_name_size, |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
780 nullptr, nullptr, nullptr, nullptr); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
781 if (retval != ERROR_SUCCESS) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
782 break; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
783 fields.push_back (value_name); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
784 value_name_size = MAX_VALUE_NAME_SIZE; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
785 idx++; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
786 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
787 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
788 if (retval == ERROR_NO_MORE_ITEMS) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
789 retval = ERROR_SUCCESS; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
790 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
791 RegCloseKey (h_subkey); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
792 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
793 return retval; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
794 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
795 #endif |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
796 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
797 DEFUN (winqueryreg, args, , |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
798 doc: /* -*- texinfo -*- |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
799 @deftypefn {} {@var{value} =} winqueryreg (@var{rootkey}, @var{subkey}, @var{valuename}) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
800 @deftypefnx {} {@var{value} =} winqueryreg (@var{rootkey}, @var{subkey}) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
801 @deftypefnx {} {@var{names} =} winqueryreg (@code{"name"}, @var{rootkey}, @var{subkey}) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
802 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
803 Query names or value from the Windows registry. |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
804 |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
805 On Windows, return the value of the registry key @var{subkey} from the root key |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
806 @var{rootkey}. You can specify the name of the queried registry value with the |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
807 optional argument @var{valuename}. Otherwise, if called with only two |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
808 arguments or @var{valuename} is empty, then the default value of @var{subkey} |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
809 is returned. If the registry value is of type @qcode{"REG_DWORD"} then |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
810 @var{value} is of class int32. If the value is of the type @qcode{"REG_SZ"} or |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
811 @qcode{"REG_EXPAND_SZ"} a string is returned. |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
812 |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
813 If the first argument is @qcode{"name"}, a cell array of strings with the names |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
814 of the values at that key is returned. |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
815 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
816 The variable @var{rootkey} must be a string with a valid root key identifier: |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
817 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
818 @table @asis |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
819 @item HKCR |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
820 @itemx HKEY_CLASSES_ROOT |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
821 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
822 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
823 @item HKEY_CURRENT_CONFIG |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
824 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
825 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
826 @item HKCU |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
827 @itemx HKEY_CURRENT_USER |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
828 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
829 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
830 @item HKLM |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
831 @itemx HKEY_LOCAL_MACHINE |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
832 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
833 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
834 @item HKU |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
835 @itemx HKEY_USERS |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
836 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
837 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
838 @item HKEY_PERFORMANCE_DATA |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
839 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
840 @end table |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
841 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
842 Examples: |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
843 |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
844 Get a list of value names at the key @qcode{'HKCU\Environment'}: |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
845 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
846 @example |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
847 @group |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
848 @var{valuenames} = winqueryreg ("name", "HKEY_CURRENT_USER", ... |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
849 "Environment"); |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
850 @end group |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
851 @end example |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
852 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
853 For each @var{valuenames}, display the value: |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
854 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
855 @example |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
856 @group |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
857 for @var{k} = 1:numel (@var{valuenames}) |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
858 @var{val} = winqueryreg ("HKEY_CURRENT_USER", "Environment", ... |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
859 @var{valuenames}@{@var{k}@}); |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
860 @var{str} = sprintf ("%s = %s", @var{valuenames}@{@var{k}@}, num2str (@var{val})); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
861 disp (@var{str}); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
862 endfor |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
863 @end group |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
864 @end example |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
865 |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
866 On non-Windows platforms this function fails with an error. |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
867 @end deftypefn */) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
868 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
869 #if defined (OCTAVE_USE_WINDOWS_API) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
870 if ((args.length () < 2) || (args.length () > 3)) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
871 print_usage (); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
872 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
873 // Input check |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
874 std::string rootkey_name = |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
875 args(0).xstring_value ("winqueryreg: the first argument must be 'name' " |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
876 "or a valid ROOTKEY identifier"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
877 std::string subkey_name = ""; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
878 std::string value_name = ""; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
879 bool get_names = false; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
880 if (rootkey_name.compare ("name") == 0) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
881 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
882 if (args.length () < 3) |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
883 error ("winqueryreg: if the first argument is 'name', " |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
884 "ROOTKEY and SUBKEY must be given"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
885 get_names = true; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
886 rootkey_name = |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
887 args(1).xstring_value ("winqueryreg: ROOTKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
888 subkey_name = |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
889 args(2).xstring_value ("winqueryreg: SUBKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
890 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
891 else |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
892 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
893 subkey_name = |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
894 args(1).xstring_value ("winqueryreg: SUBKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
895 if (args.length () == 3) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
896 value_name = |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
897 args(2).xstring_value ("winqueryreg: VALUENAME must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
898 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
899 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
900 // Get rootkey handle |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
901 HKEY h_rootkey; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
902 if (rootkey_name == "HKEY_CLASSES_ROOT" || rootkey_name == "HKCR") |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
903 h_rootkey = HKEY_CLASSES_ROOT; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
904 else if (rootkey_name == "HKEY_CURRENT_CONFIG") |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
905 h_rootkey = HKEY_CURRENT_CONFIG; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
906 else if (rootkey_name == "HKEY_CURRENT_USER" || rootkey_name == "HKCU") |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
907 h_rootkey = HKEY_CURRENT_USER; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
908 else if (rootkey_name == "HKEY_LOCAL_MACHINE" || rootkey_name == "HKLM") |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
909 h_rootkey = HKEY_LOCAL_MACHINE; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
910 else if (rootkey_name == "HKEY_PERFORMANCE_DATA") |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
911 h_rootkey = HKEY_PERFORMANCE_DATA; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
912 else if (rootkey_name == "HKEY_USERS" || rootkey_name == "HKU") |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
913 h_rootkey = HKEY_USERS; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
914 else |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
915 error ("winqueryreg: ROOTKEY is not a valid root key identifier"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
916 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
917 if (get_names) |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
918 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
919 std::list<std::string> fields; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
920 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
921 LONG retval = get_regkey_names (h_rootkey, subkey_name, fields); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
922 if (retval != ERROR_SUCCESS) |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
923 error ("winqueryreg: error %d reading names from registry", retval); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
924 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
925 Cell fieldnames (dim_vector (1, fields.size ())); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
926 size_t i; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
927 std::list<std::string>::const_iterator it; |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
928 for (i = 0, it = fields.begin (); it != fields.end (); ++it, ++i) |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
929 fieldnames(i) = *it; |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
930 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
931 return ovl (fieldnames); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
932 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
933 else |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
934 { |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
935 octave_value key_val; |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
936 LONG retval = get_regkey_value (h_rootkey, subkey_name, value_name, |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
937 key_val); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
938 if (retval != ERROR_SUCCESS) |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
939 error ("winqueryreg: error %d reading the specified key", retval); |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
940 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
941 return ovl (key_val); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
942 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
943 #else |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
944 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
945 octave_unused_parameter (args); |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
946 |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
947 error ("winqueryreg: function is only supported on Windows platforms"); |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
948 |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
949 #endif |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
950 } |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
951 |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
952 /* |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
953 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
954 %! assert (ischar (winqueryreg ("HKEY_LOCAL_MACHINE", |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
955 %! 'SOFTWARE\Microsoft\Windows\CurrentVersion', |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
956 %! "ProgramFilesDir"))); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
957 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
958 %! assert (isa (winqueryreg ("HKEY_LOCAL_MACHINE", |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
959 %! 'SYSTEM\CurrentControlSet\Control\FileSystem', |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
960 %! "Win31FileSystem"), "int32")); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
961 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
962 %! assert (iscellstr (winqueryreg ("name", "HKEY_LOCAL_MACHINE", |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
963 %! 'SOFTWARE\Microsoft\Windows\CurrentVersion'))); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
964 %!testif ; ispc () |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
965 %! fail ('winqueryreg (1, ''SOFTWARE\Microsoft\Windows\CurrentVersion'')', |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
966 %! "first argument must be 'name' or a valid ROOTKEY identifier"); |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
967 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
968 %! fail ('winqueryreg ("HKEY_LOCAL_MACHINE", 1)', "SUBKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
969 %!testif ; ispc () |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
970 %! fail (['winqueryreg ("HKEY_LOCAL_MACHINE", ', ... |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
971 %! '''SOFTWARE\Microsoft\Windows\CurrentVersion'', 1)'], |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
972 %! "VALUENAME must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
973 %!testif ; ispc () |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
974 %! fail (['winqueryreg ("FOO", ', ... |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
975 %! '''SOFTWARE\Microsoft\Windows\CurrentVersion'')'], |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
976 %! "ROOTKEY is not a valid root key identifier"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
977 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
978 %! fail ('winqueryreg ("HKEY_LOCAL_MACHINE", ''FOO\bar'')', |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
979 %! "error .* reading the specified key"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
980 %!testif ; ispc () |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
981 %! fail (['winqueryreg ("HKEY_LOCAL_MACHINE", ', ... |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
982 %! '''SOFTWARE\Microsoft\Windows\CurrentVersion'', "foo")'], |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
983 %! "error .* reading the specified key"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
984 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
985 %! fail ('winqueryreg ("name", "HKEY_LOCAL_MACHINE")', |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
986 %! "if the first argument is 'name', ROOTKEY and SUBKEY must be given"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
987 %!testif ; ispc () |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
988 %! fail (['winqueryreg ("name", 1, ', ... |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
989 %! '''SOFTWARE\Microsoft\Windows\CurrentVersion'')'], |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
990 %! "ROOTKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
991 %!testif ; ispc () |
24665
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
992 %! fail ('winqueryreg ("name", "HKEY_LOCAL_MACHINE", 1)', |
4a9793818fca
Use Octave coding conventions in cset a829062fdea4.
Rik <rik@octave.org>
parents:
24664
diff
changeset
|
993 %! "SUBKEY must be a string"); |
24664
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
994 */ |
a829062fdea4
Add function "winqueryreg" (bug #52935).
Markus Mützel <markus.muetzel@gmx.de>
parents:
24534
diff
changeset
|
995 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
996 // FIXME: perhaps kbhit should also be able to print a prompt? |
3372 | 997 |
3657 | 998 DEFUN (kbhit, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
999 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1000 @deftypefn {} {} kbhit () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1001 @deftypefnx {} {} kbhit (1) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1002 Read a single keystroke from the keyboard. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1003 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1004 If called with an argument, don't wait for a keypress. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1005 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1006 For example, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1007 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1008 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1009 x = kbhit (); |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1010 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1011 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1012 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1013 will set @var{x} to the next character typed at the keyboard as soon as |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1014 it is typed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1015 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1016 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1017 x = kbhit (1); |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1018 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1019 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1020 @noindent |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1021 is identical to the above example, but doesn't wait for a keypress, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1022 returning the empty string if no key is available. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1023 @seealso{input, pause} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1024 @end deftypefn */) |
529 | 1025 { |
22141
ed6104a78ebf
kbhit: return an empty string if not running interactively (bug #48541)
Mike Miller <mtmiller@octave.org>
parents:
22097
diff
changeset
|
1026 octave_value retval = ""; |
529 | 1027 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1028 // FIXME: add timeout and default value args? |
529 | 1029 |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
1030 if (octave::application::interactive ()) |
529 | 1031 { |
15423
53d073233fa4
call more built-in functions directly
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
1032 Fdrawnow (); |
6423 | 1033 |
4067 | 1034 int c = octave_kbhit (args.length () == 0); |
3657 | 1035 |
3658 | 1036 if (c == -1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
1037 c = 0; |
3657 | 1038 |
16092
def3b111cff8
avoid gcc warning about int to char conversion
John W. Eaton <jwe@octave.org>
parents:
16053
diff
changeset
|
1039 char s[2] = { static_cast<char> (c), '\0' }; |
16015 | 1040 |
529 | 1041 retval = s; |
1042 } | |
1043 | |
1044 return retval; | |
1045 } | |
1046 | |
1957 | 1047 DEFUN (pause, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1048 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1049 @deftypefn {} {} pause () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1050 @deftypefnx {} {} pause (@var{n}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1051 Suspend the execution of the program for @var{n} seconds. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1052 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1053 If invoked without an input arguments then the program is suspended until a |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1054 character is typed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1055 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1056 @var{n} is a positive real value and may be a fraction of a second, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1057 for example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1058 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1059 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1060 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1061 tic; pause (0.05); toc |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1062 @print{} Elapsed time is 0.05039 seconds. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1063 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1064 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1065 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1066 The following example prints a message and then waits 5 seconds before |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1067 clearing the screen. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1068 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1069 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1070 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1071 disp ("wait please..."); |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1072 pause (5); |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1073 clc; |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1074 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1075 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1076 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1077 @seealso{kbhit} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1078 @end deftypefn */) |
529 | 1079 { |
1080 int nargin = args.length (); | |
1081 | |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
1082 if (nargin > 1) |
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
1083 print_usage (); |
529 | 1084 |
1579 | 1085 if (nargin == 1) |
529 | 1086 { |
1579 | 1087 double dval = args(0).double_value (); |
636 | 1088 |
21782
2aef506f3fec
use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents:
21748
diff
changeset
|
1089 if (octave::math::isnan (dval)) |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20923
diff
changeset
|
1090 warning ("pause: NaN is an invalid delay"); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20923
diff
changeset
|
1091 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
1092 { |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20181
diff
changeset
|
1093 Fdrawnow (); |
6419 | 1094 |
21782
2aef506f3fec
use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents:
21748
diff
changeset
|
1095 if (octave::math::isinf (dval)) |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20181
diff
changeset
|
1096 { |
23060
baf03cdb28b5
move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22855
diff
changeset
|
1097 octave::flush_stdout (); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20181
diff
changeset
|
1098 octave_kbhit (); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
1099 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
1100 else |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20181
diff
changeset
|
1101 octave_sleep (dval); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10266
diff
changeset
|
1102 } |
529 | 1103 } |
1579 | 1104 else |
3234 | 1105 { |
15423
53d073233fa4
call more built-in functions directly
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
1106 Fdrawnow (); |
23060
baf03cdb28b5
move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22855
diff
changeset
|
1107 octave::flush_stdout (); |
4067 | 1108 octave_kbhit (); |
3234 | 1109 } |
2630 | 1110 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
1111 return ovl (); |
2630 | 1112 } |
1113 | |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1114 /* |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1115 %!test |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1116 %! pause (1); |
14429
eff4a5933e28
Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14160
diff
changeset
|
1117 |
eff4a5933e28
Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14160
diff
changeset
|
1118 %!error (pause (1, 2)) |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1119 */ |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1120 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1121 // FIXME: maybe this should only return 1 if IEEE floating |
862 | 1122 // point functions really work. |
1123 | |
1957 | 1124 DEFUN (isieee, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1125 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1126 @deftypefn {} {} isieee () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1127 Return true if your computer @emph{claims} to conform to the IEEE standard |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1128 for floating point calculations. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1129 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1130 No actual tests are performed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1131 @end deftypefn */) |
862 | 1132 { |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
1133 octave::mach_info::float_format flt_fmt = |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
1134 octave::mach_info::native_float_format (); |
2317 | 1135 |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21736
diff
changeset
|
1136 return ovl (flt_fmt == octave::mach_info::flt_fmt_ieee_little_endian |
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21736
diff
changeset
|
1137 || flt_fmt == octave::mach_info::flt_fmt_ieee_big_endian); |
862 | 1138 } |
1139 | |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1140 /* |
14429
eff4a5933e28
Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14160
diff
changeset
|
1141 %!assert (islogical (isieee ())) |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1142 */ |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1143 |
4600 | 1144 DEFUN (native_float_format, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1145 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1146 @deftypefn {} {} native_float_format () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1147 Return the native floating point format as a string. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1148 @end deftypefn */) |
4600 | 1149 { |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
1150 octave::mach_info::float_format flt_fmt = |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
1151 octave::mach_info::native_float_format (); |
4600 | 1152 |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21736
diff
changeset
|
1153 return ovl (octave::mach_info::float_format_as_string (flt_fmt)); |
4600 | 1154 } |
1155 | |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1156 /* |
14429
eff4a5933e28
Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14160
diff
changeset
|
1157 %!assert (ischar (native_float_format ())) |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1158 */ |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1159 |
1957 | 1160 DEFUN (tilde_expand, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1161 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1162 @deftypefn {} {} tilde_expand (@var{string}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1163 @deftypefnx {} {} tilde_expand (@var{cellstr}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1164 Perform tilde expansion on @var{string}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1165 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1166 If @var{string} begins with a tilde character, (@samp{~}), all of the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1167 characters preceding the first slash (or all characters, if there is no |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1168 slash) are treated as a possible user name, and the tilde and the following |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1169 characters up to the slash are replaced by the home directory of the named |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1170 user. If the tilde is followed immediately by a slash, the tilde is |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1171 replaced by the home directory of the user running Octave. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1172 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1173 If the input is a cell array of strings @var{cellstr} then tilde expansion |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1174 is performed on each string element. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1175 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1176 Examples: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1177 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1178 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1179 @group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1180 tilde_expand ("~joeuser/bin") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1181 @result{} "/home/joeuser/bin" |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1182 tilde_expand ("~/bin") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1183 @result{} "/home/jwe/bin" |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1184 @end group |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1185 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1186 @end deftypefn */) |
1750 | 1187 { |
20819
f428cbe7576f
eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents:
20799
diff
changeset
|
1188 if (args.length () != 1) |
5823 | 1189 print_usage (); |
1750 | 1190 |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
1191 octave_value arg = args(0); |
6116 | 1192 |
20990
fc9cca99b2de
Deprecate all_strings, replace with string_vector_value.
Rik <rik@octave.org>
parents:
20961
diff
changeset
|
1193 string_vector sv = arg.xstring_vector_value ("tilde_expand: argument must be char or cellstr object"); |
6116 | 1194 |
21733
cb0fdd941d84
use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents:
21732
diff
changeset
|
1195 sv = octave::sys::file_ops::tilde_expand (sv); |
20799
c349d4c91ce2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20789
diff
changeset
|
1196 |
23575
e95738a119da
maint: Deprecate is_cellstr and replace with iscellstr.
Rik <rik@octave.org>
parents:
23459
diff
changeset
|
1197 if (arg.iscellstr ()) |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20923
diff
changeset
|
1198 return ovl (Cell (arg.dims (), sv)); |
1750 | 1199 else |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20923
diff
changeset
|
1200 return ovl (sv); |
1750 | 1201 } |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1202 |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1203 /* |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1204 %!test |
20016
47d420d769ba
* sysdep.cc (Fget_home_directory): New function.
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1205 %! home = get_home_directory (); |
20064
ab7582167810
Fix failing BIST test for tilde_expand() on Windows (bug #44796).
Rik <rik@octave.org>
parents:
20024
diff
changeset
|
1206 %! assert (tilde_expand ("~/foobar"), [home "/foobar"]); |
12825
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1207 %! assert (tilde_expand ("/foo/bar"), "/foo/bar"); |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1208 %! assert (tilde_expand ("foo/bar"), "foo/bar"); |
a1dcb854a4f9
codesprint: new tests for sysdep.cc functions
John W. Eaton <jwe@octave.org>
parents:
12483
diff
changeset
|
1209 */ |
17851
af685269e06c
avoid symbol conflicts in display.cc
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
1210 |
20016
47d420d769ba
* sysdep.cc (Fget_home_directory): New function.
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1211 DEFUN (get_home_directory, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1212 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1213 @deftypefn {} {@var{homedir} =} get_home_directory () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1214 Return the current home directory. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1215 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1216 On most systems, this is equivalent to @code{getenv ("HOME")}. On Windows |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1217 systems, if the environment variable @env{HOME} is not set then it is |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1218 equivalent to |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1219 @code{fullfile (getenv ("HOMEDRIVE"), getenv ("HOMEPATH"))} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1220 @seealso{getenv} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21949
diff
changeset
|
1221 @end deftypefn */) |
20016
47d420d769ba
* sysdep.cc (Fget_home_directory): New function.
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1222 { |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
1223 return ovl (octave::sys::env::get_home_directory ()); |
20016
47d420d769ba
* sysdep.cc (Fget_home_directory): New function.
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1224 } |
47d420d769ba
* sysdep.cc (Fget_home_directory): New function.
John W. Eaton <jwe@octave.org>
parents:
19861
diff
changeset
|
1225 |
20024
cf9b94a89620
Document get_home_directory in Octave manual and NEWS file.
Rik <rik@octave.org>
parents:
20016
diff
changeset
|
1226 /* |
cf9b94a89620
Document get_home_directory in Octave manual and NEWS file.
Rik <rik@octave.org>
parents:
20016
diff
changeset
|
1227 %!test |
cf9b94a89620
Document get_home_directory in Octave manual and NEWS file.
Rik <rik@octave.org>
parents:
20016
diff
changeset
|
1228 %! if (! ispc ()) |
20181
aa36fb998a4d
maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents:
20172
diff
changeset
|
1229 %! assert (get_home_directory (), getenv ("HOME")); |
20024
cf9b94a89620
Document get_home_directory in Octave manual and NEWS file.
Rik <rik@octave.org>
parents:
20016
diff
changeset
|
1230 %! endif |
cf9b94a89620
Document get_home_directory in Octave manual and NEWS file.
Rik <rik@octave.org>
parents:
20016
diff
changeset
|
1231 */ |