From: Stuart Henderson Subject: Re: games/enigma prepare for stdio opaque To: YASUOKA Masahiko Cc: tb@openbsd.org, ports@openbsd.org Date: Tue, 15 Jul 2025 16:01:41 +0100 probably best to bump; ok On 2025/07/15 17:27, YASUOKA Masahiko wrote: > games/enigma also substitutes a FILE object for std{out,err}. This > will be impossible after the stdio opaque diff. > > The diff disables the block which substitutes a FILE object for > std{out,err}. The block is not needed for OpenBSD, so the diff must > not break anything. > > ok? > > Index: games/enigma/patches/patch-src_main_cc > =================================================================== > RCS file: games/enigma/patches/patch-src_main_cc > diff -N games/enigma/patches/patch-src_main_cc > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ games/enigma/patches/patch-src_main_cc 15 Jul 2025 08:18:05 -0000 > @@ -0,0 +1,29 @@ > +Index: src/main.cc > +--- src/main.cc.orig > ++++ src/main.cc > +@@ -313,21 +313,25 @@ void Application::init(int argc, char **argv) > + if (ap.redirect) { > + FILE *newfp; > + newfp = std::freopen((userStdPath + "/Output.log").c_str(), "w", stdout); > ++#if 0 /* can't substitute a FILE object for stdout if FILE is an opaque. */ > + if ( newfp == NULL ) { // This happens on NT > + newfp = fopen((userStdPath + "/Output.log").c_str(), "w"); > + if (newfp) { // in case stdout is a macro > + *stdout = *newfp; > + } > + } > ++#endif > + setvbuf(stdout, NULL, _IOLBF, BUFSIZ); // Line buffered > + > + newfp = std::freopen((userStdPath + "/Error.log").c_str(), "w", stderr); > ++#if 0 /* can't substitute a FILE object for stdout if FILE is an opaque. */ > + if ( newfp == NULL ) { // This happens on NT > + newfp = fopen((userStdPath + "/Error.log").c_str(), "w"); > + if (newfp) { // in case stderr is a macro > + *stderr = *newfp; > + } > + } > ++#endif > + setbuf(stderr, NULL); // No buffering > + } > + >