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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
25
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
26 /*
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
27
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
28 The functions listed below were adapted from a similar functions
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
29 from GNU Bash, the Bourne Again SHell, copyright (C) 1987, 1989, 1991
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
30 Free Software Foundation, Inc.
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
39
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
40 */
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
44 #endif
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
45
4093
5a82e874999b [project @ 2002-10-08 23:48:45 by jwe]
jwe
parents: 4089
diff changeset
46 #include <cctype>
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
47 #include <cstdlib>
10463
bbe99b2a5ba7 undo recent gnulib-related changes
John W. Eaton <jwe@octave.org>
parents: 10447
diff changeset
48 #include <cstring>
4093
5a82e874999b [project @ 2002-10-08 23:48:45 by jwe]
jwe
parents: 4089
diff changeset
49
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 3347
diff changeset
50 #include <string>
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
51
4097
596f88296519 [project @ 2002-10-09 20:26:27 by jwe]
jwe
parents: 4093
diff changeset
52 #include "file-ops.h"
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
53 #include "lo-error.h"
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
54 #include "lo-sysdep.h"
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
55 #include "lo-utils.h"
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
cf676ff8b702 [project @ 1997-05-09 13:32:46 by jwe]
jwe
parents: 2938
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
250917610b55 [project @ 2005-10-12 23:53:36 by jwe]
jwe
parents: 5454
diff changeset
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
250917610b55 [project @ 2005-10-12 23:53:36 by jwe]
jwe
parents: 5454
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
a54f61b5d491 [project @ 2002-10-05 03:02:56 by jwe]
jwe
parents: 3803
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
386
4101
ea537559ab07 [project @ 2002-10-11 20:57:21 by jwe]
jwe
parents: 4099
diff changeset
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
a54f61b5d491 [project @ 2002-10-05 03:02:56 by jwe]
jwe
parents: 3803
diff changeset
392 #endif
a54f61b5d491 [project @ 2002-10-05 03:02:56 by jwe]
jwe
parents: 3803
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
5e3350bdd91d [project @ 2007-08-28 02:59:58 by jwe]
jwe
parents: 6184
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
596f88296519 [project @ 2002-10-09 20:26:27 by jwe]
jwe
parents: 4093
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
514 }
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
537
6096
40212bfaed1d [project @ 2006-10-26 01:57:49 by jwe]
jwe
parents: 5775
diff changeset
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
ed08548b9054 [project @ 2005-09-15 19:52:50 by jwe]
jwe
parents: 5307
diff changeset
548 #endif
ed08548b9054 [project @ 2005-09-15 19:52:50 by jwe]
jwe
parents: 5307
diff changeset
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
cf676ff8b702 [project @ 1997-05-09 13:32:46 by jwe]
jwe
parents: 2938
diff changeset
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
cf676ff8b702 [project @ 1997-05-09 13:32:46 by jwe]
jwe
parents: 2938
diff changeset
558 }
cf676ff8b702 [project @ 1997-05-09 13:32:46 by jwe]
jwe
parents: 2938
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
571 }
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
586 }
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
660
21732
6a1eded90355 use namespace for system env class
John W. Eaton <jwe@octave.org>
parents: 21729
diff changeset
661 path.resize (i);
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
662 }
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
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
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents:
diff changeset
676 }