From 27dae84ed92f1ef0300263091972338d12e78348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 18 Oct 2025 19:06:52 +0200 Subject: New upstream version 1.4.1 --- tests/test-open.h | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'tests/test-open.h') diff --git a/tests/test-open.h b/tests/test-open.h index 369c926f..1a80af45 100644 --- a/tests/test-open.h +++ b/tests/test-open.h @@ -1,5 +1,5 @@ /* Test of opening a file descriptor. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-2025 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,9 +41,18 @@ static ALWAYS_INLINE int test_open (int (*func) (char const *, int, ...), bool print) { +#if HAVE_DECL_ALARM + /* Declare failure if test takes too long, by using default abort + caused by SIGALRM. */ + int alarm_value = 5; + signal (SIGALRM, SIG_DFL); + alarm (alarm_value); +#endif + int fd; /* Remove anything from prior partial run. */ + unlink (BASE "fifo"); unlink (BASE "file"); unlink (BASE "e.exe"); unlink (BASE "link"); @@ -69,6 +78,43 @@ test_open (int (*func) (char const *, int, ...), bool print) ASSERT (func (BASE "file/", O_RDONLY) == -1); ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); + /* Cannot open regular file with O_DIRECTORY. */ + errno = 0; + ASSERT (func (BASE "file", O_RDONLY | O_DIRECTORY) == -1); + ASSERT (errno == ENOTDIR); + + /* Cannot open /dev/null with trailing slash or O_DIRECTORY. */ + errno = 0; + ASSERT (func ("/dev/null/", O_RDONLY) == -1); +#if defined _WIN32 && !defined __CYGWIN__ + ASSERT (errno == ENOENT); +#else + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); +#endif + + errno = 0; + ASSERT (func ("/dev/null", O_RDONLY | O_DIRECTORY) == -1); + ASSERT (errno == ENOTDIR); + + /* Cannot open /dev/tty with trailing slash or O_DIRECTORY, + though errno may differ as there may not be a controlling tty. */ + ASSERT (func ("/dev/tty/", O_RDONLY) == -1); + ASSERT (func ("/dev/tty", O_RDONLY | O_DIRECTORY) == -1); + + /* Cannot open fifo with trailing slash or O_DIRECTORY. */ + if (mkfifo (BASE "fifo", 0666) == 0) + { + errno = 0; + ASSERT (func (BASE "fifo/", O_RDONLY) == -1); + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); + + errno = 0; + ASSERT (func (BASE "fifo", O_RDONLY | O_DIRECTORY) == -1); + ASSERT (errno == ENOTDIR); + + ASSERT (unlink (BASE "fifo") == 0); + } + /* Directories cannot be opened for writing. */ errno = 0; ASSERT (func (".", O_WRONLY) == -1); -- cgit v1.2.3 From 5f59a34ab747dde8ede7357f3431bf06bd6002fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 8 Mar 2026 17:28:33 +0100 Subject: New upstream version 1.4.2 --- tests/test-open.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'tests/test-open.h') diff --git a/tests/test-open.h b/tests/test-open.h index 1a80af45..6a0a8b3e 100644 --- a/tests/test-open.h +++ b/tests/test-open.h @@ -1,5 +1,5 @@ /* Test of opening a file descriptor. - Copyright (C) 2007-2025 Free Software Foundation, Inc. + Copyright (C) 2007-2026 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,8 +32,9 @@ # define ALWAYS_INLINE #endif -/* This file is designed to test both open(n,buf[,mode]) and - openat(AT_FDCWD,n,buf[,mode]). FUNC is the function to test. +/* This file is designed to test open(n,buf[,mode]), + openat(dfd,n,buf[,mode]), and openat2(dfd,n,how,size). + FUNC is the function to test; for openat and openat2 it is a wrapper. Assumes that BASE and ASSERT are already defined, and that appropriate headers are already included. If PRINT, warn before skipping symlink tests with status 77. */ @@ -144,9 +145,7 @@ test_open (int (*func) (char const *, int, ...), bool print) { /* Since the O_CLOEXEC handling goes through a special code path at its first invocation, test it twice. */ - int i; - - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { int flags; -- cgit v1.2.3