mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Break cmdq_continue inner loop into a helper function.
This commit is contained in:
		
							
								
								
									
										50
									
								
								cmd-queue.c
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								cmd-queue.c
									
									
									
									
									
								
							| @@ -25,6 +25,8 @@ | |||||||
|  |  | ||||||
| #include "tmux.h" | #include "tmux.h" | ||||||
|  |  | ||||||
|  | enum cmd_retval	cmdq_continue_one(struct cmd_q *); | ||||||
|  |  | ||||||
| /* Create new command queue. */ | /* Create new command queue. */ | ||||||
| struct cmd_q * | struct cmd_q * | ||||||
| cmdq_new(struct client *c) | cmdq_new(struct client *c) | ||||||
| @@ -160,14 +162,39 @@ cmdq_append(struct cmd_q *cmdq, struct cmd_list *cmdlist, struct mouse_event *m) | |||||||
| 		item->mouse.valid = 0; | 		item->mouse.valid = 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* Process one command. */ | ||||||
|  | enum cmd_retval | ||||||
|  | cmdq_continue_one(struct cmd_q *cmdq) | ||||||
|  | { | ||||||
|  | 	struct cmd	*cmd = cmdq->cmd; | ||||||
|  | 	enum cmd_retval	 retval; | ||||||
|  | 	char		 tmp[1024]; | ||||||
|  | 	int		 flags = !!(cmd->flags & CMD_CONTROL); | ||||||
|  |  | ||||||
|  | 	cmd_print(cmd, tmp, sizeof tmp); | ||||||
|  | 	log_debug("cmdq %p: %s", cmdq, tmp); | ||||||
|  |  | ||||||
|  | 	cmdq->time = time(NULL); | ||||||
|  | 	cmdq->number++; | ||||||
|  |  | ||||||
|  | 	cmdq_guard(cmdq, "begin", flags); | ||||||
|  |  | ||||||
|  | 	retval = cmd->entry->exec(cmd, cmdq); | ||||||
|  |  | ||||||
|  | 	if (retval == CMD_RETURN_ERROR) | ||||||
|  | 		cmdq_guard(cmdq, "error", flags); | ||||||
|  | 	else | ||||||
|  | 		cmdq_guard(cmdq, "end", flags); | ||||||
|  | 	return (retval); | ||||||
|  | } | ||||||
|  |  | ||||||
| /* Continue processing command queue. Returns 1 if finishes empty. */ | /* Continue processing command queue. Returns 1 if finishes empty. */ | ||||||
| int | int | ||||||
| cmdq_continue(struct cmd_q *cmdq) | cmdq_continue(struct cmd_q *cmdq) | ||||||
| { | { | ||||||
| 	struct cmd_q_item	*next; | 	struct cmd_q_item	*next; | ||||||
| 	enum cmd_retval		 retval; | 	enum cmd_retval		 retval; | ||||||
| 	int			 empty, flags; | 	int			 empty; | ||||||
| 	char			 s[1024]; |  | ||||||
|  |  | ||||||
| 	cmdq->references++; | 	cmdq->references++; | ||||||
| 	notify_disable(); | 	notify_disable(); | ||||||
| @@ -184,23 +211,7 @@ cmdq_continue(struct cmd_q *cmdq) | |||||||
|  |  | ||||||
| 	do { | 	do { | ||||||
| 		while (cmdq->cmd != NULL) { | 		while (cmdq->cmd != NULL) { | ||||||
| 			cmd_print(cmdq->cmd, s, sizeof s); | 			retval = cmdq_continue_one(cmdq); | ||||||
| 			log_debug("cmdq %p: %s (client %d)", cmdq, s, |  | ||||||
| 			    cmdq->client != NULL ? cmdq->client->ibuf.fd : -1); |  | ||||||
|  |  | ||||||
| 			cmdq->time = time(NULL); |  | ||||||
| 			cmdq->number++; |  | ||||||
|  |  | ||||||
| 			flags = !!(cmdq->cmd->flags & CMD_CONTROL); |  | ||||||
| 			cmdq_guard(cmdq, "begin", flags); |  | ||||||
|  |  | ||||||
| 			retval = cmdq->cmd->entry->exec(cmdq->cmd, cmdq); |  | ||||||
|  |  | ||||||
| 			if (retval == CMD_RETURN_ERROR) |  | ||||||
| 				cmdq_guard(cmdq, "error", flags); |  | ||||||
| 			else |  | ||||||
| 				cmdq_guard(cmdq, "end", flags); |  | ||||||
|  |  | ||||||
| 			if (retval == CMD_RETURN_ERROR) | 			if (retval == CMD_RETURN_ERROR) | ||||||
| 				break; | 				break; | ||||||
| 			if (retval == CMD_RETURN_WAIT) | 			if (retval == CMD_RETURN_WAIT) | ||||||
| @@ -209,7 +220,6 @@ cmdq_continue(struct cmd_q *cmdq) | |||||||
| 				cmdq_flush(cmdq); | 				cmdq_flush(cmdq); | ||||||
| 				goto empty; | 				goto empty; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			cmdq->cmd = TAILQ_NEXT(cmdq->cmd, qentry); | 			cmdq->cmd = TAILQ_NEXT(cmdq->cmd, qentry); | ||||||
| 		} | 		} | ||||||
| 		next = TAILQ_NEXT(cmdq->item, qentry); | 		next = TAILQ_NEXT(cmdq->item, qentry); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nicm
					nicm