annotate libcommon/irccd/system.hpp @ 394:c6fbb6e0e06d

Happy new year!
author David Demelier <markand@malikania.fr>
date Sun, 01 Jan 2017 15:29:41 +0100
parents 24bb45724dc0
children 0b156b82b8c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * system.hpp -- platform dependent functions for system inspection
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
394
c6fbb6e0e06d Happy new year!
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef IRCCD_SYSTEM_HPP
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define IRCCD_SYSTEM_HPP
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \file system.hpp
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * \brief System dependant functions
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <cstdint>
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <string>
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #include "sysconfig.hpp"
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 namespace irccd {
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * \brief Namespace for system functions.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 namespace sys {
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * Set the program name, needed for some functions or some systems.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 * \param name the program name
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 IRCCD_EXPORT void setProgramName(std::string name) noexcept;
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 * Get the program name.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * \return the program name
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 IRCCD_EXPORT const std::string &programName() noexcept;
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 * Get the system name.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * \return the name
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 IRCCD_EXPORT std::string name();
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 * Get the system version.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * \return the version
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 IRCCD_EXPORT std::string version();
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 * Get the number of seconds elapsed since the boottime.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * \return the number of seconds
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 IRCCD_EXPORT uint64_t uptime();
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 * Get the milliseconds elapsed since the application
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * startup.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 * \return the milliseconds
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 IRCCD_EXPORT uint64_t ticks();
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * Get an environment variable.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * \return the value or empty string
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 IRCCD_EXPORT std::string env(const std::string &var);
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * Get home directory usually /home/foo
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * \return the home directory
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 IRCCD_EXPORT std::string home();
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 #if defined(HAVE_SETUID)
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 * Set the effective uid by name or numeric value.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * \param value the value
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 IRCCD_EXPORT void setUid(const std::string &value);
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 #endif
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 #if defined(HAVE_SETGID)
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 /**
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 * Set the effective gid by name or numeric value.
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 *
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 * \param value the value
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 */
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 IRCCD_EXPORT void setGid(const std::string &value);
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 #endif
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 } // !sys
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 } // !irccd
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 #endif // !IRCCD_SYSTEM_HPP