(root)/
diffutils-3.10/
gnulib-tests/
test-binary-io.c
       1  /* Test of binary mode I/O.
       2     Copyright (C) 2005, 2007-2023 Free Software Foundation, Inc.
       3  
       4     This program is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU General Public License as published by
       6     the Free Software Foundation, either version 3 of the License, or
       7     (at your option) any later version.
       8  
       9     This program is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU General Public License for more details.
      13  
      14     You should have received a copy of the GNU General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  /* Written by Bruno Haible <bruno@clisp.org>, 2005.  */
      18  
      19  #include <config.h>
      20  
      21  #include "binary-io.h"
      22  
      23  #include <sys/types.h>
      24  #include <sys/stat.h>
      25  #include <fcntl.h>
      26  #include <stdio.h>
      27  #include <stdlib.h>
      28  #include <unistd.h>
      29  
      30  #include "macros.h"
      31  
      32  int
      33  main (int argc, char *argv[])
      34  {
      35    /* Test the O_BINARY macro.  */
      36    {
      37      int fd =
      38        open ("t-bin-out0.tmp", O_CREAT | O_TRUNC | O_RDWR | O_BINARY, 0600);
      39      if (write (fd, "Hello\n", 6) < 0)
      40        exit (1);
      41      close (fd);
      42    }
      43    {
      44      struct stat statbuf;
      45      if (stat ("t-bin-out0.tmp", &statbuf) < 0)
      46        exit (1);
      47      ASSERT (statbuf.st_size == 6);
      48    }
      49  
      50    switch (argv[1][0])
      51      {
      52      case '1':
      53        /* Test the set_binary_mode() function.  */
      54        set_binary_mode (1, O_BINARY);
      55        fputs ("Hello\n", stdout);
      56        break;
      57  
      58      default:
      59        break;
      60      }
      61  
      62    return 0;
      63  }