diff --git a/src/evalfunc.c b/src/evalfunc.c
index 5e7c013..3c64212 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -398,6 +398,7 @@
 static void f_strwidth(typval_T *argvars, typval_T *rettv);
 static void f_submatch(typval_T *argvars, typval_T *rettv);
 static void f_substitute(typval_T *argvars, typval_T *rettv);
+static void f_swapinfo(typval_T *argvars, typval_T *rettv);
 static void f_synID(typval_T *argvars, typval_T *rettv);
 static void f_synIDattr(typval_T *argvars, typval_T *rettv);
 static void f_synIDtrans(typval_T *argvars, typval_T *rettv);
@@ -859,6 +860,7 @@
     {"strwidth",	1, 1, f_strwidth},
     {"submatch",	1, 2, f_submatch},
     {"substitute",	4, 4, f_substitute},
+    {"swapinfo",	1, 1, f_swapinfo},
     {"synID",		3, 3, f_synID},
     {"synIDattr",	2, 3, f_synIDattr},
     {"synIDtrans",	1, 1, f_synIDtrans},
@@ -12314,6 +12316,16 @@
 }
 
 /*
+ * "swapinfo(swap_filename)" function
+ */
+    static void
+f_swapinfo(typval_T *argvars, typval_T *rettv)
+{
+    if (rettv_dict_alloc(rettv) == OK)
+	get_b0_dict(get_tv_string(argvars), rettv->vval.v_dict);
+}
+
+/*
  * "synID(lnum, col, trans)" function
  */
     static void
diff --git a/src/memline.c b/src/memline.c
index fbdd8a3..660e89c 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2042,6 +2042,49 @@
 #endif
 
 /*
+ * Return information found in swapfile "fname" in dictionary "d".
+ * This is used by the swapinfo() function.
+ */
+    void
+get_b0_dict(char_u *fname, dict_T *d)
+{
+    int fd;
+    struct block0 b0;
+
+    if ((fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) >= 0)
+    {
+	if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
+	{
+	    if (b0_magic_wrong(&b0))
+	    {
+		dict_add_string(d, "error",
+			       vim_strsave((char_u *)"magic number mismatch"));
+	    }
+	    else
+	    {
+		/* we have swap information */
+		dict_add_string(d, "version", vim_strsave(b0.b0_version));
+		dict_add_string(d, "user", vim_strsave(b0.b0_uname));
+		dict_add_string(d, "host", vim_strsave(b0.b0_hname));
+		dict_add_string(d, "fname", vim_strsave(b0.b0_fname));
+
+		dict_add_number(d, "pid", char_to_long(b0.b0_pid));
+		dict_add_number(d, "mtime", char_to_long(b0.b0_mtime));
+#ifdef CHECK_INODE
+		dict_add_number(d, "inode", char_to_long(b0.b0_ino));
+#endif
+	    }
+	}
+	else
+	    dict_add_string(d, "error",
+				    vim_strsave((char_u *)"Cannot read file"));
+	close(fd);
+    }
+    else
+	dict_add_string(d, "error", vim_strsave((char_u *)"Cannot open file"));
+}
+
+/*
  * Give information about an existing swap file.
  * Returns timestamp (0 when unknown).
  */
diff --git a/src/proto/memline.pro b/src/proto/memline.pro
index 727b24c..d18ede3 100644
--- a/src/proto/memline.pro
+++ b/src/proto/memline.pro
@@ -11,6 +11,8 @@
 void ml_timestamp(buf_T *buf);
 void ml_recover(void);
 int recover_names(char_u *fname, int list, int nr, char_u **fname_out);
+char_u *make_percent_swname(char_u *dir, char_u *name);
+void get_b0_dict(char_u *fname, dict_T *d);
 void ml_sync_all(int check_file, int check_char);
 void ml_preserve(buf_T *buf, int message);
 char_u *ml_get(linenr_T lnum);
@@ -34,5 +36,4 @@
 void ml_decrypt_data(memfile_T *mfp, char_u *data, off_T offset, unsigned size);
 long ml_find_line_or_offset(buf_T *buf, linenr_T lnum, long *offp);
 void goto_byte(long cnt);
-char_u *make_percent_swname (char_u *dir, char_u *name);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim
index da5da2d..b0e2ec9 100644
--- a/src/testdir/test_swap.vim
+++ b/src/testdir/test_swap.vim
@@ -97,3 +97,37 @@
   set directory&
   call delete('Xswapdir', 'rf')
 endfunc
+
+func Test_swapinfo()
+  new Xswapinfo
+  call setline(1, ['one', 'two', 'three'])
+  w
+  let fname = trim(execute('swapname'))
+  call assert_match('Xswapinfo', fname)
+  let info = swapinfo(fname)
+  call assert_match('8\.', info.version)
+  call assert_match('\w', info.user)
+  call assert_equal(hostname(), info.host)
+  call assert_match('Xswapinfo', info.fname)
+  call assert_equal(getpid(), info.pid)
+  call assert_match('^\d*$', info.mtime)
+  if has_key(info, 'inode')
+    call assert_match('\d', info.inode)
+  endif
+  bwipe!
+  call delete(fname)
+  call delete('Xswapinfo')
+
+  let info = swapinfo('doesnotexist')
+  call assert_equal('Cannot open file', info.error)
+
+  call writefile(['burp'], 'Xnotaswapfile')
+  let info = swapinfo('Xnotaswapfile')
+  call assert_equal('Cannot read file', info.error)
+  call delete('Xnotaswapfile')
+
+  call writefile([repeat('x', 10000)], 'Xnotaswapfile')
+  let info = swapinfo('Xnotaswapfile')
+  call assert_equal('magic number mismatch', info.error)
+  call delete('Xnotaswapfile')
+endfunc
diff --git a/src/version.c b/src/version.c
index d752d04..d0052fa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    313,
+/**/
     312,
 /**/
     311,
