• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/timemachine/gettext-0.17/gettext-tools/gnulib-tests/
1/* Test of binary mode I/O.
2   Copyright (C) 2005, 2007 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 <http://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#define ASSERT(expr) \
31  do									     \
32    {									     \
33      if (!(expr))							     \
34        {								     \
35          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
36          abort ();							     \
37        }								     \
38    }									     \
39  while (0)
40
41int
42main ()
43{
44  /* Test the O_BINARY macro.  */
45  {
46    int fd =
47      open ("t-bin-out2.tmp", O_CREAT | O_TRUNC | O_RDWR | O_BINARY, 0600);
48    if (write (fd, "Hello\n", 6) < 0)
49      exit (1);
50    close (fd);
51  }
52  {
53    struct stat statbuf;
54    if (stat ("t-bin-out2.tmp", &statbuf) < 0)
55      exit (1);
56    ASSERT (statbuf.st_size == 6);
57  }
58  unlink ("t-bin-out2.tmp");
59
60  /* Test the SET_BINARY macro.  */
61  SET_BINARY (1);
62  fputs ("Hello\n", stdout);
63  fclose (stdout);
64  fclose (stderr);
65  {
66    struct stat statbuf;
67    if (stat ("t-bin-out1.tmp", &statbuf) < 0)
68      exit (1);
69    ASSERT (statbuf.st_size == 6);
70  }
71
72  return 0;
73}
74