7
|
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 */
|