Blame gnulib/tests/test-sys_stat.c

Packit Service a2ae7a
/* Test of <sys/stat.h> substitute.
Packit Service a2ae7a
   Copyright (C) 2007-2019 Free Software Foundation, Inc.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is free software: you can redistribute it and/or modify
Packit Service a2ae7a
   it under the terms of the GNU General Public License as published by
Packit Service a2ae7a
   the Free Software Foundation; either version 3 of the License, or
Packit Service a2ae7a
   (at your option) any later version.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is distributed in the hope that it will be useful,
Packit Service a2ae7a
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service a2ae7a
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service a2ae7a
   GNU General Public License for more details.
Packit Service a2ae7a
Packit Service a2ae7a
   You should have received a copy of the GNU General Public License
Packit Service a2ae7a
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
Packit Service a2ae7a
Packit Service a2ae7a
/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
Packit Service a2ae7a
Packit Service a2ae7a
#include <config.h>
Packit Service a2ae7a
Packit Service a2ae7a
#include <sys/stat.h>
Packit Service a2ae7a
Packit Service a2ae7a
#include "verify.h"
Packit Service a2ae7a
Packit Service a2ae7a
/* Check the existence of some macros.  */
Packit Service a2ae7a
int a[] =
Packit Service a2ae7a
  {
Packit Service a2ae7a
    S_IFMT,
Packit Service a2ae7a
#ifdef S_IFBLK /* missing on MSVC */
Packit Service a2ae7a
    S_IFBLK,
Packit Service a2ae7a
#endif
Packit Service a2ae7a
    S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
Packit Service a2ae7a
#ifdef S_IFLNK /* missing on native Windows and DJGPP */
Packit Service a2ae7a
    S_IFLNK,
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK /* missing on native Windows and DJGPP */
Packit Service a2ae7a
    S_IFSOCK,
Packit Service a2ae7a
#endif
Packit Service a2ae7a
    S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR,
Packit Service a2ae7a
    S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP,
Packit Service a2ae7a
    S_IRWXO, S_IROTH, S_IWOTH, S_IXOTH,
Packit Service a2ae7a
    S_ISUID, S_ISGID, S_ISVTX,
Packit Service a2ae7a
    S_ISBLK (S_IFREG),
Packit Service a2ae7a
    S_ISCHR (S_IFREG),
Packit Service a2ae7a
    S_ISDIR (S_IFREG),
Packit Service a2ae7a
    S_ISFIFO (S_IFREG),
Packit Service a2ae7a
    S_ISREG (S_IFREG),
Packit Service a2ae7a
    S_ISLNK (S_IFREG),
Packit Service a2ae7a
    S_ISSOCK (S_IFREG),
Packit Service a2ae7a
    S_ISDOOR (S_IFREG),
Packit Service a2ae7a
    S_ISMPB (S_IFREG),
Packit Service a2ae7a
    S_ISMPX (S_IFREG),
Packit Service a2ae7a
    S_ISNAM (S_IFREG),
Packit Service a2ae7a
    S_ISNWK (S_IFREG),
Packit Service a2ae7a
    S_ISPORT (S_IFREG),
Packit Service a2ae7a
    S_ISCTG (S_IFREG),
Packit Service a2ae7a
    S_ISOFD (S_IFREG),
Packit Service a2ae7a
    S_ISOFL (S_IFREG),
Packit Service a2ae7a
    S_ISWHT (S_IFREG)
Packit Service a2ae7a
  };
Packit Service a2ae7a
Packit Service a2ae7a
/* Sanity checks.  */
Packit Service a2ae7a
Packit Service a2ae7a
verify (S_IRWXU == (S_IRUSR | S_IWUSR | S_IXUSR));
Packit Service a2ae7a
verify (S_IRWXG == (S_IRGRP | S_IWGRP | S_IXGRP));
Packit Service a2ae7a
verify (S_IRWXO == (S_IROTH | S_IWOTH | S_IXOTH));
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (S_ISBLK (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISBLK (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISBLK (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISBLK (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISBLK (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISBLK (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISBLK (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISCHR (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (S_ISCHR (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISCHR (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISCHR (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISCHR (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISCHR (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISCHR (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISDIR (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISDIR (S_IFCHR));
Packit Service a2ae7a
verify (S_ISDIR (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISDIR (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISDIR (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISDIR (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISDIR (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFDIR));
Packit Service a2ae7a
verify (S_ISFIFO (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISFIFO (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISREG (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISREG (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISREG (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISREG (S_IFIFO));
Packit Service a2ae7a
verify (S_ISREG (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISREG (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISREG (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISLNK (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISLNK (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISLNK (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISLNK (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISLNK (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (S_ISLNK (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISLNK (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISSOCK (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (S_ISSOCK (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISDOOR (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISMPB (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISMPB (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISMPB (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISMPB (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISMPB (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISMPB (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISMPB (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISMPX (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISMPX (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISMPX (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISMPX (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISMPX (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISMPX (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISMPX (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISNAM (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISNAM (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISNAM (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISNAM (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISNAM (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISNAM (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISNAM (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISNWK (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISNWK (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISNWK (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISNWK (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISNWK (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISNWK (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISNWK (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISPORT (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISPORT (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISPORT (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISPORT (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISPORT (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISPORT (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISPORT (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISCTG (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISCTG (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISCTG (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISCTG (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISCTG (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISCTG (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISCTG (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISOFD (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISOFD (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISOFD (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISOFD (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISOFD (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISOFD (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISOFD (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISOFL (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISOFL (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISOFL (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISOFL (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISOFL (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISOFL (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISOFL (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#ifdef S_IFBLK
Packit Service a2ae7a
verify (!S_ISWHT (S_IFBLK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
verify (!S_ISWHT (S_IFCHR));
Packit Service a2ae7a
verify (!S_ISWHT (S_IFDIR));
Packit Service a2ae7a
verify (!S_ISWHT (S_IFIFO));
Packit Service a2ae7a
verify (!S_ISWHT (S_IFREG));
Packit Service a2ae7a
#ifdef S_IFLNK
Packit Service a2ae7a
verify (!S_ISWHT (S_IFLNK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
#ifdef S_IFSOCK
Packit Service a2ae7a
verify (!S_ISWHT (S_IFSOCK));
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
/* POSIX 2008 requires traditional encoding of permission constants.  */
Packit Service a2ae7a
verify (S_IRWXU == 00700);
Packit Service a2ae7a
verify (S_IRUSR == 00400);
Packit Service a2ae7a
verify (S_IWUSR == 00200);
Packit Service a2ae7a
verify (S_IXUSR == 00100);
Packit Service a2ae7a
verify (S_IRWXG == 00070);
Packit Service a2ae7a
verify (S_IRGRP == 00040);
Packit Service a2ae7a
verify (S_IWGRP == 00020);
Packit Service a2ae7a
verify (S_IXGRP == 00010);
Packit Service a2ae7a
verify (S_IRWXO == 00007);
Packit Service a2ae7a
verify (S_IROTH == 00004);
Packit Service a2ae7a
verify (S_IWOTH == 00002);
Packit Service a2ae7a
verify (S_IXOTH == 00001);
Packit Service a2ae7a
verify (S_ISUID == 04000);
Packit Service a2ae7a
verify (S_ISGID == 02000);
Packit Service a2ae7a
verify (S_ISVTX == 01000);
Packit Service a2ae7a
Packit Service a2ae7a
#if ((0 <= UTIME_NOW && UTIME_NOW < 1000000000)           \
Packit Service a2ae7a
     || (0 <= UTIME_OMIT && UTIME_OMIT < 1000000000)      \
Packit Service a2ae7a
     || UTIME_NOW == UTIME_OMIT)
Packit Service a2ae7a
invalid UTIME macros
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
/* Check the existence of some types.  */
Packit Service a2ae7a
nlink_t t1;
Packit Service a2ae7a
off_t t2;
Packit Service a2ae7a
mode_t t3;
Packit Service a2ae7a
Packit Service a2ae7a
struct timespec st;
Packit Service a2ae7a
Packit Service a2ae7a
int
Packit Service a2ae7a
main (void)
Packit Service a2ae7a
{
Packit Service a2ae7a
  return 0;
Packit Service a2ae7a
}