summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch104
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);