1 /* vi:set ts=8 sts=4 sw=4 noet: 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 sfvimwrite(Sfio_t * f,char * buf,int n,Sfdisc_t * disc)28sfvimwrite( 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 * sfdcnewvim(void)50sfdcnewvim(void) 51 { 52 Sfdisc_t *disc; 53 54 disc = ALLOC_ONE(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