Mercurial > octave
annotate libinterp/corefcn/oct-procbuf.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 | 8dd5da409418 |
children | e88a07dec498 |
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:
30125
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 //////////////////////////////////////////////////////////////////////// |
2094 | 25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
27 # include "config.h" |
2094 | 28 #endif |
29 | |
30 #include <cerrno> | |
31 | |
25438
cb1606f78f6b
prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
32 #include <iomanip> |
2094 | 33 |
22264
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
34 // FIXME: we would prefer to avoid including these directly in Octave |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
35 // sources, but eliminating them is complicated by the mingling of |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
36 // octave_procbuf_list and the calls to system library functions like |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
37 // execl. |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
38 |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
39 #if defined (HAVE_UNISTD_H) |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
40 # if defined (HAVE_SYS_TYPES_H) |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
41 # include <sys/types.h> |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
42 # endif |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
43 # include <unistd.h> |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
44 #endif |
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
45 |
3174 | 46 #include "lo-mappers.h" |
47 #include "lo-utils.h" | |
2094 | 48 #include "oct-procbuf.h" |
5453 | 49 #include "oct-syscalls.h" |
6726 | 50 #include "sysdep.h" |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
51 #include "unistd-wrappers.h" |
3176 | 52 #include "variables.h" |
2094 | 53 |
3174 | 54 #include "defun.h" |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
55 #include "errwarn.h" |
3308 | 56 #include "utils.h" |
3174 | 57 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
58 OCTAVE_NAMESPACE_BEGIN |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
59 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
60 #if ! defined (SHELL_PATH) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
61 # define SHELL_PATH "/bin/sh" |
15756
ea1a1fb00744
Make the path to the shell interpreter configuable
Mike Miller <mtmiller@ieee.org>
parents:
15195
diff
changeset
|
62 #endif |
ea1a1fb00744
Make the path to the shell interpreter configuable
Mike Miller <mtmiller@ieee.org>
parents:
15195
diff
changeset
|
63 |
2094 | 64 // This class is based on the procbuf class from libg++, written by |
65 // Per Bothner, Copyright (C) 1993 Free Software Foundation. | |
66 | |
24118
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23795
diff
changeset
|
67 #if (! (defined (__CYGWIN__) || defined (__MINGW32__) || defined (_MSC_VER)) \ |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23795
diff
changeset
|
68 && defined (HAVE_UNISTD_H)) |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23795
diff
changeset
|
69 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
70 static procbuf *procbuf_list = nullptr; |
2094 | 71 |
24118
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23795
diff
changeset
|
72 #endif |
f87c9f5c0f43
maint: silence several compiler warnings when building for Windows
Mike Miller <mtmiller@octave.org>
parents:
23795
diff
changeset
|
73 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21609
diff
changeset
|
74 #if ! defined (BUFSIZ) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
75 # define BUFSIZ 1024 |
6094 | 76 #endif |
77 | |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
78 procbuf * |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
79 procbuf::open (const char *command, int mode) |
2094 | 80 { |
6096 | 81 #if defined (__CYGWIN__) || defined (__MINGW32__) || defined (_MSC_VER) |
4472 | 82 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
83 if (is_open ()) |
4472 | 84 return 0; |
85 | |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
86 m_f = (octave::popen (command, (mode & std::ios::in) ? "r" : "w")); |
4472 | 87 |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
88 if (! m_f) |
4472 | 89 return 0; |
90 | |
91 // Oops... popen doesn't return the associated pid, so fake it for now | |
92 | |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
93 m_proc_pid = 1; |
4472 | 94 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
95 m_open_p = true; |
4472 | 96 |
97 if (mode & std::ios::out) | |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
98 ::setvbuf (m_f, nullptr, _IOLBF, BUFSIZ); |
4472 | 99 |
100 return this; | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
101 |
22264
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
102 #elif defined (HAVE_UNISTD_H) |
2094 | 103 |
104 int pipe_fds[2]; | |
105 | |
3544 | 106 volatile int child_std_end = (mode & std::ios::in) ? 1 : 0; |
3156 | 107 |
3147 | 108 volatile int parent_end, child_end; |
2094 | 109 |
110 if (is_open ()) | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
111 return nullptr; |
2094 | 112 |
21727
e0da98857c19
rename octave::syscalls namespace to octave::sys
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
113 if (octave::sys::pipe (pipe_fds) < 0) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
114 return nullptr; |
2094 | 115 |
3544 | 116 if (mode & std::ios::in) |
2094 | 117 { |
118 parent_end = pipe_fds[0]; | |
119 child_end = pipe_fds[1]; | |
120 } | |
121 else | |
122 { | |
123 parent_end = pipe_fds[1]; | |
124 child_end = pipe_fds[0]; | |
125 } | |
126 | |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
127 m_proc_pid = ::fork (); |
2094 | 128 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
129 if (m_proc_pid == 0) |
2094 | 130 { |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
131 octave_close_wrapper (parent_end); |
2094 | 132 |
133 if (child_end != child_std_end) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
134 { |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
135 octave_dup2_wrapper (child_end, child_std_end); |
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
136 octave_close_wrapper (child_end); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
137 } |
2094 | 138 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
139 while (procbuf_list) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
140 { |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
141 FILE *fp = procbuf_list->m_f; |
3644 | 142 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
143 if (fp) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
144 { |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21910
diff
changeset
|
145 std::fclose (fp); |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
146 fp = nullptr; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
147 } |
3644 | 148 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
149 procbuf_list = procbuf_list->m_next; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
150 } |
2094 | 151 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
152 execl (SHELL_PATH, "sh", "-c", command, static_cast<void *> (nullptr)); |
2094 | 153 |
154 exit (127); | |
155 } | |
156 | |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
157 octave_close_wrapper (child_end); |
2094 | 158 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
159 if (m_proc_pid < 0) |
2094 | 160 { |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21852
diff
changeset
|
161 octave_close_wrapper (parent_end); |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
162 return nullptr; |
2094 | 163 } |
164 | |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
165 m_f = (::fdopen (parent_end, (mode & std::ios::in) ? "r" : "w")); |
3631 | 166 |
3649 | 167 if (mode & std::ios::out) |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
168 ::setvbuf (m_f, nullptr, _IOLBF, BUFSIZ); |
3649 | 169 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
170 m_open_p = true; |
2094 | 171 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
172 m_next = procbuf_list; |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
173 procbuf_list = this; |
2094 | 174 |
175 return this; | |
176 | |
177 #else | |
178 | |
179 return 0; | |
180 | |
181 #endif | |
182 } | |
183 | |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
184 procbuf * |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
185 procbuf::close (void) |
2094 | 186 { |
6096 | 187 #if defined (__CYGWIN__) || defined (__MINGW32__) || defined (_MSC_VER) |
4472 | 188 |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
189 if (m_f) |
4472 | 190 { |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
191 m_wstatus = octave::pclose (m_f); |
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
192 m_f = 0; |
4472 | 193 } |
194 | |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
195 m_open_p = false; |
4472 | 196 |
197 return this; | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
198 |
22264
9b78fda78300
fix build failure for --without-z (bug #48757)
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
199 #elif defined (HAVE_UNISTD_H) |
2094 | 200 |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
201 if (m_f) |
3644 | 202 { |
203 pid_t wait_pid; | |
2094 | 204 |
3644 | 205 int status = -1; |
206 | |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
207 for (procbuf **ptr = &procbuf_list; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
208 *ptr != nullptr; |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
209 ptr = &(*ptr)->m_next) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
210 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
211 if (*ptr == this) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
212 { |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
213 *ptr = (*ptr)->m_next; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
214 status = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
215 break; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
216 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
217 } |
2094 | 218 |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
219 if (status == 0 && std::fclose (m_f) == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
220 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
221 using namespace std; |
3531 | 222 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
223 do |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
224 { |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
225 wait_pid = octave::sys::waitpid (m_proc_pid, &m_wstatus, 0); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
226 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
227 while (wait_pid == -1 && errno == EINTR); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
228 } |
3644 | 229 |
30125
8dd5da409418
maint: use "m_" prefix for member variables in file c-file-ptr-stream.h.
Rik <rik@octave.org>
parents:
30124
diff
changeset
|
230 m_f = nullptr; |
3631 | 231 } |
2094 | 232 |
30124
041dbcd1f93b
maint: use "m_" prefix for member variables in class procbuf.
Rik <rik@octave.org>
parents:
29991
diff
changeset
|
233 m_open_p = false; |
2094 | 234 |
3631 | 235 return this; |
2094 | 236 |
237 #else | |
238 | |
3631 | 239 return 0; |
2094 | 240 |
241 #endif | |
242 } | |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
243 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
244 OCTAVE_NAMESPACE_END |