Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
system_load(3)			 Arcan Lua API			system_load(3)

NAME
       system_load - Load and parse additional scripts or modules.

SYNOPSIS
       nil
       system_load( resstr, dieonfail )

DESCRIPTION
       The  system_load	 function is used to dynamically parse/load additional
       .lua files and, optionally, dynamic libraries. The  filename  extension
       determines  which namespaces that are allowed and how the resource will
       be loaded and parsed.

       By default, failure to locate, parse or	load  the  specified  resource
       will  lead  to a	terminal state transition. To avoid this behavior, set
       dieonfail  to 0 or false	and a failing call will	just return nil.

       For .lua	files, the  default  is	 liberal.  The	namespaces  and	 order
       searched	is (appl-temp >	appl > sys_scripts > shared-resources).

       For  .lib files,	the extension will be replaced with the	implementation
       defined library extension on the	underlying os (typically .so, .dll  or
       .dylib),	 and  the namespace is restricted to RESOURCE_SYS_LIBS . These
       modules are expected to export the following prototype:

       lua  L_R	 eg*  arcan_module_init(int  lua_major,	 int  lua_minor,   int
       lua_vernum)

NOTES
       1      Since dynamic library support is an optional engine feature, and
	      can be used to increase the attack surface or circumvent the VM
	      barrier  alltogether, it should be used sparringly and only with
	      verified and trusted code.

       2

       3      The namespace mapping can	be changed compile- time by setting

	      CAREFUL_USERMASK	 and  MODULE_USERMASK	 for  the  arcan_lua.c
	      source file.

EXAMPLE
       function	system_load0()
	     system_load("test.lua")();
	     system_load("test_bad.lua", 0);
       -- this part requires that the examples/test_module has been built and
       -- is placed in the RESOURCE_SYS_LIBS
	     testfun = system_load("test.lib", false);
	     if	(testfun == nil) then
		   warning("couldn't load dynamic library 'test'");
	     else
		   testfun.test();
	     end
       end

MISUSE
       function	system_load0()
	     system_load("missing")();
       end

system				  April	2025			system_load(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=system_load&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help