strtoumax: fix typo in previous commit.
[gnulib.git] / tests / test-yesno.c
index 1e15acd..f77d633 100644 (file)
@@ -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
 
 #include <config.h>
 
+/* Specification.  */
+#include "yesno.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
 #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]);