Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
z
Classes
Class List
Class Hierarchy
Class Members
All
:
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Properties
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Related Functions
:
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
grpc
src
core
lib
gpr
env_linux.cc
Go to the documentation of this file.
1
/*
2
*
3
* Copyright 2015 gRPC authors.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*/
18
19
/* for secure_getenv. */
20
#ifndef _GNU_SOURCE
21
#define _GNU_SOURCE
22
#endif
23
24
#include <
grpc/support/port_platform.h
>
25
26
#ifdef GPR_LINUX_ENV
27
28
#include <dlfcn.h>
29
#include <features.h>
30
#include <stdlib.h>
31
#include <
string.h
>
32
33
#include <
grpc/support/log.h
>
34
#include <
grpc/support/string_util.h
>
35
36
#include "
src/core/lib/gpr/env.h
"
37
#include "
src/core/lib/gpr/string.h
"
38
#include "
src/core/lib/gpr/useful.h
"
39
40
char
*
gpr_getenv
(
const
char
*
name
) {
41
char
*
result
=
nullptr
;
42
#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
43
typedef
char
* (*getenv_type)(
const
char
*);
44
static
getenv_type getenv_func =
nullptr
;
45
/* Check to see which getenv variant is supported (go from most
46
* to least secure) */
47
if
(getenv_func ==
nullptr
) {
48
const
char
*
names
[] = {
"secure_getenv"
,
"__secure_getenv"
,
"getenv"
};
49
for
(
size_t
i
= 0;
i
<
GPR_ARRAY_SIZE
(
names
);
i
++) {
50
getenv_func = (getenv_type)dlsym(RTLD_DEFAULT,
names
[
i
]);
51
if
(getenv_func !=
nullptr
) {
52
break
;
53
}
54
}
55
}
56
result
= getenv_func(
name
);
57
#elif __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 17)
58
result
= secure_getenv(
name
);
59
#else
60
result
=
getenv
(
name
);
61
#endif
62
return
result
==
nullptr
?
result
:
gpr_strdup
(
result
);
63
}
64
65
void
gpr_setenv
(
const
char
*
name
,
const
char
*
value
) {
66
int
res = setenv(
name
,
value
, 1);
67
GPR_ASSERT
(res == 0);
68
}
69
70
void
gpr_unsetenv
(
const
char
*
name
) {
71
int
res = unsetenv(
name
);
72
GPR_ASSERT
(res == 0);
73
}
74
75
#endif
/* GPR_LINUX_ENV */
_gevent_test_main.result
result
Definition:
_gevent_test_main.py:96
log.h
string.h
names
sub_type names
Definition:
cxa_demangle.cpp:4905
useful.h
setup.name
name
Definition:
setup.py:542
env.h
string_util.h
gpr_getenv
char * gpr_getenv(const char *name)
GPR_ASSERT
#define GPR_ASSERT(x)
Definition:
include/grpc/impl/codegen/log.h:94
value
const char * value
Definition:
hpack_parser_table.cc:165
GPR_ARRAY_SIZE
#define GPR_ARRAY_SIZE(array)
Definition:
useful.h:129
gpr_strdup
GPRAPI char * gpr_strdup(const char *src)
Definition:
string.cc:39
gpr_unsetenv
void gpr_unsetenv(const char *name)
getenv
#define getenv(ptr)
Definition:
ares_private.h:106
i
uint64_t i
Definition:
abseil-cpp/absl/container/btree_benchmark.cc:230
gpr_setenv
void gpr_setenv(const char *name, const char *value)
port_platform.h
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:15