Dominique Leuenberger
d9e1361ca1
OBS-URL: https://build.opensuse.org/request/show/126524 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gjs?expand=0&rev=66
106 lines
2.8 KiB
Diff
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
|