[gjs] Add a version property to System
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] Add a version property to System
- Date: Tue, 7 May 2013 16:15:52 +0000 (UTC)
commit aab113ea7ad0863dd9dce589610782b0c0c837b4
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Mon May 6 23:21:30 2013 +0200
Add a version property to System
To allow dynamic checks for new API and features, expose the GJS
version in the System module. For additional convenience,
it is provided as a number (major * 10000 + minor * 100 + micro)
that can be directly comparated to a reference value.
https://bugzilla.gnome.org/show_bug.cgi?id=699784
configure.ac | 1 +
installed-tests/test/js/testSystem.js | 4 ++++
modules/system.c | 28 +++++++++++++++++++---------
3 files changed, 24 insertions(+), 9 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 04bd775..84b9047 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,6 +5,7 @@ m4_define(pkg_major_version, 1)
m4_define(pkg_minor_version, 36)
m4_define(pkg_micro_version, 0)
m4_define(pkg_version, pkg_major_version.pkg_minor_version.pkg_micro_version)
+m4_define(pkg_int_version, (pkg_major_version * 100 + pkg_minor_version) * 100 + pkg_micro_version)
AC_PREREQ(2.61)
AC_INIT([gjs], pkg_version, [http://bugzilla.gnome.org/enter_bug.cgi?product=gjs])
diff --git a/installed-tests/test/js/testSystem.js b/installed-tests/test/js/testSystem.js
index f87a325..54b838f 100644
--- a/installed-tests/test/js/testSystem.js
+++ b/installed-tests/test/js/testSystem.js
@@ -11,5 +11,9 @@ function testAddressOf() {
JSUnit.assert(System.addressOf(o1) != System.addressOf(o2));
}
+function testVersion() {
+ JSUnit.assert(System.version >= 13600);
+}
+
JSUnit.gjstestRun(this, JSUnit.setUp, JSUnit.tearDown);
diff --git a/modules/system.c b/modules/system.c
index 36270db..1626bb0 100644
--- a/modules/system.c
+++ b/modules/system.c
@@ -126,6 +126,7 @@ gjs_js_define_system_stuff(JSContext *context,
GjsContext *gjs_context;
char *program_name;
jsval value;
+ JSBool retval;
if (!JS_DefineFunction(context, module,
"addressOf",
@@ -157,16 +158,16 @@ gjs_js_define_system_stuff(JSContext *context,
0, GJS_MODULE_PROP_FLAGS))
return JS_FALSE;
+ retval = JS_FALSE;
+
gjs_context = JS_GetContextPrivate(context);
g_object_get(gjs_context,
"program-name", &program_name,
NULL);
if (!gjs_string_from_utf8(context, program_name,
- -1, &value)) {
- g_free(program_name);
- return JS_FALSE;
- }
+ -1, &value))
+ goto out;
/* The name is modeled after program_invocation_name,
part of the glibc */
@@ -175,12 +176,21 @@ gjs_js_define_system_stuff(JSContext *context,
value,
JS_PropertyStub,
JS_StrictPropertyStub,
- GJS_MODULE_PROP_FLAGS | JSPROP_READONLY)) {
- g_free(program_name);
- return JS_FALSE;
- }
+ GJS_MODULE_PROP_FLAGS | JSPROP_READONLY))
+ goto out;
+ if (!JS_DefineProperty(context, module,
+ "version",
+ INT_TO_JSVAL(GJS_VERSION),
+ JS_PropertyStub,
+ JS_StrictPropertyStub,
+ GJS_MODULE_PROP_FLAGS | JSPROP_READONLY))
+ goto out;
+
+ retval = JS_TRUE;
+
+ out:
g_free(program_name);
- return JS_TRUE;
+ return retval;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]