Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Side by Side Diff: nspr/pr/include/prenv.h

Issue 2078763002: Delete bundled copy of NSS and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss@master
Patch Set: Delete bundled copy of NSS and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « nspr/pr/include/prdtoa.h ('k') | nspr/pr/include/prerr.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #ifndef prenv_h___
7 #define prenv_h___
8
9 #include "prtypes.h"
10
11 /******************************************************************************* /
12 /******************************************************************************* /
13 /****************** THESE FUNCTIONS MAY NOT BE THREAD SAFE ********************* /
14 /******************************************************************************* /
15 /******************************************************************************* /
16
17 PR_BEGIN_EXTERN_C
18
19 /*
20 ** PR_GetEnv() -- Retrieve value of environment variable
21 **
22 ** Description:
23 ** PR_GetEnv() is modeled on Unix getenv().
24 **
25 **
26 ** Inputs:
27 ** var -- The name of the environment variable
28 **
29 ** Returns:
30 ** The value of the environment variable 'var' or NULL if
31 ** the variable is undefined.
32 **
33 ** Restrictions:
34 ** You'd think that a POSIX getenv(), putenv() would be
35 ** consistently implemented everywhere. Surprise! It is not. On
36 ** some platforms, a putenv() where the argument is of
37 ** the form "name" causes the named environment variable to
38 ** be un-set; that is: a subsequent getenv() returns NULL. On
39 ** other platforms, the putenv() fails, on others, it is a
40 ** no-op. Similarly, a putenv() where the argument is of the
41 ** form "name=" causes the named environment variable to be
42 ** un-set; a subsequent call to getenv() returns NULL. On
43 ** other platforms, a subsequent call to getenv() returns a
44 ** pointer to a null-string (a byte of zero).
45 **
46 ** PR_GetEnv(), PR_SetEnv() provide a consistent behavior
47 ** across all supported platforms. There are, however, some
48 ** restrictions and some practices you must use to achieve
49 ** consistent results everywhere.
50 **
51 ** When manipulating the environment there is no way to un-set
52 ** an environment variable across all platforms. We suggest
53 ** you interpret the return of a pointer to null-string to
54 ** mean the same as a return of NULL from PR_GetEnv().
55 **
56 ** A call to PR_SetEnv() where the parameter is of the form
57 ** "name" will return PR_FAILURE; the environment remains
58 ** unchanged. A call to PR_SetEnv() where the parameter is
59 ** of the form "name=" may un-set the envrionment variable on
60 ** some platforms; on others it may set the value of the
61 ** environment variable to the null-string.
62 **
63 ** For example, to test for NULL return or return of the
64 ** null-string from PR_GetEnv(), use the following code
65 ** fragment:
66 **
67 ** char *val = PR_GetEnv("foo");
68 ** if ((NULL == val) || ('\0' == *val)) {
69 ** ... interpret this as un-set ...
70 ** }
71 **
72 ** The caller must ensure that the string passed
73 ** to PR_SetEnv() is persistent. That is: The string should
74 ** not be on the stack, where it can be overwritten
75 ** on return from the function calling PR_SetEnv().
76 ** Similarly, the string passed to PR_SetEnv() must not be
77 ** overwritten by other actions of the process. ... Some
78 ** platforms use the string by reference rather than copying
79 ** it into the environment space. ... You have been warned!
80 **
81 ** Use of platform-native functions that manipulate the
82 ** environment (getenv(), putenv(),
83 ** SetEnvironmentVariable(), etc.) must not be used with
84 ** NSPR's similar functions. The platform-native functions
85 ** may not be thread safe and/or may operate on different
86 ** conceptual environment space than that operated upon by
87 ** NSPR's functions or other environment manipulating
88 ** functions on the same platform. (!)
89 **
90 */
91 NSPR_API(char*) PR_GetEnv(const char *var);
92
93 /*
94 ** PR_GetEnvSecure() -- get a security-sensitive environment variable
95 **
96 ** Description:
97 **
98 ** PR_GetEnvSecure() is similar to PR_GetEnv(), but it returns NULL if
99 ** the program was run with elevated privilege (e.g., setuid or setgid
100 ** on Unix). This can be used for cases like log file paths which
101 ** could otherwise be used for privilege escalation. Note that some
102 ** platforms may have platform-specific privilege elevation mechanisms
103 ** not recognized by this function; see the implementation for details.
104 */
105 NSPR_API(char*) PR_GetEnvSecure(const char *var);
106
107 /*
108 ** PR_SetEnv() -- set, unset or change an environment variable
109 **
110 ** Description:
111 ** PR_SetEnv() is modeled on the Unix putenv() function.
112 **
113 ** Inputs:
114 ** string -- pointer to a caller supplied
115 ** constant, persistent string of the form name=value. Where
116 ** name is the name of the environment variable to be set or
117 ** changed; value is the value assigned to the variable.
118 **
119 ** Returns:
120 ** PRStatus.
121 **
122 ** Restrictions:
123 ** See the Restrictions documented in the description of
124 ** PR_GetEnv() in this header file.
125 **
126 **
127 */
128 NSPR_API(PRStatus) PR_SetEnv(const char *string);
129
130 /*
131 ** PR_DuplicateEnvironment() -- Obtain a copy of the environment.
132 **
133 ** Description:
134 ** PR_DuplicateEnvironment() copies the environment so that it can be
135 ** modified without changing the current process's environment, and
136 ** then passed to interfaces such as POSIX execve(). In particular,
137 ** this avoids needing to allocate memory or take locks in the child
138 ** after a fork(); neither of these is allowed by POSIX after a
139 ** multithreaded process calls fork(), and PR_SetEnv does both.
140 **
141 ** Inputs:
142 ** none
143 **
144 ** Returns:
145 ** A pointer to a null-terminated array of null-terminated strings,
146 ** like the traditional global variable "environ". The array and
147 ** the strings are allocated with PR_Malloc(), and it is the
148 ** caller's responsibility to free them.
149 **
150 ** In case of memory allocation failure, or if the operating system
151 ** doesn't support reading the entire environment through the global
152 ** variable "environ" or similar, returns NULL instead.
153 **
154 ** Restrictions:
155 ** Similarly to PR_GetEnv(), this function may not interoperate as
156 ** expected with the operating system's native environment accessors.
157 */
158 NSPR_API(char **) PR_DuplicateEnvironment(void);
159
160 PR_END_EXTERN_C
161
162 #endif /* prenv_h___ */
OLDNEW
« no previous file with comments | « nspr/pr/include/prdtoa.h ('k') | nspr/pr/include/prerr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698