home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 9.ddi / IOSTRSR1.ZIP / FSBSBUF.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  1.3 KB  |  42 lines

  1. /*[]------------------------------------------------------------[]*/
  2. /*|                                                              |*/
  3. /*|     fsbsbuf.cpp                                              |*/
  4. /*|                                                              |*/
  5. /*|     Class filebuf                                            |*/
  6. /*|          streambuf* filebuf::setbuf( char *, int )           |*/
  7. /*|                                                              |*/
  8. /*[]------------------------------------------------------------[]*/
  9.  
  10. /*
  11.  *      C/C++ Run Time Library - Version 5.0
  12.  *
  13.  *      Copyright (c) 1990, 1992 by Borland International
  14.  *      All Rights Reserved.
  15.  *
  16.  */
  17.  
  18. #include <ioconfig.h>
  19. #include "filesys.h"
  20. #include <fstream.h>
  21.  
  22. streambuf* filebuf::setbuf(char* b, int len)
  23. {
  24.     if( opened  &&  base() )
  25.         return 0;       // already open with a buffer -- no change
  26.  
  27.     int pb;         // putback area size
  28.     if( b  &&  len > 0 )    // use b as the new buffer
  29.         pb = (len > 8) ? 4 : 1; // guard against tiny buffers
  30.     else
  31.         {         // unbuffered
  32.         len = pb = 0;
  33.         b = 0;
  34.         }
  35.     setb(b, b+len, 0);      // will delete old buffer if needed
  36.     setp(b+pb, b+pb);
  37.     setg(b, b+pb, b+pb);
  38.     return this;
  39. }
  40.  
  41.  
  42.