summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ex_cmds.c16
-rw-r--r--src/ex_cmds.h4
2 files changed, 17 insertions, 3 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 37cef12a5..e77d05aad 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1811,6 +1811,15 @@ write_viminfo(file, forceit)
if (tempname != NULL)
{
+#ifdef VMS
+ /* fdopen() fails for some reason */
+ if (fp_out == NULL)
+ {
+ umask_save = umask(077);
+ fp_out = mch_fopen((char *)tempname, WRITEBIN);
+ (void)umask(umask_save);
+ }
+#else
int fd;
/* Use mch_open() to be able to use O_NOFOLLOW and set file
@@ -1818,20 +1827,21 @@ write_viminfo(file, forceit)
* Unix: same as original file, but strip s-bit. Reset umask to
* avoid it getting in the way.
* Others: r&w for user only. */
-#ifdef UNIX
+# ifdef UNIX
umask_save = umask(0);
fd = mch_open((char *)tempname,
O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW,
(int)((st_old.st_mode & 0777) | 0600));
(void)umask(umask_save);
-#else
+# else
fd = mch_open((char *)tempname,
O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600);
-#endif
+# endif
if (fd < 0)
fp_out = NULL;
else
fp_out = fdopen(fd, WRITEBIN);
+#endif /* VMS */
/*
* If we can't create in the same directory, try creating a
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 476ffa05f..b5ae8f841 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -331,6 +331,8 @@ EX(CMD_dsplit, "dsplit", ex_findpat,
BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
EX(CMD_edit, "edit", ex_edit,
BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
+EX(CMD_earlier, "earlier", ex_later,
+ TRLBAR|EXTRA|NOSPC|CMDWIN),
EX(CMD_echo, "echo", ex_echo,
EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_echoerr, "echoerr", ex_execute,
@@ -489,6 +491,8 @@ EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer,
RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_laddfile, "laddfile", ex_cfile,
TRLBAR|FILE1),
+EX(CMD_later, "later", ex_later,
+ TRLBAR|EXTRA|NOSPC|CMDWIN),
EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_lcd, "lcd", ex_cd,