diff src/if_perlsfio.c @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children bcef391c101c
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/if_perlsfio.c
@@ -0,0 +1,66 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+/*
+ * if_perlsfio.c: Special I/O functions for Perl interface.
+ */
+
+#define _memory_h	/* avoid memset redeclaration */
+#define IN_PERL_FILE	/* don't include if_perl.pro from prot.h */
+
+#include "vim.h"
+
+#if defined(USE_SFIO) || defined(PROTO)
+
+#ifndef USE_SFIO	/* just generating prototypes */
+# define Sfio_t int
+# define Sfdisc_t int
+#endif
+
+#define NIL(type)	((type)0)
+
+    static int
+sfvimwrite(f, buf, n, disc)
+    Sfio_t	    *f;		/* stream involved */
+    char	    *buf;	/* buffer to read from */
+    int		    n;		/* number of bytes to write */
+    Sfdisc_t	    *disc;	/* discipline */
+{
+    char_u *str;
+
+    str = vim_strnsave((char_u *)buf, n);
+    if (str == NULL)
+	return 0;
+    msg_split((char *)str);
+    vim_free(str);
+
+    return n;
+}
+
+/*
+ * sfdcnewnvi --
+ *  Create Vim discipline
+ */
+    Sfdisc_t *
+sfdcnewvim()
+{
+    Sfdisc_t	*disc;
+
+    disc = (Sfdisc_t *)alloc((unsigned)sizeof(Sfdisc_t));
+    if (disc == NULL)
+	return NULL;
+
+    disc->readf = (Sfread_f)NULL;
+    disc->writef = sfvimwrite;
+    disc->seekf = (Sfseek_f)NULL;
+    disc->exceptf = (Sfexcept_f)NULL;
+
+    return disc;
+}
+
+#endif /* USE_SFIO */