sequencer.c: factor out a function
This code is heavily indented and obscures the high level logic within the loop. Let's move it to its own function before modifying it in the next commit. Note that there is a subtle change in behavior if the todo list cannot be reread. Previously todo_list->current was incremented before returning, now it returns immediately. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									225bc32a98
								
							
						
					
					
						commit
						dfa8bae5a2
					
				
							
								
								
									
										38
									
								
								sequencer.c
								
								
								
								
							
							
						
						
									
										38
									
								
								sequencer.c
								
								
								
								
							|  | @ -4254,6 +4254,27 @@ static int stopped_at_head(struct repository *r) | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static int reread_todo_if_changed(struct repository *r, | ||||||
|  | 				  struct todo_list *todo_list, | ||||||
|  | 				  struct replay_opts *opts) | ||||||
|  | { | ||||||
|  | 	struct stat st; | ||||||
|  |  | ||||||
|  | 	if (stat(get_todo_path(opts), &st)) { | ||||||
|  | 		return error_errno(_("could not stat '%s'"), | ||||||
|  | 				   get_todo_path(opts)); | ||||||
|  | 	} else if (match_stat_data(&todo_list->stat, &st)) { | ||||||
|  | 		/* Reread the todo file if it has changed. */ | ||||||
|  | 		todo_list_release(todo_list); | ||||||
|  | 		if (read_populate_todo(r, todo_list, opts)) | ||||||
|  | 			return -1; /* message was printed */ | ||||||
|  | 		/* `current` will be incremented on return */ | ||||||
|  | 		todo_list->current = -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| static const char rescheduled_advice[] = | static const char rescheduled_advice[] = | ||||||
| N_("Could not execute the todo command\n" | N_("Could not execute the todo command\n" | ||||||
| "\n" | "\n" | ||||||
|  | @ -4433,20 +4454,9 @@ static int pick_commits(struct repository *r, | ||||||
| 							item->commit, | 							item->commit, | ||||||
| 							arg, item->arg_len, | 							arg, item->arg_len, | ||||||
| 							opts, res, 0); | 							opts, res, 0); | ||||||
| 		} else if (is_rebase_i(opts) && check_todo && !res) { | 		} else if (is_rebase_i(opts) && check_todo && !res && | ||||||
| 			struct stat st; | 			   reread_todo_if_changed(r, todo_list, opts)) { | ||||||
|  | 			return -1; | ||||||
| 			if (stat(get_todo_path(opts), &st)) { |  | ||||||
| 				res = error_errno(_("could not stat '%s'"), |  | ||||||
| 						  get_todo_path(opts)); |  | ||||||
| 			} else if (match_stat_data(&todo_list->stat, &st)) { |  | ||||||
| 				/* Reread the todo file if it has changed. */ |  | ||||||
| 				todo_list_release(todo_list); |  | ||||||
| 				if (read_populate_todo(r, todo_list, opts)) |  | ||||||
| 					res = -1; /* message was printed */ |  | ||||||
| 				/* `current` will be incremented below */ |  | ||||||
| 				todo_list->current = -1; |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		todo_list->current++; | 		todo_list->current++; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Phillip Wood
						Phillip Wood