|  | @@ -438,6 +438,20 @@ static int lsp_send_file(lua_State *L)
 | 
	
		
			
				|  |  |      return 0;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* mg.get_time */
 | 
	
		
			
				|  |  | +static int lsp_get_time(lua_State *L)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    int num_args = lua_gettop(L);
 | 
	
		
			
				|  |  | +    int monotonic = (num_args > 0) ? lua_toboolean(L, 1) : 0;
 | 
	
		
			
				|  |  | +    struct timespec ts;
 | 
	
		
			
				|  |  | +    double d;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    clock_gettime(monotonic ? CLOCK_MONOTONIC : CLOCK_REALTIME, &ts);
 | 
	
		
			
				|  |  | +    d = (double)ts.tv_sec + ((double)ts.tv_nsec * 1.0E-9);
 | 
	
		
			
				|  |  | +    lua_pushnumber(L, d);
 | 
	
		
			
				|  |  | +    return 1;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /* mg.get_var */
 | 
	
		
			
				|  |  |  static int lsp_get_var(lua_State *L)
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -1050,6 +1064,7 @@ static void prepare_lua_environment(struct mg_context * ctx, struct mg_connectio
 | 
	
		
			
				|  |  |          /* reg_conn_function(L, "send_file", lsp_send_file, conn); */
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    reg_function(L, "time", lsp_get_time);
 | 
	
		
			
				|  |  |      reg_function(L, "get_var", lsp_get_var);
 | 
	
		
			
				|  |  |      reg_function(L, "get_mime_type", lsp_get_mime_type);
 | 
	
		
			
				|  |  |      reg_function(L, "get_cookie", lsp_get_cookie);
 |