123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- diff -rup mediatomb-0.12.1/src/scripting/js_functions.cc ../mediatomb-0.12.1/src/scripting/js_functions.cc
- --- mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:51:13.641025479 -0400
- +++ ../mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:49:21.071800273 -0400
- @@ -51,15 +51,28 @@ extern "C" {
- JSBool
- js_print(JSContext *cx, uintN argc, jsval *argv)
- {
- - uintN i;
- + uintN i, j;
- JSString *str;
-
- for (i = 0; i < argc; i++)
- {
- - str = JS_ValueToString(cx, argv[i]);
- + String fmtStr;
- + for (j = 0; j < argc; j++)
- + {
- + if (j == i)
- + fmtStr = fmtStr + "S";
- + else
- + fmtStr = fmtStr + "*";
- + }
- + if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), fmtStr.c_str(), &str))
- + {
- + log_debug("Could not parse input arguments\n");
- + return JS_TRUE;
- + }
- +
- if (!str)
- return JS_TRUE;
- - argv[i] = STRING_TO_JSVAL(str);
- +
- char * log_str = JS_EncodeString(cx, str);
- log_js("%s\n", log_str);
- JS_free(cx, log_str);
- @@ -116,24 +129,54 @@ js_addCdsObject(JSContext *cx, uintN arg
- {
- try
- {
- - jsval arg;
- - JSString *str;
- - String path;
- - String containerclass;
- + // Inputs from native code
- + JSObject *js_cds_obj = NULL;
- + JSString *str = NULL;
- + JSString *cont = NULL;
-
- - JSObject *js_cds_obj;
- + String path = nil;
- + String containerclass = nil;
- +
- + JSObject *obj = JS_THIS_OBJECT(cx, argv);
- JSObject *js_orig_obj = NULL;
- Ref<CdsObject> orig_object;
-
- Ref<StringConverter> p2i;
- Ref<StringConverter> i2i;
- + switch (argc)
- + {
- + case 0:
- + log_debug("No input arguments given\n");
- + return JS_FALSE;
- + case 1:
- + if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj))
- + {
- + log_debug("Could not parse input arguments\n");
- + return JS_TRUE;
- + }
- + break;
- + case 2:
- + if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str))
- + {
- + log_debug("Could not parse input arguments\n");
- + return JS_TRUE;
- + }
- + break;
- + default:
- + if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont))
- + {
- + log_debug("Could not parse input arguments\n");
- + return JS_TRUE;
- + }
- + break;
- + }
-
- - Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
- + Script *self = (Script *)JS_GetPrivate(cx, obj);
-
- if (self == NULL)
- {
- log_debug("Could not retrieve class instance from global object\n");
- - return JS_FALSE;
- + return JS_TRUE;
- }
-
- if (self->whoami() == S_PLAYLIST)
- @@ -144,23 +187,14 @@ js_addCdsObject(JSContext *cx, uintN arg
- {
- i2i = StringConverter::i2i();
- }
- -
- - arg = argv[0];
- - if (!JSVAL_IS_OBJECT(arg))
- - return JS_TRUE;
- - if (!JS_ValueToObject(cx, arg, &js_cds_obj))
- - return JS_TRUE;
-
- - // root it
- - argv[0] = OBJECT_TO_JSVAL(js_cds_obj);
-
- - str = JS_ValueToString(cx, argv[1]);
- if (!str)
- path = _("/");
- else
- path = JS_EncodeString(cx, str);
-
- - JSString *cont = JS_ValueToString(cx, argv[2]);
- +
- if (cont)
- {
- containerclass = JS_EncodeString(cx, cont);
- @@ -169,9 +203,9 @@ js_addCdsObject(JSContext *cx, uintN arg
- }
-
- if (self->whoami() == S_PLAYLIST)
- - js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist"));
- + js_orig_obj = self->getObjectProperty(obj, _("playlist"));
- else if (self->whoami() == S_IMPORT)
- - js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig"));
- + js_orig_obj = self->getObjectProperty(obj, _("orig"));
-
- if (js_orig_obj == NULL)
- {
- @@ -179,9 +213,6 @@ js_addCdsObject(JSContext *cx, uintN arg
- return JS_TRUE;
- }
-
- - // root it
- - argv[1] = OBJECT_TO_JSVAL(js_orig_obj);
- -
- orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject());
- if (orig_object == nil)
- return JS_TRUE;
|