@@ -234,6 +234,67 @@ bare_os_hostname(js_env_t *env, js_callback_info_t *info) {
234
234
return result ;
235
235
}
236
236
237
+ static js_value_t *
238
+ bare_os_user_info (js_env_t * env , js_callback_info_t * info ) {
239
+ int err ;
240
+
241
+ uv_passwd_t pwd ;
242
+ err = uv_os_get_passwd (& pwd );
243
+ if (err != 0 ) {
244
+ js_throw_error (env , uv_err_name (err ), uv_strerror (err ));
245
+ return NULL ;
246
+ }
247
+
248
+ js_value_t * result ;
249
+ err = js_create_object (env , & result );
250
+ assert (err == 0 );
251
+
252
+ js_value_t * uid ;
253
+ err = js_create_int32 (env , (int32_t ) pwd .uid , & uid );
254
+ assert (err == 0 );
255
+
256
+ err = js_set_named_property (env , result , "uid" , uid );
257
+ assert (err == 0 );
258
+
259
+ js_value_t * gid ;
260
+ err = js_create_int32 (env , (int32_t ) pwd .gid , & gid );
261
+ assert (err == 0 );
262
+
263
+ err = js_set_named_property (env , result , "gid" , gid );
264
+ assert (err == 0 );
265
+
266
+ js_value_t * username ;
267
+ err = js_create_string_utf8 (env , (utf8_t * ) pwd .username , strlen (pwd .username ), & username );
268
+ assert (err == 0 );
269
+
270
+ err = js_set_named_property (env , result , "username" , username );
271
+ assert (err == 0 );
272
+
273
+ js_value_t * homedir ;
274
+ err = js_create_string_utf8 (env , (utf8_t * ) pwd .homedir , strlen (pwd .homedir ), & homedir );
275
+ assert (err == 0 );
276
+
277
+ err = js_set_named_property (env , result , "homedir" , homedir );
278
+ assert (err == 0 );
279
+
280
+ js_value_t * shell ;
281
+
282
+ if (pwd .shell == NULL ) {
283
+ err = js_get_null (env , & shell );
284
+ assert (err == 0 );
285
+ } else {
286
+ err = js_create_string_utf8 (env , (utf8_t * ) pwd .shell , -1 , & shell );
287
+ assert (err == 0 );
288
+ }
289
+
290
+ err = js_set_named_property (env , result , "shell" , shell );
291
+ assert (err == 0 );
292
+
293
+ uv_os_free_passwd (& pwd );
294
+
295
+ return result ;
296
+ }
297
+
237
298
static js_value_t *
238
299
bare_os_kill (js_env_t * env , js_callback_info_t * info ) {
239
300
int err ;
@@ -889,6 +950,7 @@ bare_os_exports(js_env_t *env, js_value_t *exports) {
889
950
V ("hasEnv" , bare_os_get_env )
890
951
V ("setEnv" , bare_os_set_env )
891
952
V ("unsetEnv" , bare_os_unset_env )
953
+ V ("userInfo" , bare_os_user_info )
892
954
#undef V
893
955
894
956
const union {
0 commit comments