home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / libnix-0.8-src.lha / libnix-0.8 / sources / nix / stdio / fflush.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-12  |  699 b   |  34 lines

  1. #include <stdio.h>
  2. #include <exec/nodes.h>
  3. #include <exec/lists.h>
  4.  
  5. struct filenode
  6. {
  7.   struct MinNode node; /* not for stdin, stdout, stderr */
  8.   FILE FILE;
  9. };
  10.  
  11. extern struct MinList __filelist;
  12. extern void __chkabort(void);
  13. extern int __fflush(FILE *stream);
  14.  
  15. int fflush(FILE *stream) /* fflush one or all files */
  16. {
  17.   int retval;
  18.   struct MinNode *node,*nextnode;
  19.   __chkabort();
  20.   retval=0;
  21.   node=__filelist.mlh_Head;
  22.   if(stream!=NULL)
  23.     return __fflush(stream);
  24.   if(__fflush(stdout))
  25.     retval=EOF;
  26.   if(__fflush(stderr))
  27.     retval=EOF;
  28.   while((nextnode=node->mln_Succ)!=NULL)
  29.   { if(__fflush(&((struct filenode *)node)->FILE))
  30.       retval=EOF;
  31.     node=nextnode; }
  32.   return retval;
  33. }
  34.