fileStat.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::fileStat
26 
27 Description
28  Wrapper for stat() system call.
29 
30 Warning
31  on Linux (an maybe on others) a stat() of an nfs mounted (remote)
32  file does never timeout and cannot be interrupted!
33  So e.g. Foam::ping first and hope nfs is running.
34 
35 SourceFiles
36  fileStat.C
37 
38 \*---------------------------------------------------------------------------*/
39 
40 #ifndef fileStat_H
41 #define fileStat_H
42 
43 #include <sys/stat.h>
44 #include <sys/types.h>
45 
46 #include "label.H"
47 #include "fileName.H"
48 
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 
51 namespace Foam
52 {
53 
54 // Forward declaration of friend functions and operators
55 
56 class fileStat;
57 
58 Istream& operator>>(Istream&, fileStat&);
59 Ostream& operator<<(Ostream&, const fileStat&);
60 
61 
62 /*---------------------------------------------------------------------------*\
63  Class fileStat Declaration
64 \*---------------------------------------------------------------------------*/
65 
66 class fileStat
67 {
68  // Private data
69 
70  struct stat status_;
71 
72  bool isValid_;
73 
74 
75 public:
76 
77  // Constructors
78 
79  //- Empty constructor
80  fileStat();
81 
82  //- Construct from components.
83  // followLink : in case of link get status of pointed-to file
84  // maxTime : time out
85  fileStat
86  (
87  const fileName& fName,
88  const bool followLink = true,
89  const unsigned int maxTime = 0
90  );
91 
92  //- Construct from Istream
93  fileStat(Istream&);
94 
95 
96  // Member Functions
97 
98  // Access
99 
100  //- Raw status
101  const struct stat& status() const
102  {
103  return status_;
104  }
105 
106  //- Did constructor fail
107  bool isValid() const
108  {
109  return isValid_;
110  }
111 
112 
113  // Check
114 
115  //- Compare two fileStats for same device
116  bool sameDevice(const fileStat& stat2) const;
117 
118  //- Compare two fileStats for same Inode
119  bool sameINode(const fileStat& stat2) const;
120 
121  //- Compare state against inode
122  bool sameINode(const label iNode) const;
123 
124 
125  // IOstream Operators
126 
127  friend Istream& operator>>(Istream&, fileStat&);
128  friend Ostream& operator<<(Ostream&, const fileStat&);
129 };
130 
131 
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 
134 } // End namespace Foam
135 
136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 
138 #endif
139 
140 // ************************************************************************* //
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
A class for handling file names.
Definition: fileName.H:69
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
fileStat()
Empty constructor.
Definition: fileStat.C:36
friend Ostream & operator<<(Ostream &, const fileStat &)
bool sameINode(const fileStat &stat2) const
Compare two fileStats for same Inode.
Definition: fileStat.C:104
const struct stat & status() const
Raw status.
Definition: fileStat.H:100
bool sameDevice(const fileStat &stat2) const
Compare two fileStats for same device.
Definition: fileStat.C:93
Istream & operator>>(Istream &, directionInfo &)
friend Istream & operator>>(Istream &, fileStat &)
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:53
Wrapper for stat() system call.
Definition: fileStat.H:65
Ostream & operator<<(Ostream &, const ensightPart &)
bool isValid() const
Did constructor fail.
Definition: fileStat.H:106
Namespace for OpenFOAM.