__stdio_exit.c raw

   1  #include "stdio_impl.h"
   2  
   3  static FILE *volatile dummy_file = 0;
   4  weak_alias(dummy_file, __stdin_used);
   5  weak_alias(dummy_file, __stdout_used);
   6  weak_alias(dummy_file, __stderr_used);
   7  
   8  static void close_file(FILE *f)
   9  {
  10  	if (!f) return;
  11  	FFINALLOCK(f);
  12  	if (f->wpos != f->wbase) f->write(f, 0, 0);
  13  	if (f->rpos != f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR);
  14  }
  15  
  16  void __stdio_exit(void)
  17  {
  18  	FILE *f;
  19  	for (f=*__ofl_lock(); f; f=f->next) close_file(f);
  20  	close_file(__stdin_used);
  21  	close_file(__stdout_used);
  22  	close_file(__stderr_used);
  23  }
  24  
  25  weak_alias(__stdio_exit, __stdio_exit_needed);
  26