diff options
Diffstat (limited to 'sys-freebsd/freebsd-ubin/files/SA-06-02-ee.patch')
-rw-r--r-- | sys-freebsd/freebsd-ubin/files/SA-06-02-ee.patch | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/sys-freebsd/freebsd-ubin/files/SA-06-02-ee.patch b/sys-freebsd/freebsd-ubin/files/SA-06-02-ee.patch new file mode 100644 index 000000000000..01157c42e0f1 --- /dev/null +++ b/sys-freebsd/freebsd-ubin/files/SA-06-02-ee.patch @@ -0,0 +1,104 @@ +Index: usr.bin/ee/ee.c +=================================================================== +RCS file: /home/ncvs/src/usr.bin/ee/ee.c,v +retrieving revision 1.32 +diff -u -d -r1.32 ee.c +--- usr.bin/ee/ee.c 5 Nov 2004 10:18:05 -0000 1.32 ++++ usr.bin/ee/ee.c 1 Jan 2006 22:51:41 -0000 +@@ -300,7 +300,7 @@ + int quit P_((int noverify)); + void edit_abort P_((int arg)); + void delete_text P_((void)); +-int write_file P_((char *file_name)); ++int write_file P_((char *file_name, int warn_if_exists)); + int search P_((int display_message)); + void search_prompt P_((void)); + void del_char P_((void)); +@@ -1688,7 +1688,7 @@ + cmd_str = cmd_str2 = get_string(file_write_prompt_str, TRUE); + } + tmp_file = resolve_name(cmd_str); +- write_file(tmp_file); ++ write_file(tmp_file, 1); + if (tmp_file != cmd_str) + free(tmp_file); + } +@@ -2395,7 +2395,7 @@ + file_name = tmp_file; + } + +- if (write_file(file_name)) ++ if (write_file(file_name, 1)) + { + text_changes = FALSE; + quit(0); +@@ -2472,8 +2472,9 @@ + } + + int +-write_file(file_name) ++write_file(file_name, warn_if_exists) + char *file_name; ++int warn_if_exists; + { + char cr; + char *tmp_point; +@@ -2483,7 +2484,8 @@ + int write_flag = TRUE; + + charac = lines = 0; +- if ((in_file_name == NULL) || strcmp(in_file_name, file_name)) ++ if (warn_if_exists && ++ ((in_file_name == NULL) || strcmp(in_file_name, file_name))) + { + if ((temp_fp = fopen(file_name, "r"))) + { +@@ -3725,7 +3727,7 @@ + { + string = get_string(file_write_prompt_str, TRUE); + tmp_file = resolve_name(string); +- write_file(tmp_file); ++ write_file(tmp_file, 1); + if (tmp_file != string) + free(tmp_file); + free(string); +@@ -3762,7 +3764,7 @@ + string = tmp_file; + } + } +- if (write_file(string)) ++ if (write_file(string, 1)) + { + in_file_name = string; + text_changes = FALSE; +@@ -4375,17 +4377,25 @@ + void + ispell_op() + { +- char name[128]; ++ char template[128], *name; + char string[256]; +- int pid; ++ int fd; + + if (restrict_mode()) + { + return; + } +- pid = getpid(); +- sprintf(name, "/tmp/ee.%d", pid); +- if (write_file(name)) ++ (void)sprintf(template, "/tmp/ee.XXXXXXXX"); ++ name = mktemp(&template[0]); ++ fd = open(name, O_CREAT | O_EXCL | O_RDWR, 0600); ++ if (fd < 0) { ++ wmove(com_win, 0, 0); ++ wprintw(com_win, create_file_fail_msg, name); ++ wrefresh(com_win); ++ return; ++ } ++ close(fd); ++ if (write_file(name, 0)) + { + sprintf(string, "ispell %s", name); + sh_command(string); |