mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Merge branch 'obsd-master'
This commit is contained in:
		
							
								
								
									
										19
									
								
								format.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								format.c
									
									
									
									
									
								
							@@ -38,6 +38,7 @@
 | 
			
		||||
 | 
			
		||||
void	 format_job_callback(struct job *);
 | 
			
		||||
const char *format_job_get(struct format_tree *, const char *);
 | 
			
		||||
void	 format_job_timer(int, short, void *);
 | 
			
		||||
 | 
			
		||||
int	 format_replace(struct format_tree *, const char *, size_t, char **,
 | 
			
		||||
	     size_t *, size_t *);
 | 
			
		||||
@@ -64,6 +65,7 @@ struct format_job {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Format job tree. */
 | 
			
		||||
struct event format_job_event;
 | 
			
		||||
int	format_job_cmp(struct format_job *, struct format_job *);
 | 
			
		||||
RB_HEAD(format_job_tree, format_job) format_jobs = RB_INITIALIZER();
 | 
			
		||||
RB_PROTOTYPE(format_job_tree, format_job, entry, format_job_cmp);
 | 
			
		||||
@@ -192,6 +194,8 @@ format_job_callback(struct job *job)
 | 
			
		||||
		    server_status_client(c);
 | 
			
		||||
		fj->status = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log_debug("%s: %s: %s", __func__, fj->cmd, fj->out);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Find a job. */
 | 
			
		||||
@@ -227,10 +231,11 @@ format_job_get(struct format_tree *ft, const char *cmd)
 | 
			
		||||
 | 
			
		||||
/* Remove old jobs. */
 | 
			
		||||
void
 | 
			
		||||
format_clean(void)
 | 
			
		||||
format_job_timer(unused int fd, unused short events, unused void *arg)
 | 
			
		||||
{
 | 
			
		||||
	struct format_job	*fj, *fj1;
 | 
			
		||||
	time_t			 now;
 | 
			
		||||
	struct timeval		 tv = { .tv_sec = 60 };
 | 
			
		||||
 | 
			
		||||
	now = time(NULL);
 | 
			
		||||
	RB_FOREACH_SAFE(fj, format_job_tree, &format_jobs, fj1) {
 | 
			
		||||
@@ -238,14 +243,19 @@ format_clean(void)
 | 
			
		||||
			continue;
 | 
			
		||||
		RB_REMOVE(format_job_tree, &format_jobs, fj);
 | 
			
		||||
 | 
			
		||||
		log_debug("%s: %s", __func__, fj->cmd);
 | 
			
		||||
 | 
			
		||||
		if (fj->job != NULL)
 | 
			
		||||
			job_free(fj->job);
 | 
			
		||||
 | 
			
		||||
		free((void*)fj->cmd);
 | 
			
		||||
		free((void *)fj->cmd);
 | 
			
		||||
		free(fj->out);
 | 
			
		||||
 | 
			
		||||
		free(fj);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	evtimer_del(&format_job_event);
 | 
			
		||||
	evtimer_add(&format_job_event, &tv);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Create a new tree. */
 | 
			
		||||
@@ -262,6 +272,11 @@ format_create_status(int status)
 | 
			
		||||
	struct format_tree	*ft;
 | 
			
		||||
	char			 host[HOST_NAME_MAX + 1], *ptr;
 | 
			
		||||
 | 
			
		||||
	if (!event_initialized(&format_job_event)) {
 | 
			
		||||
		evtimer_set(&format_job_event, format_job_timer, NULL);
 | 
			
		||||
		format_job_timer(-1, 0, NULL);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ft = xcalloc(1, sizeof *ft);
 | 
			
		||||
	RB_INIT(&ft->tree);
 | 
			
		||||
	ft->status = status;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user