blob: 0ae1b956dc0bbb6264c1d4c7a82baf163c784608 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001/* vi:set ts=8 sts=4 sw=4:
2 *
3 * VIM - Vi IMproved by Bram Moolenaar
4 *
5 * Do ":help uganda" in Vim to read copying and usage conditions.
6 * Do ":help credits" in Vim to see a list of people who contributed.
7 * See README.txt for an overview of the Vim source code.
8 */
9/*
10 * if_perlsfio.c: Special I/O functions for Perl interface.
11 */
12
13#define _memory_h /* avoid memset redeclaration */
14#define IN_PERL_FILE /* don't include if_perl.pro from prot.h */
15
16#include "vim.h"
17
18#if defined(USE_SFIO) || defined(PROTO)
19
20#ifndef USE_SFIO /* just generating prototypes */
21# define Sfio_t int
22# define Sfdisc_t int
23#endif
24
25#define NIL(type) ((type)0)
26
27 static int
28sfvimwrite(f, buf, n, disc)
29 Sfio_t *f; /* stream involved */
30 char *buf; /* buffer to read from */
31 int n; /* number of bytes to write */
32 Sfdisc_t *disc; /* discipline */
33{
34 char_u *str;
35
36 str = vim_strnsave((char_u *)buf, n);
37 if (str == NULL)
38 return 0;
39 msg_split((char *)str);
40 vim_free(str);
41
42 return n;
43}
44
45/*
46 * sfdcnewnvi --
47 * Create Vim discipline
48 */
49 Sfdisc_t *
50sfdcnewvim()
51{
52 Sfdisc_t *disc;
53
54 disc = (Sfdisc_t *)alloc((unsigned)sizeof(Sfdisc_t));
55 if (disc == NULL)
56 return NULL;
57
58 disc->readf = (Sfread_f)NULL;
59 disc->writef = sfvimwrite;
60 disc->seekf = (Sfseek_f)NULL;
61 disc->exceptf = (Sfexcept_f)NULL;
62
63 return disc;
64}
65
66#endif /* USE_SFIO */