OSspecific.H 5.72 KB
Newer Older
1
2
3
4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
5
    \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
6
7
8
9
10
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

11
12
13
14
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
15
16
17
18
19
20
21

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    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
25
26
27

InNamespace
    Foam

Description
28
29
    Functions used by OpenFOAM that are specific to POSIX compliant
    operating systems and need to be replaced or emulated on other systems.
30
31

SourceFiles
32
    POSIX.C
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

\*---------------------------------------------------------------------------*/

#ifndef OSspecific_H
#define OSspecific_H

#include "fileNameList.H"
#include "long.H"

#include <sys/types.h>

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//- Return the PID of this process
pid_t pid();

//- Return the parent PID of this process
pid_t ppid();

//- Return the group PID of this process
pid_t pgid();

//- Return true if environment variable of given name is defined
bool env(const word&);

//- Return environment variable of given name
64
//  Return string() if the environment is undefined
65
string getEnv(const word&);
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

//- Set an environment variable
bool setEnv(const word& name, const string& value, const bool overwrite);

//- Return the system's host name
word hostName();

//- Return the user's login name
word userName();

//- Return home directory path name for the current user
fileName home();

//- Return home directory path name for a particular user
fileName home(const word& userName);

//- Return current working directory path name
fileName cwd();

//- Change the current directory to the one given and return true,
//  else return false
bool chDir(const fileName& dir);

//- Search for @em name in the following hierarchy:
//  -# personal settings:
//    - ~/.OpenFOAM/\<VERSION\>/
//      <em>for version-specific files</em>
//    - ~/.OpenFOAM/
//      <em>for version-independent files</em>
//  -# site-wide settings:
//    - $WM_PROJECT_INST_DIR/site/\<VERSION\>
//      <em>for version-specific files</em>
//    - $WM_PROJECT_INST_DIR/site/
//      <em>for version-independent files</em>
//  -# shipped settings:
//    - $WM_PROJECT_DIR/etc/
//
103
//  @return the full path name or fileName() if the name cannot be found
104
//  Optionally abort if the file cannot be found
105
fileName findEtcFile(const fileName&, bool mandatory=false);
106
107
108
109
110
111

//- Make a directory and return an error if it could not be created
//  and does not already exist
bool mkDir(const fileName&, mode_t=0777);

//- Set the file mode
Mark Olesen's avatar
Mark Olesen committed
112
bool chMod(const fileName&, const mode_t);
113
114
115
116

//- Return the file mode
mode_t mode(const fileName&);

Mark Olesen's avatar
Mark Olesen committed
117
//- Return the file type: DIRECTORY or FILE
118
119
fileName::Type type(const fileName&);

Mark Olesen's avatar
Mark Olesen committed
120
//- Does the name exist (as DIRECTORY or FILE) in the file system?
121
122
//  Optionally enable/disable check for gzip file.
bool exists(const fileName&, const bool checkGzip=true);
123

124
125
//- Does the name exist as a DIRECTORY in the file system?
bool isDir(const fileName&);
126

Mark Olesen's avatar
Mark Olesen committed
127
128
129
130
//- Does the name exist as a FILE in the file system?
//  Optionally enable/disable check for gzip file.
bool isFile(const fileName&, const bool checkGzip=true);

131
//- Return size of file
132
off_t fileSize(const fileName&);
133
134
135
136
137
138
139
140
141
142
143
144
145

//- Return time of last file modification
time_t lastModified(const fileName&);

//- Read a directory and return the entries as a string list
fileNameList readDir
(
    const fileName&,
    const fileName::Type=fileName::FILE,
    const bool filtergz=true
);

//- Copy, recursively if necessary, the source to the destination
Mark Olesen's avatar
Mark Olesen committed
146
bool cp(const fileName& src, const fileName& dst);
147

Mark Olesen's avatar
Mark Olesen committed
148
149
//- Create a softlink. dst should not exist. Returns true if successful.
bool ln(const fileName& src, const fileName& dst);
150

Mark Olesen's avatar
Mark Olesen committed
151
152
//- Rename src to dst
bool mv(const fileName& src, const fileName& dst);
153

Mark Olesen's avatar
Mark Olesen committed
154
155
156
157
158
//- Rename to a corresponding backup file
//  If the backup file already exists, attempt with "01" .. "99" suffix
bool mvBak(const fileName&, const std::string& ext = "bak");

//- Remove a file, returning true if successful otherwise false
159
160
161
162
163
164
165
166
167
168
169
170
171
172
bool rm(const fileName&);

//- Remove a dirctory and its contents
bool rmDir(const fileName&);

//- Sleep for the specified number of seconds
unsigned int sleep(const unsigned int);

//- Close file descriptor
void fdClose(const int);

//- Check if machine is up by pinging given port
bool ping(const word&, const label port, const label timeOut);

173
//- Check if machine is up by pinging port 22 (ssh) and 222 (rsh)
174
175
bool ping(const word&, const label timeOut=10);

176
//- Execute the specified command
177
178
int system(const string& command);

179
180
181
182
183
184
//- Return the size in memory of the current process
int memSize();

//- Return the peak size in memory of the current process
int memPeakSize();

185
186
187
188
189
190
191
192
193
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //