home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / src / stdio / c / setbuf < prev    next >
Text File  |  1994-03-08  |  800b  |  44 lines

  1. static char sccs_id[] = "@(#) setbuf.c 2.0 " __DATE__ " HJR";
  2.  
  3. /* setbuf.c (c) Copyright 1990 H.Rogers */
  4.  
  5. #include <errno.h>
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8.  
  9. __STDIOLIB__
  10.  
  11. void
  12. setbuf (register FILE * f, char *buf)
  13. {
  14.   if (!buf)
  15.     setvbuf (f, 0, _IONBF, 0);
  16.   else
  17.     setvbuf (f, buf, _IOFBF, BUFSIZ);
  18. }
  19.  
  20. int
  21. setvbuf (register FILE * f, register char *buf, register int flag,
  22.      register size_t bufsiz)
  23. {
  24.   if (f->flag & _IOREAD)
  25.     {
  26.       if (f->i_base)
  27.     return (-1);
  28.       f->i_ptr = f->i_base = (unsigned char *) buf;
  29.     }
  30.   else if (f->flag & _IOWRITE)
  31.     {
  32.       if (f->o_base)
  33.     return (-1);
  34.       f->o_ptr = f->o_base = (unsigned char *) buf;
  35.     }
  36.   else
  37.     return (-1);
  38.  
  39.   f->bufsiz = (!bufsiz) ? 1 : bufsiz;
  40.   f->flag = (f->flag & (~_IOBF)) | (flag & _IOBF);
  41.  
  42.   return (0);
  43. }
  44.