fileStat.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2015 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  fileStat(const fileName& fName, const unsigned int maxTime=0);
84 
85  //- Construct from Istream
86  fileStat(Istream&);
87 
88 
89  // Member Functions
90 
91  // Access
92 
93  //- Raw status
94  const struct stat& status() const
95  {
96  return status_;
97  }
98 
99  //- Did constructor fail
100  bool isValid() const
101  {
102  return isValid_;
103  }
104 
105 
106  // Check
107 
108  //- Compare two fileStats for same device
109  bool sameDevice(const fileStat& stat2) const;
110 
111  //- Compare two fileStats for same Inode
112  bool sameINode(const fileStat& stat2) const;
113 
114  //- Compare state against inode
115  bool sameINode(const label iNode) const;
116 
117 
118  // IOstream Operators
119 
120  friend Istream& operator>>(Istream&, fileStat&);
121  friend Ostream& operator<<(Ostream&, const fileStat&);
122 };
123 
124 
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 
127 } // End namespace Foam
128 
129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
130 
131 #endif
132 
133 // ************************************************************************* //
bool sameINode(const fileStat &stat2) const
Compare two fileStats for same Inode.
Definition: fileStat.C:84
bool sameDevice(const fileStat &stat2) const
Compare two fileStats for same device.
Definition: fileStat.C:73
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:35
friend Ostream & operator<<(Ostream &, const fileStat &)
Istream & operator>>(Istream &, directionInfo &)
bool isValid() const
Did constructor fail.
Definition: fileStat.H:99
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 &)
const struct stat & status() const
Raw status.
Definition: fileStat.H:93
Namespace for OpenFOAM.