diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 37cef12a5ed15cf9991b3c4d98467c28ac789e26..e77d05aad5ef466babf2c6a4769a1cbe8ecd7366 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 476ffa05f4adee574de55aa770a96890524c662d..b5ae8f841f111a32d4a00ba9dd228bfecb509b29 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,