$OpenBSD: patch-warn_c,v 1.1 2005/04/21 10:47:37 espie Exp $ --- warn.c.orig Thu Apr 21 12:43:40 2005 +++ warn.c Thu Apr 21 12:45:48 2005 @@ -139,24 +139,7 @@ void warn(i, type, do_msg) { if (opened) { - /* Prevent the close from flushing unwritten data, since that is - * probably the block that caused us to get here in the first - * place. This probably isn't very portable, but I can't find - * any other method that works (barring changing all the output - * here to use a simple file descriptor instead of a FILE *). - * Linux is the only system I have seen that doesn't have the - * _ptr and _base. Let me know if there are others, or if you - * have a system independant way to fix it! - */ -#if defined(__linux__) - termf->_IO_read_ptr = termf->_IO_read_base; - termf->_IO_write_ptr = termf->_IO_write_base; -#elif defined(BSDI) || defined(BSD_OS2) - termf->_p = (termf->_ub)._base; -#else - termf->_ptr = termf->_base; -#endif - (void) fclose (termf); + close (fileno(termf)); } exit (0);