Mercurial > octave
annotate liboctave/system/oct-env.cc @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | f3f3e3793fb5 |
children | e2eed3610b7b |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30394
diff
changeset
|
3 // Copyright (C) 1996-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
2926 | 25 |
26 /* | |
27 | |
28 The functions listed below were adapted from a similar functions | |
29 from GNU Bash, the Bourne Again SHell, copyright (C) 1987, 1989, 1991 | |
30 Free Software Foundation, Inc. | |
31 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
32 octave::sys::env::do_absolute_pathname |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
33 octave::sys::env::do_base_pathname |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
34 octave::sys::env::do_chdir |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
35 octave::sys::env::do_getcwd |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
36 octave::sys::env::do_make_absolute |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
37 octave::sys::env::do_polite_directory_format |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
38 octave::sys::env::pathname_backup |
2926 | 39 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
40 */ |
2926 | 41 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21614
diff
changeset
|
42 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21202
diff
changeset
|
43 # include "config.h" |
2926 | 44 #endif |
45 | |
4093 | 46 #include <cctype> |
2926 | 47 #include <cstdlib> |
10463
bbe99b2a5ba7
undo recent gnulib-related changes
John W. Eaton <jwe@octave.org>
parents:
10447
diff
changeset
|
48 #include <cstring> |
4093 | 49 |
3504 | 50 #include <string> |
2926 | 51 |
4097 | 52 #include "file-ops.h" |
2926 | 53 #include "lo-error.h" |
54 #include "lo-sysdep.h" | |
55 #include "lo-utils.h" | |
56 #include "oct-env.h" | |
30072
96a40641d86e
maint: rename liboctave oct-passwd.* to oct-password.* to match class name.
Rik <rik@octave.org>
parents:
30050
diff
changeset
|
57 #include "oct-password.h" |
2947 | 58 #include "oct-syscalls.h" |
21891
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
59 #include "set-program-name-wrapper.h" |
13983
7dd7cccf0757
clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
60 #include "singleton-cleanup.h" |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21891
diff
changeset
|
61 #include "unistd-wrappers.h" |
2926 | 62 |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
63 #if defined (OCTAVE_USE_WINDOWS_API) |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
64 # include <windows.h> |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
65 # include <shlobj.h> |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
66 #endif |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
67 |
21734
11af9c03400c
write namespace keyword and name on same line in C++ files
John W. Eaton <jwe@octave.org>
parents:
21733
diff
changeset
|
68 namespace octave |
2926 | 69 { |
21734
11af9c03400c
write namespace keyword and name on same line in C++ files
John W. Eaton <jwe@octave.org>
parents:
21733
diff
changeset
|
70 namespace sys |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
71 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
72 env::env (void) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
73 : m_follow_symbolic_links (true), m_verbatim_pwd (true), |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
74 m_current_directory (), m_prog_name (), m_prog_invocation_name (), |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
75 m_user_name (), m_host_name () |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
76 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
77 // Get a real value for the current directory. |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
78 do_getcwd (); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
79 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
80 // Etc. |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
81 do_get_user_name (); |
2926 | 82 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
83 do_get_host_name (); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
84 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
85 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
86 env *env::m_instance = nullptr; |
2926 | 87 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
88 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
89 env::instance_ok (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
90 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
91 bool retval = true; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
92 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
93 if (! m_instance) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
94 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
95 m_instance = new env (); |
26369
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
25916
diff
changeset
|
96 singleton_cleanup_list::add (cleanup_instance); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
97 } |
2926 | 98 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
99 return retval; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
100 } |
2926 | 101 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
102 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
103 env::polite_directory_format (const std::string& name) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
104 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
105 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
106 ? m_instance->do_polite_directory_format (name) : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
107 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
108 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
109 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
110 env::absolute_pathname (const std::string& s) |
13983
7dd7cccf0757
clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
111 { |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
112 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
113 ? m_instance->do_absolute_pathname (s) : false; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
114 } |
13983
7dd7cccf0757
clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
115 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
116 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
117 env::rooted_relative_pathname (const std::string& s) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
118 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
119 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
120 ? m_instance->do_rooted_relative_pathname (s) : false; |
13983
7dd7cccf0757
clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
121 } |
2926 | 122 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
123 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
124 env::base_pathname (const std::string& s) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
125 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
126 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
127 ? m_instance->do_base_pathname (s) : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
128 } |
2926 | 129 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
130 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
131 env::make_absolute (const std::string& s, const std::string& dot_path) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
132 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
133 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
134 ? m_instance->do_make_absolute (s, dot_path) : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
135 } |
2926 | 136 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
137 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
138 env::get_current_directory () |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
139 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
140 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
141 ? m_instance->do_getcwd () : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
142 } |
2926 | 143 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
144 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
145 env::get_home_directory () |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
146 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
147 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
148 ? m_instance->do_get_home_directory () : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
149 } |
2926 | 150 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
151 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
152 env::get_temp_directory () |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
153 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
154 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
155 ? m_instance->do_get_temp_directory () : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
156 } |
2926 | 157 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
158 std::string |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
159 env::get_user_config_directory () |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
160 { |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
161 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
162 ? m_instance->do_get_user_config_directory () : ""; |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
163 } |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
164 |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
165 std::string |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
166 env::get_user_data_directory () |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
167 { |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
168 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
169 ? m_instance->do_get_user_data_directory () : ""; |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
170 } |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
171 |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
172 std::string |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
173 env::get_program_name (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
174 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
175 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
176 ? m_instance->m_prog_name : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
177 } |
2926 | 178 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
179 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
180 env::get_program_invocation_name (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
181 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
182 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
183 ? m_instance->m_prog_invocation_name : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
184 } |
2926 | 185 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
186 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
187 env::set_program_name (const std::string& s) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
188 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
189 if (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
190 m_instance->do_set_program_name (s); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
191 } |
2926 | 192 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
193 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
194 env::get_user_name (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
195 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
196 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
197 ? m_instance->do_get_user_name () : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
198 } |
2926 | 199 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
200 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
201 env::get_host_name (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
202 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
203 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
204 ? m_instance->do_get_host_name () : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
205 } |
2926 | 206 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
207 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
208 env::do_get_temp_directory (void) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
209 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
210 std::string tempd; |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
211 |
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
212 #if defined (__MINGW32__) || defined (_MSC_VER) |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19459
diff
changeset
|
213 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
214 tempd = do_getenv ("TEMP"); |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
215 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
216 if (tempd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
217 tempd = do_getenv ("TMP"); |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
218 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
219 #if defined (P_tmpdir) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
220 if (tempd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
221 tempd = P_tmpdir; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
222 #endif |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
223 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
224 // Some versions of MinGW and MSVC either don't define P_tmpdir, or |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
225 // define it to a single backslash. In such cases just use C:\temp. |
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
|
226 if (tempd.empty () || tempd == R"(\)") |
23804
8057d3f0673d
Use C++11 raw string literals to avoid escaping backslashes in strings.
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
227 tempd = R"(c:\temp)"; |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
228 |
20945
9d9270e2f98f
eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
229 #else |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
230 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
231 tempd = do_getenv ("TMP"); |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
232 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
233 #if defined (P_tmpdir) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
234 if (tempd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
235 tempd = P_tmpdir; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
236 #else |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
237 if (tempd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
238 tempd = "/tmp"; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
239 #endif |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
240 |
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
241 #endif |
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
242 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
243 return tempd; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
244 } |
19458
d8fd3842a507
Use gnulib gen_tempname to create temporary names (Bug #43872).
John Donoghue <john.donoghue@ieee.org>
parents:
17769
diff
changeset
|
245 |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
246 std::string |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
247 env::do_get_user_config_directory (void) const |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
248 { |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
249 std::string cfg_dir; |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
250 |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
251 #if defined (OCTAVE_HAVE_WINDOWS_FILESYSTEM) && defined (OCTAVE_USE_WINDOWS_API) |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
252 wchar_t path[MAX_PATH+1]; |
27838
659acfaaf0c9
Use APPDATA for startup file location on Windows (bug #40444).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27832
diff
changeset
|
253 if (SHGetFolderPathW (nullptr, CSIDL_APPDATA | CSIDL_FLAG_DONT_VERIFY, |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
254 nullptr, SHGFP_TYPE_CURRENT, path) == S_OK) |
29492
be4b78fb4411
Replace Unicode conversion functions from gnulib with STL functions.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
255 cfg_dir = u8_from_wstring (path); |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
256 #else |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
257 cfg_dir = do_getenv ("XDG_CONFIG_HOME"); |
29492
be4b78fb4411
Replace Unicode conversion functions from gnulib with STL functions.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
258 #endif |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
259 |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
260 if (cfg_dir.empty ()) |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
261 cfg_dir = do_get_home_directory () + sys::file_ops::dir_sep_str () |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
262 + ".config"; |
27832
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
263 |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
264 return cfg_dir; |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
265 } |
8fd7d1d2a4ca
Read startup files from XDG_CONFIG_HOME or LOCALAPPDATA (bug #36477).
Mike Miller <mtmiller@octave.org>
parents:
27276
diff
changeset
|
266 |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
267 std::string |
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
268 env::do_get_user_data_directory (void) const |
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
269 { |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
270 std::string data_dir; |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
271 |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
272 #if defined (OCTAVE_HAVE_WINDOWS_FILESYSTEM) && defined (OCTAVE_USE_WINDOWS_API) |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
273 wchar_t path[MAX_PATH+1]; |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
274 if (SHGetFolderPathW (nullptr, CSIDL_APPDATA | CSIDL_FLAG_DONT_VERIFY, |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
275 nullptr, SHGFP_TYPE_CURRENT, path) == S_OK) |
29492
be4b78fb4411
Replace Unicode conversion functions from gnulib with STL functions.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
276 data_dir = u8_from_wstring (path); |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
277 #else |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
278 data_dir = do_getenv ("XDG_DATA_HOME"); |
29492
be4b78fb4411
Replace Unicode conversion functions from gnulib with STL functions.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29359
diff
changeset
|
279 #endif |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
280 |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
281 if (data_dir.empty ()) |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
282 data_dir = do_get_home_directory () + sys::file_ops::dir_sep_str () |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
283 + ".local" + sys::file_ops::dir_sep_str () + "share"; |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
284 |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
285 return data_dir; |
30394
f3f3e3793fb5
maint: style check C++ files in liboctave/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30072
diff
changeset
|
286 } |
28854
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
287 |
491433ba8612
Move history file location to inside XDG_CONFIG_HOME or APPDATA (bug #57463).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
288 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
289 // FIXME: this leaves no way to distinguish between a |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
290 // variable that is not set and one that is set to the empty string. |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
291 // Is this a problem? |
2926 | 292 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
293 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
294 env::getenv (const std::string& name) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
295 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
296 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
297 ? m_instance->do_getenv (name) : ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
298 } |
2926 | 299 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
300 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
301 env::putenv (const std::string& name, const std::string& value) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
302 { |
25916
3f2282954600
Support non-ASCII characters in environment variables on Windows (bug #53922).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
303 putenv_wrapper (name, value); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
304 } |
2926 | 305 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
306 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
307 env::have_x11_display (void) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
308 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
309 std::string display = getenv ("DISPLAY"); |
5489 | 310 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
311 return ! display.empty (); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
312 } |
5489 | 313 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
314 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
315 env::chdir (const std::string& newdir) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
316 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
317 return (instance_ok ()) |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
318 ? m_instance->do_chdir (newdir) : false; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
319 } |
2926 | 320 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
321 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
322 env::do_set_program_name (const std::string& s) const |
21610
eff26982a19b
avoid passing temp string to ::set_program_name (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
323 { |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
324 static bool initialized = false; |
21610
eff26982a19b
avoid passing temp string to ::set_program_name (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
325 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
326 if (! initialized) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
327 { |
21891
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
328 // octave_set_program_name_wrapper returns a cleaned up |
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
329 // version of the program name (stripping libtool's "lt-" |
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
330 // prefix, for example). |
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
331 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
332 // The string passed to gnulib's ::set_program_name function must |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
333 // exist for the duration of the program so allocate a copy here |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
334 // instead of passing S.c_str () which only exists as long as the |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
335 // string object S. |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
336 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
337 m_prog_invocation_name |
21891
3ca0a5b1b313
hide gnulib progname.h header
John W. Eaton <jwe@octave.org>
parents:
21738
diff
changeset
|
338 = octave_set_program_name_wrapper (strsave (s.c_str ())); |
21610
eff26982a19b
avoid passing temp string to ::set_program_name (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
339 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
340 std::size_t pos |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
341 = m_prog_invocation_name.find_last_of (sys::file_ops::dir_sep_chars ()); |
2926 | 342 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
343 // Also keep a shortened version of the program name. |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
344 m_prog_name = (pos == std::string::npos |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
345 ? m_prog_invocation_name |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
346 : m_prog_invocation_name.substr (pos+1)); |
21614
9bb39b754ab1
finish previous change to octave_env::set_program_name
John W. Eaton <jwe@octave.org>
parents:
21610
diff
changeset
|
347 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
348 initialized = true; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
349 } |
21610
eff26982a19b
avoid passing temp string to ::set_program_name (bug #47372)
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
350 } |
2926 | 351 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
352 // Return a pretty pathname. If the first part of the pathname is the |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
353 // same as $HOME, then replace that with '~'. |
2926 | 354 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
355 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
356 env::do_polite_directory_format (const std::string& name) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
357 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
358 std::string retval; |
2926 | 359 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
360 std::string home_dir = do_get_home_directory (); |
2926 | 361 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
362 std::size_t len = home_dir.length (); |
2926 | 363 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
364 if (len > 1 && home_dir == name.substr (0, len) |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
365 && (name.length () == len || sys::file_ops::is_dir_sep (name[len]))) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
366 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
367 retval = "~"; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
368 retval.append (name.substr (len)); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
369 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
370 else |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
371 retval = name; |
2926 | 372 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
373 return retval; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
374 } |
2926 | 375 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
376 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
377 env::do_absolute_pathname (const std::string& s) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
378 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
379 std::size_t len = s.length (); |
4087 | 380 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
381 if (len == 0) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
382 return false; |
2926 | 383 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
384 if (sys::file_ops::is_dir_sep (s[0])) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
385 return true; |
2926 | 386 |
4101 | 387 #if defined (OCTAVE_HAVE_WINDOWS_FILESYSTEM) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
388 if ((len == 2 && isalpha (s[0]) && s[1] == ':') |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
389 || (len > 2 && isalpha (s[0]) && s[1] == ':' |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
390 && sys::file_ops::is_dir_sep (s[2]))) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
391 return true; |
4087 | 392 #endif |
393 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
394 return false; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
395 } |
2926 | 396 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
397 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
398 env::do_rooted_relative_pathname (const std::string& s) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
399 { |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
400 std::size_t len = s.length (); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
401 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
402 if (len == 0) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
403 return false; |
6838 | 404 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
405 if (len == 1 && s[0] == '.') |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
406 return true; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
407 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
408 if (len > 1 && s[0] == '.' && sys::file_ops::is_dir_sep (s[1])) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
409 return true; |
6838 | 410 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
411 if (len == 2 && s[0] == '.' && s[1] == '.') |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
412 return true; |
6838 | 413 |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
414 if (len > 2 && s[0] == '.' && s[1] == '.' |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
415 && sys::file_ops::is_dir_sep (s[2])) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
416 return true; |
6838 | 417 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
418 return false; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
419 } |
6838 | 420 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
421 // Return the 'basename' of the pathname in STRING (the stuff after |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
422 // the last directory separator). If STRING is not a full pathname, |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
423 // simply return it. |
6838 | 424 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
425 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
426 env::do_base_pathname (const std::string& s) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
427 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
428 if (! (do_absolute_pathname (s) || do_rooted_relative_pathname (s))) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
429 return s; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
430 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
431 std::size_t pos = s.find_last_of (sys::file_ops::dir_sep_chars ()); |
2926 | 432 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
433 if (pos == std::string::npos) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
434 return s; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
435 else |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
436 return s.substr (pos+1); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
437 } |
2926 | 438 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
439 // Turn STRING (a pathname) into an absolute pathname, assuming that |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
440 // DOT_PATH contains the symbolic location of the current directory. |
2926 | 441 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
442 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
443 env::do_make_absolute (const std::string& s, |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
444 const std::string& dot_path) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
445 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
446 if (dot_path.empty () || s.empty () || do_absolute_pathname (s)) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
447 return s; |
2926 | 448 |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
449 // Optimization: every time Octave returns to the prompt it calls |
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
450 // make_absolute_filename with '.' as argument. |
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
451 if (s == ".") |
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
452 return dot_path; |
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
453 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
454 std::string current_dir = dot_path; |
2926 | 455 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
456 if (! sys::file_ops::is_dir_sep (current_dir.back ())) |
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
457 current_dir.append (sys::file_ops::dir_sep_str ()); |
2926 | 458 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
459 std::size_t i = 0; |
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
460 std::size_t slen = s.length (); |
2926 | 461 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
462 while (i < slen) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
463 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
464 if (s[i] == '.') |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
465 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
466 if (i + 1 == slen) |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
467 break; |
4097 | 468 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
469 if (sys::file_ops::is_dir_sep (s[i+1])) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
470 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
471 i += 2; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
472 continue; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
473 } |
2926 | 474 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
475 if (s[i+1] == '.' |
22029
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
476 && (i + 2 == slen |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
477 || sys::file_ops::is_dir_sep (s[i+2]))) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
478 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
479 i += 2; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
480 if (i != slen) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
481 i++; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
482 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
483 pathname_backup (current_dir, 1); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
484 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
485 continue; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
486 } |
10314
07ebe522dac2
untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents:
10278
diff
changeset
|
487 } |
2926 | 488 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
489 std::size_t sep_pos; |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
490 sep_pos = s.find_first_of (sys::file_ops::dir_sep_chars (), i); |
2926 | 491 |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
492 if (sep_pos == std::string::npos) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
493 { |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
494 current_dir.append (s, i, sep_pos-i); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
495 break; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
496 } |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
497 else if (sep_pos == i) |
22029
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
498 { |
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
499 /* Two separators in a row, skip adding 2nd separator */ |
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
500 i++; |
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
501 } |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
502 else |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
503 { |
22034
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
504 current_dir.append (s, i, sep_pos-i+1); |
8df31c24dce3
Optimize do_make_absolute for most common calling usage.
Rik <rik@octave.org>
parents:
22029
diff
changeset
|
505 i = sep_pos + 1; |
10314
07ebe522dac2
untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents:
10278
diff
changeset
|
506 } |
07ebe522dac2
untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents:
10278
diff
changeset
|
507 } |
2926 | 508 |
22029
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
509 // Strip any trailing directory separator |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
510 if (sys::file_ops::is_dir_sep (current_dir.back ())) |
22029
6e618b8277ad
Strip extra file separators with make_absolute_filename (bug #48351).
Rik <rik@octave.org>
parents:
21942
diff
changeset
|
511 current_dir.pop_back (); |
22066
c4ef0b3dc40c
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
22034
diff
changeset
|
512 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
513 return current_dir; |
2926 | 514 } |
515 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
516 // Return a string which is the current working directory. |
2926 | 517 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
518 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
519 env::do_getcwd () const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
520 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
521 if (! m_follow_symbolic_links) |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
522 m_current_directory = ""; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
523 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
524 if (m_verbatim_pwd || m_current_directory.empty ()) |
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
525 m_current_directory = sys::getcwd (); |
2926 | 526 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
527 return m_current_directory; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
528 } |
2926 | 529 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
530 // This value is not cached because it can change while Octave is |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
531 // running. |
2926 | 532 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
533 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
534 env::do_get_home_directory (void) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
535 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
536 std::string hd = do_getenv ("HOME"); |
2926 | 537 |
6096 | 538 #if defined (__MINGW32__) || defined (_MSC_VER) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
539 // Maybe we are started directly from cmd.exe. |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
540 if (hd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
541 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
542 std::string drv = do_getenv ("HOMEDRIVE"); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
543 if (drv.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
544 hd = do_getenv ("HOMEPATH"); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
545 else |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
546 hd = drv + do_getenv ("HOMEPATH"); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
547 } |
5451 | 548 #endif |
549 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
550 if (hd.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
551 { |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
552 sys::password pw = sys::password::getpwuid (sys::getuid ()); |
2947 | 553 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
554 hd = (pw ? pw.dir () : std::string (sys::file_ops::dir_sep_str ())); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
555 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
556 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
557 return hd; |
2947 | 558 } |
559 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
560 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
561 env::do_get_user_name (void) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
562 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
563 if (m_user_name.empty ()) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
564 { |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
26836
diff
changeset
|
565 sys::password pw = sys::password::getpwuid (sys::getuid ()); |
2926 | 566 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
567 m_user_name = (pw ? pw.name () : "unknown"); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
568 } |
2926 | 569 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
570 return m_user_name; |
2926 | 571 } |
572 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
573 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
574 env::do_get_host_name (void) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
575 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
576 if (m_host_name.empty ()) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
577 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
578 char hostname[1024]; |
2926 | 579 |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21891
diff
changeset
|
580 int status = octave_gethostname_wrapper (hostname, 1023); |
2926 | 581 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
582 m_host_name = (status < 0) ? "unknown" : hostname; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
583 } |
2926 | 584 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
585 return m_host_name; |
2926 | 586 } |
587 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
588 std::string |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
589 env::do_getenv (const std::string& name) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
590 { |
25916
3f2282954600
Support non-ASCII characters in environment variables on Windows (bug #53922).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
591 return getenv_wrapper (name); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
592 } |
2926 | 593 |
23829
01899bdd2a3a
Eliminate unnecessary std::string ("...") constructor calls when "..." suffices.
Rik <rik@octave.org>
parents:
23812
diff
changeset
|
594 // Do the work of changing to the directory NEWDIR. |
01899bdd2a3a
Eliminate unnecessary std::string ("...") constructor calls when "..." suffices.
Rik <rik@octave.org>
parents:
23812
diff
changeset
|
595 // Handle symbolic link following, etc. |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
596 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
597 bool |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
598 env::do_chdir (const std::string& newdir) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
599 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
600 bool retval = false; |
2926 | 601 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
602 std::string tmp; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
603 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
604 if (m_follow_symbolic_links) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
605 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
606 if (m_current_directory.empty ()) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
607 do_getcwd (); |
2926 | 608 |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
609 if (m_current_directory.empty ()) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
610 tmp = newdir; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
611 else |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
612 tmp = do_make_absolute (newdir, m_current_directory); |
2926 | 613 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
614 // Get rid of trailing directory separator. |
23812
057a894914df
Use C++11 string fcns back() and pop_back() to simplify code.
Rik <rik@octave.org>
parents:
23809
diff
changeset
|
615 if (tmp.length () > 1 && sys::file_ops::is_dir_sep (tmp.back ())) |
057a894914df
Use C++11 string fcns back() and pop_back() to simplify code.
Rik <rik@octave.org>
parents:
23809
diff
changeset
|
616 tmp.pop_back (); |
2926 | 617 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
618 if (! sys::chdir (tmp)) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
619 { |
30050
0a8c6cafd7cc
maint: use "m_" prefix for member variables in oct-env.h.
Rik <rik@octave.org>
parents:
29655
diff
changeset
|
620 m_current_directory = tmp; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
621 retval = true; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
622 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
623 } |
2926 | 624 else |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
625 retval = (! sys::chdir (newdir)); |
2926 | 626 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
627 return retval; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
628 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
629 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
630 // Remove the last N directories from PATH. |
2926 | 631 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
632 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
633 env::pathname_backup (std::string& path, int n) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
634 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
635 if (path.empty ()) |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
636 return; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
637 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
638 std::size_t i = path.length () - 1; |
2926 | 639 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
640 while (n--) |
10314
07ebe522dac2
untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents:
10278
diff
changeset
|
641 { |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
642 while (sys::file_ops::is_dir_sep (path[i]) && i > 0) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
643 i--; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
644 |
26819
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
645 #if defined (OCTAVE_HAVE_WINDOWS_FILESYSTEM) |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
646 // Don't strip file letter part. |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
647 if (i == 1 && path[i] == ':') |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
648 { |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
649 // Keep path separator if present. |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
650 i = std::min (i+2, path.length ()); |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
651 break; |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
652 } |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
653 #endif |
670ebc29ec69
make_absolute_filename: Don't strip drive letter from path (bug #36677).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26377
diff
changeset
|
654 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23457
diff
changeset
|
655 while (! sys::file_ops::is_dir_sep (path[i]) && i > 0) |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
656 i--; |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
657 |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
658 i++; |
10314
07ebe522dac2
untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents:
10278
diff
changeset
|
659 } |
2926 | 660 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
661 path.resize (i); |
2926 | 662 } |
663 | |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
664 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
665 env::error (int err_num) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
666 { |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21910
diff
changeset
|
667 (*current_liboctave_error_handler) ("%s", std::strerror (err_num)); |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
668 } |
2926 | 669 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
670 void |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
671 env::error (const std::string& s) const |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
672 { |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
673 (*current_liboctave_error_handler) ("%s", s.c_str ()); |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
674 } |
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21729
diff
changeset
|
675 } |
2926 | 676 } |