Download raw body.
games/enigma prepare for stdio opaque
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
> + }
> +
>
games/enigma prepare for stdio opaque