예제 #1
0
/* arguments:
   0. url
   1. component name
   2. version no. to compare
   3. flags
   return:
      true if update triggered and no errors */
JSBool PR_CALLBACK asd_conditional_update
	(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval)
{
	REGERR status = 0;
	if (argc >= 4 && JSVAL_IS_STRING(argv[0]) &&
		JSVAL_IS_STRING(argv[1]) &&
		JSVAL_IS_OBJECT(argv[2]) &&
		JSVAL_IS_INT(argv[3]))
	{
		VERSION curr_vers;
		char* component_path = JS_GetStringBytes(JSVAL_TO_STRING(argv[1]));
		status = VR_GetVersion(component_path, &curr_vers);

		if (status == REGERR_OK) {
			JSObject* versObj = JSVAL_TO_OBJECT(argv[2]);
			VERSION req_vers;
			asd_objToVers(cx, versObj, &req_vers);
			if ( asd_compareVersion(&req_vers, &curr_vers) > 0 ) {
				char* url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
				MWContext* cx = XP_FindContextOfType(NULL, MWContextBookmarks);

				XP_Bool result = SU_StartSoftwareUpdate( cx, url,
					NULL, NULL, NULL, JSVAL_TO_INT(argv[3]) );
				*rval = BOOLEAN_TO_JSVAL(result);
				return JS_TRUE;
			}
		}
	}
	*rval = BOOLEAN_TO_JSVAL(JS_FALSE);	/*INT_TO_JSVAL(status);*/
	return JS_TRUE;
}
예제 #2
0
/* arguments:
   0. component name
   1. version no. to fill in
   return:
      error status */
JSBool PR_CALLBACK asd_get_version
	(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval)
{
	REGERR status = 0;
	if (argc >= 2 && JSVAL_IS_STRING(argv[0])
		&& JSVAL_IS_OBJECT(argv[1]))
	{		
		VERSION vers;
		char* component_path = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
		status = VR_GetVersion(component_path, &vers);

		if (status == REGERR_OK) {
			JSObject* versObj = JSVAL_TO_OBJECT(argv[1]);
			asd_versToObj(cx, &vers, versObj);
		}
	}
	*rval = INT_TO_JSVAL(status);
	return JS_TRUE;
}
예제 #3
0
void vFind(char *cmd)
{

	VERSION ver;
	char path[MAXREGPATHLEN];

	if (error("VR_GetVersion", VR_GetVersion(cmd, &ver)) == REGERR_OK)
	{
		if (error("VR_GetPath", VR_GetPath(cmd, sizeof(path), path)) == REGERR_OK)
		{
			printf("%s found: ver=%d.%d.%d.%d, check=0x%04x, path=%s\n", 
				cmd, ver.major, ver.minor, ver.release, ver.build, ver.check,
				path);
			return;
		}
	}

	printf("%s not found.\n", cmd);
	return;

}	// vFind