X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-yesno.c;h=f77d633332bf00d920fe9ea1e7ecdbb4e67dcdfc;hb=fa1db0dd22768f09a507674a30beb5b8a87bb35f;hp=1e15acddadccd4a2c8dbb7c75f806e0e5ba6054f;hpb=1cf55d294e17922d56dc703d66fd699f67db7073;p=gnulib.git diff --git a/tests/test-yesno.c b/tests/test-yesno.c index 1e15acdda..f77d63333 100644 --- a/tests/test-yesno.c +++ b/tests/test-yesno.c @@ -1,5 +1,5 @@ /* Test of yesno module. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,12 +17,15 @@ #include +/* Specification. */ +#include "yesno.h" + #include #include #include #include "closein.h" -#include "yesno.h" +#include "binary-io.h" char *program_name; @@ -35,8 +38,19 @@ main (int argc, char **argv) { int i = 1; program_name = argv[0]; + /* yesno recommends that all clients use close_stdin in main. */ atexit (close_stdin); + /* But on mingw, close_stdin leaves stdin's file descriptor at the expected + position (i.e. where this program left off reading) only if its mode has + been set to O_BINARY. If it has been set to O_TEXT, and the file + descriptor is seekable, and stdin is buffered, the MSVCRT runtime ends up + setting the file descriptor's position to the expected position _minus_ + the number of LFs not preceded by CR that were read between the expected + position and the last filled buffer end position. (I.e. the repositioning + from the end-of-buffer to the expected position does not work if the input + file contains end-of-line markers in Unix convention.) */ + SET_BINARY (0); if (1 < argc) i = atoi (argv[1]);