Blame gnulib-tests/test-fcntl-h.c

Packit 33f14e
/* Test of <fcntl.h> substitute.
Packit 33f14e
   Copyright (C) 2007, 2009-2017 Free Software Foundation, Inc.
Packit 33f14e
Packit 33f14e
   This program is free software: you can redistribute it and/or modify
Packit 33f14e
   it under the terms of the GNU General Public License as published by
Packit 33f14e
   the Free Software Foundation; either version 3 of the License, or
Packit 33f14e
   (at your option) any later version.
Packit 33f14e
Packit 33f14e
   This program is distributed in the hope that it will be useful,
Packit 33f14e
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 33f14e
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 33f14e
   GNU General Public License for more details.
Packit 33f14e
Packit 33f14e
   You should have received a copy of the GNU General Public License
Packit 33f14e
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 33f14e
Packit 33f14e
/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
Packit 33f14e
Packit 33f14e
#include <config.h>
Packit 33f14e
Packit 33f14e
#include <fcntl.h>
Packit 33f14e
Packit 33f14e
/* Check that the various O_* macros are defined.  */
Packit 33f14e
int o = (O_DIRECT | O_DIRECTORY | O_DSYNC | O_IGNORE_CTTY | O_NDELAY | O_NOATIME
Packit 33f14e
	 | O_NONBLOCK | O_NOCTTY | O_NOFOLLOW | O_NOLINK | O_NOLINKS | O_NOTRANS
Packit 33f14e
	 | O_RSYNC | O_SYNC | O_TTY_INIT | O_BINARY | O_TEXT);
Packit 33f14e
Packit 33f14e
/* Check that the various SEEK_* macros are defined.  */
Packit 33f14e
int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
Packit 33f14e
Packit 33f14e
/* Check that the FD_* macros are defined.  */
Packit 33f14e
int i = FD_CLOEXEC;
Packit 33f14e
Packit 33f14e
/* Check that the types are all defined.  */
Packit 33f14e
pid_t t1;
Packit 33f14e
off_t t2;
Packit 33f14e
mode_t t3;
Packit 33f14e
Packit 33f14e
int
Packit 33f14e
main (void)
Packit 33f14e
{
Packit 33f14e
  /* Ensure no overlap in SEEK_*. */
Packit 33f14e
  switch (0)
Packit 33f14e
    {
Packit 33f14e
    case SEEK_CUR:
Packit 33f14e
    case SEEK_END:
Packit 33f14e
    case SEEK_SET:
Packit 33f14e
      ;
Packit 33f14e
    }
Packit 33f14e
Packit 33f14e
  /* Ensure no dangerous overlap in non-zero gnulib-defined replacements.  */
Packit 33f14e
  switch (O_RDONLY)
Packit 33f14e
    {
Packit 33f14e
      /* Access modes */
Packit 33f14e
    case O_RDONLY:
Packit 33f14e
    case O_WRONLY:
Packit 33f14e
    case O_RDWR:
Packit 33f14e
#if O_EXEC && O_EXEC != O_RDONLY
Packit 33f14e
    case O_EXEC:
Packit 33f14e
#endif
Packit 33f14e
#if O_SEARCH && O_EXEC != O_SEARCH && O_SEARCH != O_RDONLY
Packit 33f14e
    case O_SEARCH:
Packit 33f14e
#endif
Packit 33f14e
      i = ! (~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH));
Packit 33f14e
      break;
Packit 33f14e
Packit 33f14e
      /* Everyone should have these */
Packit 33f14e
    case O_CREAT:
Packit 33f14e
    case O_EXCL:
Packit 33f14e
    case O_TRUNC:
Packit 33f14e
    case O_APPEND:
Packit 33f14e
      break;
Packit 33f14e
Packit 33f14e
      /* These might be 0 or O_RDONLY, only test non-zero versions.  */
Packit 33f14e
#if O_CLOEXEC
Packit 33f14e
    case O_CLOEXEC:
Packit 33f14e
#endif
Packit 33f14e
#if O_DIRECT
Packit 33f14e
    case O_DIRECT:
Packit 33f14e
#endif
Packit 33f14e
#if O_DIRECTORY
Packit 33f14e
    case O_DIRECTORY:
Packit 33f14e
#endif
Packit 33f14e
#if O_DSYNC
Packit 33f14e
    case O_DSYNC:
Packit 33f14e
#endif
Packit 33f14e
#if O_IGNORE_CTTY
Packit 33f14e
    case O_IGNORE_CTTY:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOATIME
Packit 33f14e
    case O_NOATIME:
Packit 33f14e
#endif
Packit 33f14e
#if O_NONBLOCK
Packit 33f14e
    case O_NONBLOCK:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOCTTY
Packit 33f14e
    case O_NOCTTY:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOFOLLOW
Packit 33f14e
    case O_NOFOLLOW:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOLINK
Packit 33f14e
    case O_NOLINK:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOLINKS
Packit 33f14e
    case O_NOLINKS:
Packit 33f14e
#endif
Packit 33f14e
#if O_NOTRANS
Packit 33f14e
    case O_NOTRANS:
Packit 33f14e
#endif
Packit 33f14e
#if O_RSYNC && O_RSYNC != O_DSYNC
Packit 33f14e
    case O_RSYNC:
Packit 33f14e
#endif
Packit 33f14e
#if O_SYNC && O_SYNC != O_DSYNC && O_SYNC != O_RSYNC
Packit 33f14e
    case O_SYNC:
Packit 33f14e
#endif
Packit 33f14e
#if O_TTY_INIT
Packit 33f14e
    case O_TTY_INIT:
Packit 33f14e
#endif
Packit 33f14e
#if O_BINARY
Packit 33f14e
    case O_BINARY:
Packit 33f14e
#endif
Packit 33f14e
#if O_TEXT
Packit 33f14e
    case O_TEXT:
Packit 33f14e
#endif
Packit 33f14e
      ;
Packit 33f14e
    }
Packit 33f14e
Packit 33f14e
  return !i;
Packit 33f14e
}