xref: /vim-8.2.3635/src/if_perlsfio.c (revision 2bf24176)
1 /* 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
28 sfvimwrite(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 *
50 sfdcnewvim()
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 */
67