Move launch_editor() from builtin-tag.c to editor.c
launch_editor() is declared in strbuf.h but defined in builtin-tag.c. This patch moves launch_editor() into a new source file editor.c, but keeps the declaration in strbuf.h. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									d9d9e6ee63
								
							
						
					
					
						commit
						d82f33e20d
					
				
							
								
								
									
										1
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										1
									
								
								Makefile
								
								
								
								
							|  | @ -410,6 +410,7 @@ LIB_OBJS += diff-no-index.o | ||||||
| LIB_OBJS += diff-lib.o | LIB_OBJS += diff-lib.o | ||||||
| LIB_OBJS += diff.o | LIB_OBJS += diff.o | ||||||
| LIB_OBJS += dir.o | LIB_OBJS += dir.o | ||||||
|  | LIB_OBJS += editor.o | ||||||
| LIB_OBJS += entry.o | LIB_OBJS += entry.o | ||||||
| LIB_OBJS += environment.o | LIB_OBJS += environment.o | ||||||
| LIB_OBJS += exec_cmd.o | LIB_OBJS += exec_cmd.o | ||||||
|  |  | ||||||
|  | @ -23,59 +23,6 @@ static const char * const git_tag_usage[] = { | ||||||
|  |  | ||||||
| static char signingkey[1000]; | static char signingkey[1000]; | ||||||
|  |  | ||||||
| void launch_editor(const char *path, struct strbuf *buffer, const char *const *env) |  | ||||||
| { |  | ||||||
| 	const char *editor, *terminal; |  | ||||||
|  |  | ||||||
| 	editor = getenv("GIT_EDITOR"); |  | ||||||
| 	if (!editor && editor_program) |  | ||||||
| 		editor = editor_program; |  | ||||||
| 	if (!editor) |  | ||||||
| 		editor = getenv("VISUAL"); |  | ||||||
| 	if (!editor) |  | ||||||
| 		editor = getenv("EDITOR"); |  | ||||||
|  |  | ||||||
| 	terminal = getenv("TERM"); |  | ||||||
| 	if (!editor && (!terminal || !strcmp(terminal, "dumb"))) { |  | ||||||
| 		fprintf(stderr, |  | ||||||
| 		"Terminal is dumb but no VISUAL nor EDITOR defined.\n" |  | ||||||
| 		"Please supply the message using either -m or -F option.\n"); |  | ||||||
| 		exit(1); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (!editor) |  | ||||||
| 		editor = "vi"; |  | ||||||
|  |  | ||||||
| 	if (strcmp(editor, ":")) { |  | ||||||
| 		size_t len = strlen(editor); |  | ||||||
| 		int i = 0; |  | ||||||
| 		const char *args[6]; |  | ||||||
| 		struct strbuf arg0; |  | ||||||
|  |  | ||||||
| 		strbuf_init(&arg0, 0); |  | ||||||
| 		if (strcspn(editor, "$ \t'") != len) { |  | ||||||
| 			/* there are specials */ |  | ||||||
| 			strbuf_addf(&arg0, "%s \"$@\"", editor); |  | ||||||
| 			args[i++] = "sh"; |  | ||||||
| 			args[i++] = "-c"; |  | ||||||
| 			args[i++] = arg0.buf; |  | ||||||
| 		} |  | ||||||
| 		args[i++] = editor; |  | ||||||
| 		args[i++] = path; |  | ||||||
| 		args[i] = NULL; |  | ||||||
|  |  | ||||||
| 		if (run_command_v_opt_cd_env(args, 0, NULL, env)) |  | ||||||
| 			die("There was a problem with the editor %s.", editor); |  | ||||||
| 		strbuf_release(&arg0); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (!buffer) |  | ||||||
| 		return; |  | ||||||
| 	if (strbuf_read_file(buffer, path, 0) < 0) |  | ||||||
| 		die("could not read message file '%s': %s", |  | ||||||
| 		    path, strerror(errno)); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| struct tag_filter { | struct tag_filter { | ||||||
| 	const char *pattern; | 	const char *pattern; | ||||||
| 	int lines; | 	int lines; | ||||||
|  |  | ||||||
|  | @ -0,0 +1,56 @@ | ||||||
|  | #include "cache.h" | ||||||
|  | #include "strbuf.h" | ||||||
|  | #include "run-command.h" | ||||||
|  |  | ||||||
|  | void launch_editor(const char *path, struct strbuf *buffer, const char *const *env) | ||||||
|  | { | ||||||
|  | 	const char *editor, *terminal; | ||||||
|  |  | ||||||
|  | 	editor = getenv("GIT_EDITOR"); | ||||||
|  | 	if (!editor && editor_program) | ||||||
|  | 		editor = editor_program; | ||||||
|  | 	if (!editor) | ||||||
|  | 		editor = getenv("VISUAL"); | ||||||
|  | 	if (!editor) | ||||||
|  | 		editor = getenv("EDITOR"); | ||||||
|  |  | ||||||
|  | 	terminal = getenv("TERM"); | ||||||
|  | 	if (!editor && (!terminal || !strcmp(terminal, "dumb"))) { | ||||||
|  | 		fprintf(stderr, | ||||||
|  | 		"Terminal is dumb but no VISUAL nor EDITOR defined.\n" | ||||||
|  | 		"Please supply the message using either -m or -F option.\n"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!editor) | ||||||
|  | 		editor = "vi"; | ||||||
|  |  | ||||||
|  | 	if (strcmp(editor, ":")) { | ||||||
|  | 		size_t len = strlen(editor); | ||||||
|  | 		int i = 0; | ||||||
|  | 		const char *args[6]; | ||||||
|  | 		struct strbuf arg0; | ||||||
|  |  | ||||||
|  | 		strbuf_init(&arg0, 0); | ||||||
|  | 		if (strcspn(editor, "$ \t'") != len) { | ||||||
|  | 			/* there are specials */ | ||||||
|  | 			strbuf_addf(&arg0, "%s \"$@\"", editor); | ||||||
|  | 			args[i++] = "sh"; | ||||||
|  | 			args[i++] = "-c"; | ||||||
|  | 			args[i++] = arg0.buf; | ||||||
|  | 		} | ||||||
|  | 		args[i++] = editor; | ||||||
|  | 		args[i++] = path; | ||||||
|  | 		args[i] = NULL; | ||||||
|  |  | ||||||
|  | 		if (run_command_v_opt_cd_env(args, 0, NULL, env)) | ||||||
|  | 			die("There was a problem with the editor %s.", editor); | ||||||
|  | 		strbuf_release(&arg0); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!buffer) | ||||||
|  | 		return; | ||||||
|  | 	if (strbuf_read_file(buffer, path, 0) < 0) | ||||||
|  | 		die("could not read message file '%s': %s", | ||||||
|  | 		    path, strerror(errno)); | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 Stephan Beyer
						Stephan Beyer