[gjs] system: add getpid(), getuid(), getgid()



commit 457a90fecc74c0a36da1b9252c9f9028932f42a0
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Tue Feb 7 15:36:26 2012 +0100

    system: add getpid(), getuid(), getgid()
    
    These functions are useful sometimes (for example when building
    a PolkitSubject), and have no equivalent in GLib, therefore it's
    appropriate to place them in the system module.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=646187

 modules/system.c |   64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/modules/system.c b/modules/system.c
index ea8a9a8..c7c5b5c 100644
--- a/modules/system.c
+++ b/modules/system.c
@@ -24,6 +24,9 @@
 
 #include <config.h>
 
+#include <sys/types.h>
+#include <unistd.h>
+
 #include <gjs/gjs-module.h>
 #include <jsapi.h>
 
@@ -75,6 +78,49 @@ gjs_gc(JSContext *context,
     JS_GC(context);
     return JS_TRUE;
 }
+
+static JSBool
+gjs_getpid(JSContext *context,
+           uintN      argc,
+           jsval     *vp)
+{
+    jsval *argv = JS_ARGV(cx, vp);
+    jsval rval;
+    if (!gjs_parse_args(context, "getpid", "", argc, argv))
+        return JS_FALSE;
+    rval = INT_TO_JSVAL(getpid());
+    JS_SET_RVAL(context, vp, rval);
+    return JS_TRUE;
+}
+
+static JSBool
+gjs_getuid(JSContext *context,
+           uintN      argc,
+           jsval     *vp)
+{
+    jsval *argv = JS_ARGV(cx, vp);
+    jsval rval;
+    if (!gjs_parse_args(context, "getuid", "", argc, argv))
+        return JS_FALSE;
+    rval = INT_TO_JSVAL(getuid());
+    JS_SET_RVAL(context, vp, rval);
+    return JS_TRUE;
+}
+
+static JSBool
+gjs_getgid(JSContext *context,
+           uintN      argc,
+           jsval     *vp)
+{
+    jsval *argv = JS_ARGV(cx, vp);
+    jsval rval;
+    if (!gjs_parse_args(context, "getgid", "", argc, argv))
+        return JS_FALSE;
+    rval = INT_TO_JSVAL(getgid());
+    JS_SET_RVAL(context, vp, rval);
+    return JS_TRUE;
+}
+
 JSBool
 gjs_js_define_system_stuff(JSContext *context,
                            JSObject  *module)
@@ -97,6 +143,24 @@ gjs_js_define_system_stuff(JSContext *context,
                            0, GJS_MODULE_PROP_FLAGS))
         return JS_FALSE;
 
+    if (!JS_DefineFunction(context, module,
+                           "getpid",
+                           (JSNative) gjs_getpid,
+                           0, GJS_MODULE_PROP_FLAGS))
+        return FALSE;
+
+    if (!JS_DefineFunction(context, module,
+                           "getuid",
+                           (JSNative) gjs_getuid,
+                           0, GJS_MODULE_PROP_FLAGS))
+        return FALSE;
+
+    if (!JS_DefineFunction(context, module,
+                           "getgid",
+                           (JSNative) gjs_getgid,
+                           0, GJS_MODULE_PROP_FLAGS))
+        return FALSE;
+
     return JS_TRUE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]