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