SHA256
1
0
forked from pool/gjs
gjs/gjs-getpid_uid_gid.patch

106 lines
2.8 KiB
Diff

From 457a90fecc74c0a36da1b9252c9f9028932f42a0 Mon Sep 17 00:00:00 2001
From: Giovanni Campagna <gcampagna@src.gnome.org>
Date: Tue, 7 Feb 2012 15:36:26 +0100
Subject: [PATCH] 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 file changed, 64 insertions(+)
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;
}
--
1.7.10