(env)
| 4983 | |
| 4984 | |
| 4985 | var _environ=STATICTOP; STATICTOP += 16;;var ___environ=_environ;function ___buildEnvironment(env) { |
| 4986 | // WARNING: Arbitrary limit! |
| 4987 | var MAX_ENV_VALUES = 64; |
| 4988 | var TOTAL_ENV_SIZE = 1024; |
| 4989 | |
| 4990 | // Statically allocate memory for the environment. |
| 4991 | var poolPtr; |
| 4992 | var envPtr; |
| 4993 | if (!___buildEnvironment.called) { |
| 4994 | ___buildEnvironment.called = true; |
| 4995 | // Set default values. Use string keys for Closure Compiler compatibility. |
| 4996 | ENV['USER'] = ENV['LOGNAME'] = 'web_user'; |
| 4997 | ENV['PATH'] = '/'; |
| 4998 | ENV['PWD'] = '/'; |
| 4999 | ENV['HOME'] = '/home/web_user'; |
| 5000 | ENV['LANG'] = 'C.UTF-8'; |
| 5001 | ENV['_'] = Module['thisProgram']; |
| 5002 | // Allocate memory. |
| 5003 | poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC); |
| 5004 | envPtr = allocate(MAX_ENV_VALUES * 4, |
| 5005 | 'i8*', ALLOC_STATIC); |
| 5006 | HEAP32[((envPtr)>>2)]=poolPtr; |
| 5007 | HEAP32[((_environ)>>2)]=envPtr; |
| 5008 | } else { |
| 5009 | envPtr = HEAP32[((_environ)>>2)]; |
| 5010 | poolPtr = HEAP32[((envPtr)>>2)]; |
| 5011 | } |
| 5012 | |
| 5013 | // Collect key=value lines. |
| 5014 | var strings = []; |
| 5015 | var totalSize = 0; |
| 5016 | for (var key in env) { |
| 5017 | if (typeof env[key] === 'string') { |
| 5018 | var line = key + '=' + env[key]; |
| 5019 | strings.push(line); |
| 5020 | totalSize += line.length; |
| 5021 | } |
| 5022 | } |
| 5023 | if (totalSize > TOTAL_ENV_SIZE) { |
| 5024 | throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); |
| 5025 | } |
| 5026 | |
| 5027 | // Make new. |
| 5028 | var ptrSize = 4; |
| 5029 | for (var i = 0; i < strings.length; i++) { |
| 5030 | var line = strings[i]; |
| 5031 | writeAsciiToMemory(line, poolPtr); |
| 5032 | HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; |
| 5033 | poolPtr += line.length + 1; |
| 5034 | } |
| 5035 | HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; |
| 5036 | }var ENV={};function _getenv(name) { |
| 5037 | // char *getenv(const char *name); |
| 5038 | // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html |
| 5039 | if (name === 0) return 0; |
no test coverage detected
searching dependent graphs…