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()
 |