glibc/dirent/opendir-tst1.c

96 lines
2.0 KiB
C
Raw Normal View History

/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
Add missing header files throughout the testsuite. * crypt/md5.h: Test _LIBC with #if defined, not #if. * dirent/opendir-tst1.c: Include sys/stat.h. * dirent/tst-fdopendir.c: Include sys/stat.h. * dirent/tst-fdopendir2.c: Include stdlib.h. * dirent/tst-scandir.c: Include stdbool.h. * elf/tst-auditmod1.c: Include link.h and stddef.h. * elf/tst-tls15.c: Include stdlib.h. * elf/tst-tls16.c: Include stdlib.h. * elf/tst-tls17.c: Include stdlib.h. * elf/tst-tls18.c: Include stdlib.h. * iconv/tst-iconv6.c: Include endian.h. * iconvdata/bug-iconv11.c: Include limits.h. * io/test-utime.c: Include stdint.h. * io/tst-faccessat.c: Include sys/stat.h. * io/tst-fchmodat.c: Include sys/stat.h. * io/tst-fchownat.c: Include sys/stat.h. * io/tst-fstatat.c: Include sys/stat.h. * io/tst-futimesat.c: Include sys/stat.h. * io/tst-linkat.c: Include sys/stat.h. * io/tst-mkdirat.c: Include sys/stat.h and stdbool.h. * io/tst-mkfifoat.c: Include sys/stat.h and stdbool.h. * io/tst-mknodat.c: Include sys/stat.h and stdbool.h. * io/tst-openat.c: Include stdbool.h. * io/tst-readlinkat.c: Include sys/stat.h. * io/tst-renameat.c: Include sys/stat.h. * io/tst-symlinkat.c: Include sys/stat.h. * io/tst-unlinkat.c: Include stdbool.h. * libio/bug-memstream1.c: Include stdlib.h. * libio/bug-wmemstream1.c: Include stdlib.h. * libio/tst-fwrite-error.c: Include stdlib.h. * libio/tst-memstream1.c: Include stdlib.h. * libio/tst-memstream2.c: Include stdlib.h. * libio/tst-memstream3.c: Include stdlib.h. * malloc/tst-interpose-aux.c: Include stdint.h. * misc/tst-preadvwritev-common.c: Include sys/stat.h. * nptl/tst-basic7.c: Include limits.h. * nptl/tst-cancel25.c: Include pthread.h, not pthreadP.h. * nptl/tst-cancel4.c: Include stddef.h, limits.h, and sys/stat.h. * nptl/tst-cancel4_1.c: Include stddef.h. * nptl/tst-cancel4_2.c: Include stddef.h. * nptl/tst-cond16.c: Include limits.h. Use sysconf(_SC_PAGESIZE) instead of __getpagesize. * nptl/tst-cond18.c: Include limits.h. Use sysconf(_SC_PAGESIZE) instead of __getpagesize. * nptl/tst-cond4.c: Include stdint.h. * nptl/tst-cond6.c: Include stdint.h. * nptl/tst-stack2.c: Include limits.h. * nptl/tst-stackguard1.c: Include stddef.h. * nptl/tst-tls4.c: Include stdint.h. Don't include tls.h. * nptl/tst-tls4moda.c: Include stddef.h. Don't include stdio.h, unistd.h, or tls.h. * nptl/tst-tls4modb.c: Include stddef.h. Don't include stdio.h, unistd.h, or tls.h. * nptl/tst-tls5.h: Include stddef.h. Don't include stdlib.h or tls.h. * posix/tst-getaddrinfo2.c: Include stdio.h. * posix/tst-getaddrinfo5.c: Include stdio.h. * posix/tst-pathconf.c: Include sys/stat.h. * posix/tst-posix_fadvise-common.c: Include stdint.h. * posix/tst-preadwrite-common.c: Include sys/stat.h. * posix/tst-regex.c: Include stdint.h. Don't include spawn.h or spawn_int.h. * posix/tst-regexloc.c: Don't include spawn.h or spawn_int.h. * posix/tst-vfork3.c: Include sys/stat.h. * resolv/tst-bug18665-tcp.c: Include stdlib.h. * resolv/tst-res_hconf_reorder.c: Include stdlib.h. * resolv/tst-resolv-search.c: Include stdlib.h. * stdio-common/tst-fmemopen2.c: Include stdint.h. * stdio-common/tst-vfprintf-width-prec.c: Include stdlib.h. * stdlib/test-canon.c: Include sys/stat.h. * stdlib/tst-tls-atexit.c: Include stdbool.h. * string/test-memchr.c: Include stdint.h. * string/tst-cmp.c: Include stdint.h. * sysdeps/pthread/tst-timer.c: Include stdint.h. * sysdeps/unix/sysv/linux/tst-sync_file_range.c: Include stdint.h. * sysdeps/wordsize-64/tst-writev.c: Include limits.h and stdint.h. * sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h. Don't include init-arch.h. * sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h. Don't include init-arch.h. * sysdeps/x86_64/tst-auditmod10b.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod3b.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod4b.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod5b.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod6b.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod6c.c: Include link.h and stddef.h. * sysdeps/x86_64/tst-auditmod7b.c: Include link.h and stddef.h. * time/clocktest.c: Include stdint.h. * time/tst-posixtz.c: Include stdint.h. * timezone/tst-timezone.c: Include stdint.h.
2017-02-17 06:31:42 +08:00
#include <sys/stat.h>
/* Name of the FIFO. */
char tmpname[] = "fifoXXXXXX";
/* Do the real work. */
static int
real_test (void)
{
DIR *dirp;
/* This should not block for an FIFO. */
dirp = opendir (tmpname);
/* Successful. */
if (dirp != NULL)
{
/* Oh, oh, how can this work? */
Update. 1998-11-16 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/opendir.c: Use o_directory_works differently. Treat zero value as uninitialized so that variable can go into .bss. * dirent/opendir-tst1.c: Print error strings to stdout. * sysdeps/unix/sysv/linux/mmap64.c: New file. Empty. * sysdeps/unix/sysv/linux/syscalls.list: Add mmap with mmap64 alias. * sysdeps/unix/sysv/linux/arm/mmap.S: Add mmap64 alias. * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * time/tzfile.c (__tzfile_read): Check that types[i].isdst is in range. 1998-11-16 Ulrich Drepper <drepper@cygnus.com> * libio/bits/stdio.h (fread_unlocked): Do handle zero size and number. (fwrite_unlocked): Likewise. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * libio/bits/stdio.h (fread_unlocked): Don't evaluate non-constant twice. Don't bother handling zero size. (frwite_unlocked): Likewise. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * configure.in: Fix regex for makeinfo version string. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sunrpc/rpc_sample.c (write_sample_server): Avoid -Wparentheses warning. * sunrpc/rpc_svcout.c (write_program): Likewise. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * time/Makefile (CFLAGS-test_time.c): Add -Wno-format. 1998-11-16 Ulrich Drepper <drepper@cygnus.com * misc/sys/mman.h: Pretty print prototypes. 1998-11-15 Ulrich Drepper <drepper@cygnus.com * misc/error.c (error): Don't use result of strerror_r call directly since at least DEC Unix has a wrong return type. Patch by Johan Danielsson <joda@pdc.kth.se>. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1998-11-16 20:02:08 +08:00
fputs ("`opendir' succeeded on a FIFO???\n", stdout);
closedir (dirp);
return 1;
}
if (errno != ENOTDIR)
{
Update. 1998-11-16 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/opendir.c: Use o_directory_works differently. Treat zero value as uninitialized so that variable can go into .bss. * dirent/opendir-tst1.c: Print error strings to stdout. * sysdeps/unix/sysv/linux/mmap64.c: New file. Empty. * sysdeps/unix/sysv/linux/syscalls.list: Add mmap with mmap64 alias. * sysdeps/unix/sysv/linux/arm/mmap.S: Add mmap64 alias. * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * time/tzfile.c (__tzfile_read): Check that types[i].isdst is in range. 1998-11-16 Ulrich Drepper <drepper@cygnus.com> * libio/bits/stdio.h (fread_unlocked): Do handle zero size and number. (fwrite_unlocked): Likewise. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * libio/bits/stdio.h (fread_unlocked): Don't evaluate non-constant twice. Don't bother handling zero size. (frwite_unlocked): Likewise. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * configure.in: Fix regex for makeinfo version string. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sunrpc/rpc_sample.c (write_sample_server): Avoid -Wparentheses warning. * sunrpc/rpc_svcout.c (write_program): Likewise. 1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * time/Makefile (CFLAGS-test_time.c): Add -Wno-format. 1998-11-16 Ulrich Drepper <drepper@cygnus.com * misc/sys/mman.h: Pretty print prototypes. 1998-11-15 Ulrich Drepper <drepper@cygnus.com * misc/error.c (error): Don't use result of strerror_r call directly since at least DEC Unix has a wrong return type. Patch by Johan Danielsson <joda@pdc.kth.se>. 1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1998-11-16 20:02:08 +08:00
fprintf (stdout, "`opendir' return error `%s' instead of `%s'\n",
strerror (errno), strerror (ENOTDIR));
return 1;
}
return 0;
}
static int
do_test (void)
{
int retval;
if (mktemp (tmpname) == NULL)
{
perror ("mktemp");
return 1;
}
/* Try to generate a FIFO. */
if (mknod (tmpname, 0600 | S_IFIFO, 0) < 0)
{
perror ("mknod");
/* We cannot make this an error. */
return 0;
}
retval = real_test ();
remove (tmpname);
return retval;
}
2000-12-28 04:26:07 +08:00
static void
do_cleanup (void)
{
remove (tmpname);
}
#define CLEANUP_HANDLER do_cleanup
#include <support/test-driver.c>