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.o | ||||
| LIB_OBJS += dir.o | ||||
| LIB_OBJS += editor.o | ||||
| LIB_OBJS += entry.o | ||||
| LIB_OBJS += environment.o | ||||
| LIB_OBJS += exec_cmd.o | ||||
|  |  | |||
|  | @ -23,59 +23,6 @@ static const char * const git_tag_usage[] = { | |||
|  | ||||
| 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 { | ||||
| 	const char *pattern; | ||||
| 	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