You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here's a modification to process.env() to return an object instead of an array. It makes it slightly more usable in that var home = process.env()["HOME"] becomes possible without having to string parse the results of the previous version. It's kind of a cheap process.getenv(). I'm not 100% sure of these 2 lines as to whether they are correct but the function works with my testing.
if (val[0] == '=') val = val + 1;
const int vlen = val ? strlen(val) : 0;
And here is the function itself. Unfortunately the tabs I added are removed in this paste...
// 20111227 markc@renta.net MIT license
static JSVAL process_env(JSARGS args) {
HandleScope scope;
int size = 0;
while (environ[size]) size++;
Handle<Object>env = Object::New();
for (int i = 0; i < size; ++i) {
const char* key = environ[i];
const char* val = strchr(key, '=');
const int klen = val ? val - key : strlen(key);
if (val[0] == '=') val = val + 1;
const int vlen = val ? strlen(val) : 0;
env->Set(String::New(key, klen), String::New(val, vlen));
}
return scope.Close(env);
}
The text was updated successfully, but these errors were encountered:
On Dec 26, 2011, at 5:17 PM, Mark Constable wrote:
Here's a modification to process.env() to return an object instead of an array. It makes it slightly more usable in that var home = process.env()["HOME"] becomes possible without having to string parse the results of the previous version. It's kind of a cheap process.getenv(). I'm not 100% sure of these 2 lines as to whether they are correct but the function works with my testing.
if (val[0] == '=') val = val + 1;
const int vlen = val ? strlen(val) : 0;
And here is the function itself. Unfortunately the tabs I added are removed in this paste...
// 20111227 markc@renta.net MIT license
static JSVAL process_env(JSARGS args) {
HandleScope scope;
int size = 0;
while (environ[size]) size++;
Handleenv = Object::New();
for (int i = 0; i < size; ++i) {
const char* key = environ[i];
const char* val = strchr(key, '=');
const int klen = val ? val - key : strlen(key);
if (val[0] == '=') val = val + 1;
const int vlen = val ? strlen(val) : 0;
env->Set(String::New(key, klen), String::New(val, vlen));
}
return scope.Close(env);
}
Reply to this email directly or view it on GitHub: #10
I just made a fresh clone and whereas previously it took about a minute, maybe 2, this time I had to go off make a cup of coffee because of the extra 90Mb of v8 code.
Here's a modification to process.env() to return an object instead of an array. It makes it slightly more usable in that
var home = process.env()["HOME"]
becomes possible without having to string parse the results of the previous version. It's kind of a cheap process.getenv(). I'm not 100% sure of these 2 lines as to whether they are correct but the function works with my testing.And here is the function itself. Unfortunately the tabs I added are removed in this paste...
The text was updated successfully, but these errors were encountered: