Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 1990 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  */
  17.  
  18. /*
  19. FUNCTION
  20. <<setbuf>>---specify full buffering for a file or stream
  21.  
  22. INDEX
  23.         setbuf
  24.  
  25. ANSI_SYNOPSIS
  26.         #include <stdio.h>
  27.         void setbuf(FILE *<[fp]>, char *<[buf]>);
  28.  
  29. TRAD_SYNOPSIS
  30.         #include <stdio.h>
  31.         void setbuf(<[fp]>, <[buf]>)
  32.         FILE *<[fp]>;
  33.         char *<[buf]>;
  34.  
  35. DESCRIPTION
  36. <<setbuf>> specifies that output to the file or stream identified by <[fp]>
  37. should be fully buffered.  All output for this file will go to a
  38. buffer (of size <<BUFSIZ>>, specified in `<<stdio.h>>').  Output will
  39. be passed on to the host system only when the buffer is full, or when
  40. an input operation intervenes.
  41.  
  42. You may, if you wish, supply your own buffer by passing a pointer to
  43. it as the argument <[buf]>.  It must have size <<BUFSIZ>>.  You can
  44. also use <<NULL>> as the value of <[buf]>, to signal that the
  45. <<setbuf>> function is to allocate the buffer.
  46.  
  47. WARNINGS
  48. You may only use <<setbuf>> before performing any file operation other
  49. than opening the file.
  50.  
  51. If you supply a non-null <[buf]>, you must ensure that the associated
  52. storage continues to be available until you close the stream
  53. identified by <[fp]>.
  54.  
  55. RETURNS
  56. <<setbuf>> does not return a result.
  57.  
  58. PORTABILITY
  59. Both ANSI C and the System V Interface Definition (Issue 2) require
  60. <<setbuf>>.  However, they differ on the meaning of a <<NULL>> buffer
  61. pointer: the SVID issue 2 specification says that a <<NULL>> buffer
  62. pointer requests unbuffered output.  For maximum portability, avoid
  63. <<NULL>> buffer pointers.
  64.  
  65. Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
  66. <<lseek>>, <<read>>, <<sbrk>>, <<write>>.
  67. */
  68.  
  69. #include <_ansi.h>
  70. #include <stdio.h>
  71. #include "local.h"
  72.  
  73. _VOID
  74. _DEFUN(setbuf, (fp, buf),
  75.        FILE *__restrict fp _AND
  76.        char *__restrict buf)
  77. {
  78.   _CAST_VOID setvbuf (fp, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
  79. }
  80.