home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 387b.lha / dice_v2.02 / lib / stdio / fputc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-30  |  647 b   |  37 lines

  1.  
  2. /*
  3.  *  FPUTC.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  *
  7.  */
  8.  
  9. #include <stdio.h>
  10.  
  11. int
  12. fputc(c, fi)
  13. int c;
  14. FILE *fi;
  15. {
  16.     if (fi && (fi->sd_Flags & __SIF_WRITE)) {
  17.     if (fi->sd_WLeft <= 0) {
  18.         if (fi->sd_BufSiz == 0) {               /*  unbuffered  */
  19.         if (write(fi->sd_Fd, &c, 1) != 1)
  20.             fi->sd_Error = EOF;
  21.         ++fi->sd_Offset;
  22.         return(fi->sd_Error);
  23.         }
  24.         if (fflush(fi))                         /*  not unbuffered */
  25.         return(EOF);
  26.     }
  27.     *fi->sd_WPtr++ = c;
  28.     --fi->sd_WLeft;
  29.     if (c == '\n' && (fi->sd_Flags & __SIF_IOLBF))
  30.         fflush(fi);
  31.     } else {
  32.     fi->sd_Error = EOF;
  33.     }
  34.     return(fi->sd_Error);
  35. }
  36.  
  37.