PY-40974 Always treat environment variables as raw bytes
[idea/community.git] / bin / linux / printenv.py
1 #!/usr/bin/env python
2
3 # Dumps environment variables into specified file.
4 # Format: zero-separated "name=value" pairs in platform encoding.
5 # The script can work with any version of Python from 2.3 to at least 3.9
6
7 import os
8 import sys
9
10 if len(sys.argv) != 2:
11     raise Exception('Exactly one argument expected')
12
13 PY2 = sys.version_info < (3,)
14
15 if PY2:
16     environ = os.environ
17 else:
18     environ = os.environb
19
20
21 def b(s):
22     if PY2:
23         return s
24     else:
25         return s.encode('utf-8')
26
27
28 fd = open(sys.argv[1], 'wb')
29 try:
30     for key, value in environ.items():
31         fd.writelines([key, b('='), value, b('\0')])
32 finally:
33     fd.close()