Skip to content
Snippets Groups Projects
js_system.c 28.9 KiB
Newer Older
	strcat(str," Debug");
#endif
	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
	if(!JS_SetProperty(cx, sysobj, "full_version", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, VERSION_NOTICE));
	if(!JS_SetProperty(cx, sysobj, "version_notice", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, PLATFORM_DESC));
	if(!JS_SetProperty(cx, sysobj, "platform", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, socklib_version(str)));
	if(!JS_SetProperty(cx, sysobj, "socket_lib", &val))
		return(NULL);

	sprintf(str,"SMBLIB %s",smb_lib_ver());
	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
	if(!JS_SetProperty(cx, sysobj, "msgbase_lib", &val))
		return(NULL);

	DESCRIBE_COMPILER(str);
	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
	if(!JS_SetProperty(cx, sysobj, "compiled_with", &val))
		return(NULL);

	sprintf(str,"%s %.5s",__DATE__,__TIME__);
	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
	if(!JS_SetProperty(cx, sysobj, "compiled_when", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, COPYRIGHT_NOTICE));
	if(!JS_SetProperty(cx, sysobj, "copyright", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx
			,(char *)JS_GetImplementationVersion()));
	if(!JS_SetProperty(cx, sysobj, "js_version", &val))
		return(NULL);

	val = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,os_version(str)));
	if(!JS_SetProperty(cx, sysobj, "os_version", &val))
		return(NULL);

	/***********************/

	val = INT_TO_JSVAL(uptime);
	if(!JS_SetProperty(cx, sysobj, "uptime", &val))
		return(NULL);

	if(!JS_DefineProperties(cx, sysobj, js_system_properties))
		return(NULL);

	if (!JS_DefineFunctions(cx, sysobj, js_system_functions)) 
		return(NULL);

	statsobj = JS_DefineObject(cx, sysobj, "stats", &js_sysstats_class, NULL, 0);

	if(statsobj==NULL)
		return(NULL);

	JS_SetPrivate(cx, statsobj, cfg);	/* Store a pointer to scfg_t */

	if(!JS_DefineProperties(cx, statsobj, js_sysstats_properties))
		return(NULL);

	/* node_list property */

	if((node_list=JS_NewArrayObject(cx, 0, NULL))==NULL) 
		return(NULL);

	for(i=0;i<cfg->sys_nodes && i<cfg->sys_lastnode;i++) {

		nodeobj = JS_NewObject(cx, &js_node_class, NULL, node_list);

		if(nodeobj==NULL)
			return(NULL);

		/* Store node number */
		/* We have to shift it to make it look like a pointer to JS. :-( */
		if(!JS_SetPrivate(cx, nodeobj, (char*)((i+1)<<1)))	
			return(NULL);

		if(!JS_DefineProperties(cx, nodeobj, js_node_properties))
			return(NULL);

		val=OBJECT_TO_JSVAL(nodeobj);
		if(!JS_SetElement(cx, node_list, i, &val))
			return(NULL);
	}	

	if(!JS_DefineProperty(cx, sysobj, "node_list", OBJECT_TO_JSVAL(node_list)
		, NULL, NULL, 0))
		return(NULL);

	return(sysobj);
}

#endif	/* JAVSCRIPT */