42 lines
		
	
	
		
			853 B
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			853 B
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/lua
 | 
						|
 | 
						|
local util = require 'gluon.util'
 | 
						|
local unistd = require 'posix.unistd'
 | 
						|
 | 
						|
local state_dir = "/var/gluon/state/"
 | 
						|
local check_dir = "/lib/gluon/state/check.d/"
 | 
						|
 | 
						|
 | 
						|
local function set_flag(stateflag, state)
 | 
						|
	if state then
 | 
						|
		-- this does not modify atime
 | 
						|
		local flaghandle = io.open(stateflag, "w")
 | 
						|
		flaghandle:close()
 | 
						|
	else
 | 
						|
		os.remove(stateflag)
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
local function exec_check(checkpath)
 | 
						|
	local checkname = string.sub(checkpath, #check_dir+1)
 | 
						|
	local ret = os.execute(checkpath)
 | 
						|
	local flagfile = state_dir..checkname
 | 
						|
	set_flag(flagfile, 0==ret)
 | 
						|
end
 | 
						|
 | 
						|
local function run_executable_checks()
 | 
						|
	for _, v in ipairs(util.glob(check_dir..'*')) do
 | 
						|
		if unistd.access(v, 'x') then
 | 
						|
			exec_check(v)
 | 
						|
		end
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
-- ensure state path exists
 | 
						|
if not unistd.access(state_dir) then
 | 
						|
	os.execute("mkdir -p "..state_dir)
 | 
						|
end
 | 
						|
 | 
						|
run_executable_checks()
 |