Mercurial > octave
annotate liboctave/system/file-stat.h @ 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 | 5ea53078eb8b |
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:
30081
diff
changeset
|
3 // Copyright (C) 1996-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
2926 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
26 #if ! defined (octave_file_stat_h) |
2926 | 27 #define octave_file_stat_h 1 |
28 | |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21017
diff
changeset
|
29 #include "octave-config.h" |
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21017
diff
changeset
|
30 |
2926 | 31 #include <string> |
32 | |
3260 | 33 #include "oct-time.h" |
34 | |
2926 | 35 #include <sys/types.h> |
36 | |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
37 namespace octave |
2926 | 38 { |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
39 namespace sys |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
40 { |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
41 class |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
42 OCTAVE_API |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
43 base_file_stat |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
44 { |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
45 public: |
2926 | 46 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
47 base_file_stat (void) |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
48 : m_initialized (false), m_fail (false), m_errmsg (), m_mode (), |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
49 m_ino (), m_dev (), m_nlink (), m_uid (), m_gid (), |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
50 m_size (), m_atime (), m_mtime (), m_ctime (), m_rdev (), |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
51 m_blksize (), m_blocks () { } |
8549 | 52 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
53 base_file_stat (const base_file_stat& fs) |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
54 : m_initialized (fs.m_initialized), m_fail (fs.m_fail), |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
55 m_errmsg (fs.m_errmsg), m_mode (fs.m_mode), m_ino (fs.m_ino), |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
56 m_dev (fs.m_dev), m_nlink (fs.m_nlink), m_uid (fs.m_uid), |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
57 m_gid (fs.m_gid), m_size (fs.m_size), m_atime (fs.m_atime), |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
58 m_mtime (fs.m_mtime), m_ctime (fs.m_ctime), m_rdev (fs.m_rdev), |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
59 m_blksize (fs.m_blksize), m_blocks (fs.m_blocks) { } |
8549 | 60 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
61 base_file_stat& operator = (const base_file_stat& fs) |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
62 { |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
63 if (this != &fs) |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
64 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
65 m_initialized = fs.m_initialized; |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
66 m_fail = fs.m_fail; |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
67 m_errmsg = fs.m_errmsg; |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
68 m_mode = fs.m_mode; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
69 m_ino = fs.m_ino; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
70 m_dev = fs.m_dev; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
71 m_nlink = fs.m_nlink; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
72 m_uid = fs.m_uid; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
73 m_gid = fs.m_gid; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
74 m_size = fs.m_size; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
75 m_atime = fs.m_atime; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
76 m_mtime = fs.m_mtime; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
77 m_ctime = fs.m_ctime; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
78 m_rdev = fs.m_rdev; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
79 m_blksize = fs.m_blksize; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
80 m_blocks = fs.m_blocks; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
81 } |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
82 |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
83 return *this; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
84 } |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
85 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
86 // The minimum difference in file time stamp values. |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
87 // FIXME: This value should come from the filesystem itself. |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
88 // How can we get that info? |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
89 sys::time time_resolution (void) const |
2926 | 90 { |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
91 static sys::time resolution (1.0); |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
92 return resolution; |
2926 | 93 } |
94 | |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
95 // File status and info. The is_XXX functions will return false for |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
96 // file_stat objects that are not properly initialized. The others |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
97 // should all return 0 (or the equivalent, for the given object) |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
98 // which is likely not meaningful. |
2926 | 99 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
100 bool is_blk (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
101 bool is_chr (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
102 bool is_dir (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
103 bool is_fifo (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
104 bool is_lnk (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
105 bool is_reg (void) const; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
106 bool is_sock (void) const; |
2926 | 107 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
108 static bool is_blk (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
109 static bool is_chr (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
110 static bool is_dir (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
111 static bool is_fifo (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
112 static bool is_lnk (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
113 static bool is_reg (mode_t mode); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
114 static bool is_sock (mode_t mode); |
2926 | 115 |
21935 | 116 static bool have_struct_stat_st_rdev (void); |
117 static bool have_struct_stat_st_blksize (void); | |
118 static bool have_struct_stat_st_blocks (void); | |
119 | |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
120 ino_t ino (void) const { return m_ino; } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
121 dev_t dev (void) const { return m_dev; } |
5476 | 122 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
123 nlink_t nlink (void) const { return m_nlink; } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
124 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
125 uid_t uid (void) const { return m_uid; } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
126 gid_t gid (void) const { return m_gid; } |
2926 | 127 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
128 off_t size (void) const { return m_size; } |
2926 | 129 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
130 sys::time atime (void) const { return m_atime; } |
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
131 sys::time mtime (void) const { return m_mtime; } |
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
132 sys::time ctime (void) const { return m_ctime; } |
2926 | 133 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
134 dev_t rdev (void) const { return m_rdev; } |
2926 | 135 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
136 long blksize (void) const { return m_blksize; } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
137 long blocks (void) const { return m_blocks; } |
2926 | 138 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
139 mode_t mode (void) const { return m_mode; } |
2926 | 140 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
141 std::string mode_as_string (void) const; |
5476 | 142 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
143 bool ok (void) const { return m_initialized && ! m_fail; } |
2926 | 144 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
145 operator bool () const { return ok (); } |
2926 | 146 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
147 bool exists (void) const { return ok (); } |
2926 | 148 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
149 std::string error (void) const { return ok () ? "" : m_errmsg; } |
2926 | 150 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
151 // Has the file referenced by this object been modified since TIME? |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
152 bool is_newer (const sys::time& time) const { return m_mtime > time; } |
2926 | 153 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
154 // It's nice to be able to hide the file_stat object if we don't |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
155 // really care about it. |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
156 static int is_newer (const std::string&, const sys::time&); |
2926 | 157 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
158 protected: |
11506
964b7fd379f1
more constructor/destructor fixes
John W. Eaton <jwe@octave.org>
parents:
10312
diff
changeset
|
159 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
160 virtual ~base_file_stat (void) = default; |
2926 | 161 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
162 // TRUE means we have already called stat. |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
163 bool m_initialized; |
2926 | 164 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
165 // TRUE means the stat for this file failed. |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
166 bool m_fail; |
2926 | 167 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
168 // If a failure occurs, this contains the system error text. |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
169 std::string m_errmsg; |
2926 | 170 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
171 // file type and permissions |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
172 mode_t m_mode; |
2926 | 173 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
174 // serial number |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
175 ino_t m_ino; |
2926 | 176 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
177 // device number |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
178 dev_t m_dev; |
2926 | 179 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
180 // number of links |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
181 nlink_t m_nlink; |
2926 | 182 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
183 // user ID of owner |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
184 uid_t m_uid; |
2926 | 185 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
186 // group ID of owner |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
187 gid_t m_gid; |
2926 | 188 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
189 // size in bytes, for regular files |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
190 off_t m_size; |
2926 | 191 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
192 // time of last access |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
193 sys::time m_atime; |
2926 | 194 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
195 // time of last modification |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
196 sys::time m_mtime; |
8549 | 197 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
198 // time of last file status change |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
199 sys::time m_ctime; |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
200 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
201 // device number for special files |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
202 dev_t m_rdev; |
8549 | 203 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
204 // best I/O block size |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
205 long m_blksize; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
206 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
207 // number of 512-byte blocks allocated |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
208 long m_blocks; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
209 }; |
8549 | 210 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
211 class |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
212 OCTAVE_API |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
213 file_stat : public base_file_stat |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
214 { |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
215 public: |
8549 | 216 |
23206
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
217 // This constructor must remain defined in the cpp file rather than in |
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
218 // the header file (bug #50234). |
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
219 file_stat (const std::string& n = "", bool fl = true); |
8549 | 220 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
221 file_stat (const file_stat& fs) |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
222 : base_file_stat (fs), m_file_name (fs.m_file_name), |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
223 m_follow_links (fs.m_follow_links) { } |
8549 | 224 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
225 file_stat& operator = (const file_stat& fs) |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
226 { |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
227 if (this != &fs) |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
228 { |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
229 base_file_stat::operator = (fs); |
8549 | 230 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
231 m_file_name = fs.m_file_name; |
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
232 m_follow_links = fs.m_follow_links; |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
233 } |
8549 | 234 |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
235 return *this; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
236 } |
8549 | 237 |
23206
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
238 // This destructor must remain as an empty destructor defined in the |
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
239 // cpp file rather than in the header file (bug #50234). |
525c36d5f985
Workaround segfault in file_stat (bug #50234).
Rik <rik@octave.org>
parents:
23083
diff
changeset
|
240 ~file_stat (void); |
8549 | 241 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
242 void get_stats (bool force = false) |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
243 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
244 if (! m_initialized || force) |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
245 update_internal (force); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
246 } |
8549 | 247 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
248 void get_stats (const std::string& n, bool force = false) |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
249 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
250 if (n != m_file_name || ! m_initialized || force) |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
251 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
252 m_initialized = false; |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
253 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
254 m_file_name = n; |
2926 | 255 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
256 update_internal (force); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
257 } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
258 } |
2926 | 259 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
260 private: |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
261 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
262 // Name of the file. |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
263 std::string m_file_name; |
8549 | 264 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
265 // TRUE means follow symbolic links to the ultimate file (stat). |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
266 // FALSE means get information about the link itself (lstat). |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
267 bool m_follow_links; |
8549 | 268 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
269 void update_internal (bool force = false); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
270 }; |
8549 | 271 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
272 class |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
273 OCTAVE_API |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
274 file_fstat : public base_file_stat |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
275 { |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
276 public: |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
277 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
278 file_fstat (int n) : base_file_stat (), m_fid (n) |
8549 | 279 { |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
280 update_internal (); |
8549 | 281 } |
282 | |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
283 file_fstat (const file_fstat& fs) |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
284 : base_file_stat (fs), m_fid (fs.m_fid) { } |
8549 | 285 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
286 file_fstat& operator = (const file_fstat& fs) |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
287 { |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
288 if (this != &fs) |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
289 { |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
290 base_file_stat::operator = (fs); |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
291 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
292 m_fid = fs.m_fid; |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
293 } |
8549 | 294 |
22402
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
295 return *this; |
4caa7b28d183
maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
296 } |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
297 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
298 ~file_fstat (void) = default; |
8549 | 299 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
300 void get_stats (bool force = false) |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
301 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
302 if (! m_initialized || force) |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
303 update_internal (force); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
304 } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
305 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
306 void get_stats (int n, bool force = false) |
8549 | 307 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
308 if (n != m_fid || ! m_initialized || force) |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
309 { |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
310 m_initialized = false; |
8549 | 311 |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
312 m_fid = n; |
8549 | 313 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
314 update_internal (force); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
315 } |
8549 | 316 } |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
317 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
318 private: |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
319 |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
320 // Open file descriptor. |
30081
5ea53078eb8b
maint: use "m_" prefix for member variables in file 'file-stat.h'.
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
321 int m_fid; |
8549 | 322 |
21736
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
323 void update_internal (bool force = false); |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
324 }; |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
325 } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
326 } |
0504351a45e6
use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents:
21730
diff
changeset
|
327 |
2926 | 328 #endif |