Blame gl/tests/test-sys_stat.c

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