* [LTP] [PATCH 1/2] pathconf01: Convert to new API
@ 2023-11-02 8:05 Yang Xu
2023-11-02 8:05 ` [LTP] [PATCH 2/2] Add error tests for pathconf() system call Yang Xu
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
0 siblings, 2 replies; 10+ messages in thread
From: Yang Xu @ 2023-11-02 8:05 UTC (permalink / raw)
To: ltp
* Simplify code and description
* Use TST_macros
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
.../kernel/syscalls/pathconf/pathconf01.c | 251 +++---------------
1 file changed, 33 insertions(+), 218 deletions(-)
diff --git a/testcases/kernel/syscalls/pathconf/pathconf01.c b/testcases/kernel/syscalls/pathconf/pathconf01.c
index 362bae94f..9b8b99d48 100644
--- a/testcases/kernel/syscalls/pathconf/pathconf01.c
+++ b/testcases/kernel/syscalls/pathconf/pathconf01.c
@@ -1,237 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Further, this software is distributed without any warranty that it is
- * free of the rightful claim of any third person regarding infringement
- * or the like. Any license provided herein, whether implied or
- * otherwise, applies only to this software file. Patent licenses, if
- * any, provided herein do not apply to combinations of this program with
- * other software, or any other product whatsoever.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
- * Mountain View, CA 94043, or:
- *
- * http://www.sgi.com
- *
- * For further information regarding this notice, see:
- *
- * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
- *
+ * Copyright (c) Linux Test Project, 2000-2023
+ * Authors: William Roske, Dave Fenner
*/
-/* $Id: pathconf01.c,v 1.5 2009/11/02 13:57:17 subrata_modak Exp $ */
-/**********************************************************
- *
- * OS Test - Silicon Graphics, Inc.
- *
- * TEST IDENTIFIER : pathconf01
- *
- * EXECUTED BY : anyone
- *
- * TEST TITLE : Basic test for pathconf(2)
- *
- * PARENT DOCUMENT : usctpl01
- *
- * TEST CASE TOTAL : 6
- *
- * WALL CLOCK TIME : 1
- *
- * CPU TYPES : ALL
- *
- * AUTHOR : William Roske
- *
- * CO-PILOT : Dave Fenner
- *
- * DATE STARTED : 03/30/92
- *
- * INITIAL RELEASE : UNICOS 7.0
- *
- * TEST CASES
- *
- * 1.) pathconf(2) returns...(See Description)
- *
- * INPUT SPECIFICATIONS
- * The standard options for system call tests are accepted.
- * (See the parse_opts(3) man page).
- *
- * OUTPUT SPECIFICATIONS
- *
- * DURATION
- * Terminates - with frequency and infinite modes.
- *
- * SIGNALS
- * Uses SIGUSR1 to pause before test if option set.
- * (See the parse_opts(3) man page).
- *
- * RESOURCES
- * None
- *
- * ENVIRONMENTAL NEEDS
- * No run-time environmental needs.
- *
- * SPECIAL PROCEDURAL REQUIREMENTS
- * None
- *
- * INTERCASE DEPENDENCIES
- * None
- *
- * DETAILED DESCRIPTION
- * This is a Phase I test for the pathconf(2) system call. It is intended
- * to provide a limited exposure of the system call, for now. It
- * should/will be extended when full functional tests are written for
- * pathconf(2).
- *
- * Setup:
- * Setup signal handling.
- * Pause for SIGUSR1 if option specified.
- *
- * Test:
- * Loop if the proper options are given.
- * Execute system call
- * Check return code, if system call failed (return=-1)
- * Log the errno and Issue a FAIL message.
- * Otherwise, Issue a PASS message.
- *
- * Cleanup:
- * Print errno log and/or timing stats if options given
- *
+
+/*\
+ * [Description]
*
- *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/
+ * Check the basic functionality of the pathconf() system call.
+ */
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <signal.h>
-#include "test.h"
+#include <stdlib.h>
+#include "tst_test.h"
-void setup();
-void cleanup();
-void help();
+static char *path;
-struct pathconf_args {
- char *define_tag;
+static struct tcase {
+ char *name;
int value;
-} args[] = {
- {
- "_PC_LINK_MAX", _PC_LINK_MAX}, {
- "_PC_NAME_MAX", _PC_NAME_MAX}, {
- "_PC_PATH_MAX", _PC_PATH_MAX}, {
- "_PC_PIPE_BUF", _PC_PIPE_BUF}, {
- "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED}, {
- "_PC_NO_TRUNC", _PC_NO_TRUNC}, {
- NULL, 0}
+} tcases[] = {
+ {"_PC_LINK_MAX", _PC_LINK_MAX},
+ {"_PC_NAME_MAX", _PC_NAME_MAX},
+ {"_PC_PATH_MAX", _PC_PATH_MAX},
+ {"_PC_PIPE_BUF", _PC_PIPE_BUF},
+ {"_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
+ {"_PC_NO_TRUNC", _PC_NO_TRUNC},
+ {NULL, 0},
};
-char *TCID = "pathconf01";
-int TST_TOTAL = ARRAY_SIZE(args);
-
-int i;
-
-
-int lflag;
-char *path;
-
-option_t options[] = {
- {"l:", &lflag, &path}, /* -l <path to test> */
- {NULL, NULL, NULL}
-};
-
-int main(int ac, char **av)
-{
- int lc;
-
- tst_parse_opts(ac, av, options, &help);
-
- if (!lflag) {
- tst_tmpdir();
- path = tst_get_tmpdir();
- }
- /***************************************************************
- * perform global setup for test
- ***************************************************************/
- setup();
-
- /***************************************************************
- * check looping state if -c option given
- ***************************************************************/
- for (lc = 0; TEST_LOOPING(lc); lc++) {
-
- tst_count = 0;
-
- for (i = 0; i < TST_TOTAL; i++) {
-
- errno = -4;
-
- /*
- * Call pathconf(2)
- */
- TEST(pathconf(path, args[i].value));
-
- /*
- * A test case can only fail if -1 is returned and the errno
- * was set. If the errno remains unchanged, the
- * system call did not fail.
- */
- if (TEST_RETURN == -1 && errno != -4) {
- tst_resm(TFAIL,
- "pathconf(%s, %s) Failed, errno=%d : %s",
- path, args[i].define_tag, TEST_ERRNO,
- strerror(TEST_ERRNO));
- } else {
- tst_resm(TPASS,
- "pathconf(%s, %s) returned %ld",
- path, args[i].define_tag,
- TEST_RETURN);
- }
- }
- }
-
- /***************************************************************
- * cleanup and exit
- ***************************************************************/
- cleanup();
-
- tst_exit();
-}
-
-/***************************************************************
- * setup() - performs all ONE TIME setup for this test.
- ***************************************************************/
-void setup(void)
+static void verify_pathconf(unsigned int i)
{
+ struct tcase *tc = &tcases[i];
- tst_sig(NOFORK, DEF_HANDLER, cleanup);
+ path = tst_get_tmpdir();
- TEST_PAUSE;
+ TST_EXP_POSITIVE(pathconf(path, tc->value),
+ "pathconf(%s, %s)", path, tc->name);
}
-/***************************************************************
- * cleanup() - performs all ONE TIME cleanup for this test at
- * completion or premature exit.
- ***************************************************************/
void cleanup(void)
{
- if (!lflag) {
- tst_rmdir();
- free(path);
- }
+ free(path);
}
-/***************************************************************
- * help
- ***************************************************************/
-void help(void)
-{
- printf(" -l path a path to test with pathconf(2) (def: /tmp)\n");
-}
+static struct tst_test test = {
+ .needs_tmpdir = 1,
+ .test = verify_pathconf,
+ .tcnt = ARRAY_SIZE(tcases),
+ .cleanup = cleanup,
+};
--
2.39.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 10+ messages in thread* [LTP] [PATCH 2/2] Add error tests for pathconf() system call
2023-11-02 8:05 [LTP] [PATCH 1/2] pathconf01: Convert to new API Yang Xu
@ 2023-11-02 8:05 ` Yang Xu
2023-11-28 6:03 ` Xiao Yang
2023-11-28 13:49 ` Petr Vorel
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
1 sibling, 2 replies; 10+ messages in thread
From: Yang Xu @ 2023-11-02 8:05 UTC (permalink / raw)
To: ltp
A series of tests were added to test the negative results of pathconf()
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/pathconf/.gitignore | 1 +
.../kernel/syscalls/pathconf/pathconf02.c | 97 +++++++++++++++++++
3 files changed, 99 insertions(+)
create mode 100644 testcases/kernel/syscalls/pathconf/pathconf02.c
diff --git a/runtest/syscalls b/runtest/syscalls
index 1851752cf..e20f0c49e 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -971,6 +971,7 @@ madvise11 madvise11
newuname01 newuname01
pathconf01 pathconf01
+pathconf02 pathconf02
pause01 pause01
pause02 pause02
diff --git a/testcases/kernel/syscalls/pathconf/.gitignore b/testcases/kernel/syscalls/pathconf/.gitignore
index 31abe8a28..82e38b253 100644
--- a/testcases/kernel/syscalls/pathconf/.gitignore
+++ b/testcases/kernel/syscalls/pathconf/.gitignore
@@ -1 +1,2 @@
/pathconf01
+/pathconf02
diff --git a/testcases/kernel/syscalls/pathconf/pathconf02.c b/testcases/kernel/syscalls/pathconf/pathconf02.c
new file mode 100644
index 000000000..8d7996190
--- /dev/null
+++ b/testcases/kernel/syscalls/pathconf/pathconf02.c
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2023 FUJITSU LIMITED. All rights reserved.
+ * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that,
+ *
+ * - pathconf() fails with ENOTDIR if A component used as a directory
+ * in path is not in fact a directory.
+ * - pathconf() fails with ENOENT if path is an empty string.
+ * - pathconf() fails with ENAMETOOLONG if path is too long.
+ * - pathconf() fails with EINVA if name is invalid.
+ * - pathconf() fails with EACCES if search permission is denied for
+ * one of the directories in the path prefix of path.
+ * - pathconf() fails with ELOOP if too many symbolic links were
+ * encountered while resolving path.
+ */
+
+#define FILEPATH "testfile/testfile_1"
+#define TESTELOOP "test_eloop1"
+
+#include <stdlib.h>
+#include <pwd.h>
+#include "tst_test.h"
+
+static char *fpath;
+static char *emptypath;
+static char path[PATH_MAX + 2];
+static char *long_path = path;
+static char *abs_path;
+static char *testeloop;
+static struct passwd *user;
+
+static struct tcase {
+ char **path;
+ int name;
+ int exp_errno;
+ char *desc;
+} tcases[] = {
+ {&fpath, 0, ENOTDIR, "path prefix is not a directory"},
+ {&emptypath, 0, ENOENT, "path is an empty string"},
+ {&long_path, 0, ENAMETOOLONG, "path is too long"},
+ {&abs_path, -1, EINVAL, "name is invalid"},
+ {&abs_path, 0, EACCES, "without full permissions of the path prefix"},
+ {&testeloop, 0, ELOOP, "too many symbolic links"},
+};
+
+static void verify_fpathconf(unsigned int i)
+{
+ struct tcase *tc = &tcases[i];
+
+ if (tc->exp_errno == EACCES)
+ SAFE_SETEUID(user->pw_uid);
+
+ TST_EXP_FAIL(pathconf(*tc->path, tc->name), tc->exp_errno,
+ "pathconf() fail with %s", tc->desc);
+
+ if (tc->exp_errno == EACCES)
+ SAFE_SETEUID(0);
+}
+
+static void setup(void)
+{
+ user = SAFE_GETPWNAM("nobody");
+
+ SAFE_TOUCH("testfile", 0777, NULL);
+
+ char *tmpdir = tst_get_tmpdir();
+
+ abs_path = tst_aprintf("%s/%s", tmpdir, FILEPATH);
+
+ SAFE_CHMOD(tmpdir, 0);
+ free(tmpdir);
+
+ memset(path, 'a', PATH_MAX + 2);
+
+ SAFE_SYMLINK("test_eloop1", "test_eloop2");
+ SAFE_SYMLINK("test_eloop2", "test_eloop1");
+}
+
+static struct tst_test test = {
+ .tcnt = ARRAY_SIZE(tcases),
+ .test = verify_fpathconf,
+ .setup = setup,
+ .needs_tmpdir = 1,
+ .bufs = (struct tst_buffers []) {
+ {&fpath, .str = FILEPATH},
+ {&emptypath, .str = ""},
+ {&testeloop, .str = TESTELOOP},
+ {},
+ },
+ .needs_root = 1,
+};
--
2.39.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [LTP] [PATCH 2/2] Add error tests for pathconf() system call
2023-11-02 8:05 ` [LTP] [PATCH 2/2] Add error tests for pathconf() system call Yang Xu
@ 2023-11-28 6:03 ` Xiao Yang
2023-11-28 13:49 ` Petr Vorel
1 sibling, 0 replies; 10+ messages in thread
From: Xiao Yang @ 2023-11-28 6:03 UTC (permalink / raw)
To: Yang Xu, ltp
Hi Yang
It looks good to me.
Reviewed-by: Xiao Yang <yangx.jy@fujitsu.com>
Best Regards,
Xiao Yang
On 2023/11/2 16:05, Yang Xu wrote:
> A series of tests were added to test the negative results of pathconf()
>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> runtest/syscalls | 1 +
> testcases/kernel/syscalls/pathconf/.gitignore | 1 +
> .../kernel/syscalls/pathconf/pathconf02.c | 97 +++++++++++++++++++
> 3 files changed, 99 insertions(+)
> create mode 100644 testcases/kernel/syscalls/pathconf/pathconf02.c
>
> diff --git a/runtest/syscalls b/runtest/syscalls
> index 1851752cf..e20f0c49e 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -971,6 +971,7 @@ madvise11 madvise11
> newuname01 newuname01
>
> pathconf01 pathconf01
> +pathconf02 pathconf02
>
> pause01 pause01
> pause02 pause02
> diff --git a/testcases/kernel/syscalls/pathconf/.gitignore b/testcases/kernel/syscalls/pathconf/.gitignore
> index 31abe8a28..82e38b253 100644
> --- a/testcases/kernel/syscalls/pathconf/.gitignore
> +++ b/testcases/kernel/syscalls/pathconf/.gitignore
> @@ -1 +1,2 @@
> /pathconf01
> +/pathconf02
> diff --git a/testcases/kernel/syscalls/pathconf/pathconf02.c b/testcases/kernel/syscalls/pathconf/pathconf02.c
> new file mode 100644
> index 000000000..8d7996190
> --- /dev/null
> +++ b/testcases/kernel/syscalls/pathconf/pathconf02.c
> @@ -0,0 +1,97 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2023 FUJITSU LIMITED. All rights reserved.
> + * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Verify that,
> + *
> + * - pathconf() fails with ENOTDIR if A component used as a directory
> + * in path is not in fact a directory.
> + * - pathconf() fails with ENOENT if path is an empty string.
> + * - pathconf() fails with ENAMETOOLONG if path is too long.
> + * - pathconf() fails with EINVA if name is invalid.
> + * - pathconf() fails with EACCES if search permission is denied for
> + * one of the directories in the path prefix of path.
> + * - pathconf() fails with ELOOP if too many symbolic links were
> + * encountered while resolving path.
> + */
> +
> +#define FILEPATH "testfile/testfile_1"
> +#define TESTELOOP "test_eloop1"
> +
> +#include <stdlib.h>
> +#include <pwd.h>
> +#include "tst_test.h"
> +
> +static char *fpath;
> +static char *emptypath;
> +static char path[PATH_MAX + 2];
> +static char *long_path = path;
> +static char *abs_path;
> +static char *testeloop;
> +static struct passwd *user;
> +
> +static struct tcase {
> + char **path;
> + int name;
> + int exp_errno;
> + char *desc;
> +} tcases[] = {
> + {&fpath, 0, ENOTDIR, "path prefix is not a directory"},
> + {&emptypath, 0, ENOENT, "path is an empty string"},
> + {&long_path, 0, ENAMETOOLONG, "path is too long"},
> + {&abs_path, -1, EINVAL, "name is invalid"},
> + {&abs_path, 0, EACCES, "without full permissions of the path prefix"},
> + {&testeloop, 0, ELOOP, "too many symbolic links"},
> +};
> +
> +static void verify_fpathconf(unsigned int i)
> +{
> + struct tcase *tc = &tcases[i];
> +
> + if (tc->exp_errno == EACCES)
> + SAFE_SETEUID(user->pw_uid);
> +
> + TST_EXP_FAIL(pathconf(*tc->path, tc->name), tc->exp_errno,
> + "pathconf() fail with %s", tc->desc);
> +
> + if (tc->exp_errno == EACCES)
> + SAFE_SETEUID(0);
> +}
> +
> +static void setup(void)
> +{
> + user = SAFE_GETPWNAM("nobody");
> +
> + SAFE_TOUCH("testfile", 0777, NULL);
> +
> + char *tmpdir = tst_get_tmpdir();
> +
> + abs_path = tst_aprintf("%s/%s", tmpdir, FILEPATH);
> +
> + SAFE_CHMOD(tmpdir, 0);
> + free(tmpdir);
> +
> + memset(path, 'a', PATH_MAX + 2);
> +
> + SAFE_SYMLINK("test_eloop1", "test_eloop2");
> + SAFE_SYMLINK("test_eloop2", "test_eloop1");
> +}
> +
> +static struct tst_test test = {
> + .tcnt = ARRAY_SIZE(tcases),
> + .test = verify_fpathconf,
> + .setup = setup,
> + .needs_tmpdir = 1,
> + .bufs = (struct tst_buffers []) {
> + {&fpath, .str = FILEPATH},
> + {&emptypath, .str = ""},
> + {&testeloop, .str = TESTELOOP},
> + {},
> + },
> + .needs_root = 1,
> +};
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [LTP] [PATCH 2/2] Add error tests for pathconf() system call
2023-11-02 8:05 ` [LTP] [PATCH 2/2] Add error tests for pathconf() system call Yang Xu
2023-11-28 6:03 ` Xiao Yang
@ 2023-11-28 13:49 ` Petr Vorel
1 sibling, 0 replies; 10+ messages in thread
From: Petr Vorel @ 2023-11-28 13:49 UTC (permalink / raw)
To: Yang Xu; +Cc: ltp
Hi Xu,
> +/*\
> + * [Description]
> + *
> + * Verify that,
> + *
> + * - pathconf() fails with ENOTDIR if A component used as a directory
nit: s/if A/if a/
> + * in path is not in fact a directory.
> + * - pathconf() fails with ENOENT if path is an empty string.
> + * - pathconf() fails with ENAMETOOLONG if path is too long.
> + * - pathconf() fails with EINVA if name is invalid.
> + * - pathconf() fails with EACCES if search permission is denied for
> + * one of the directories in the path prefix of path.
> + * - pathconf() fails with ELOOP if too many symbolic links were
> + * encountered while resolving path.
> + */
> +
> +#define FILEPATH "testfile/testfile_1"
> +#define TESTELOOP "test_eloop1"
> +
> +#include <stdlib.h>
> +#include <pwd.h>
> +#include "tst_test.h"
> +
> +static char *fpath;
> +static char *emptypath;
> +static char path[PATH_MAX + 2];
Maybe define some constant and use it also on other place?
e.g.:
#define PATH_LEN (PATH_MAX + 2)
> +static char *long_path = path;
> +static char *abs_path;
> +static char *testeloop;
> +static struct passwd *user;
> +
> +static struct tcase {
> + char **path;
> + int name;
> + int exp_errno;
> + char *desc;
> +} tcases[] = {
> + {&fpath, 0, ENOTDIR, "path prefix is not a directory"},
> + {&emptypath, 0, ENOENT, "path is an empty string"},
> + {&long_path, 0, ENAMETOOLONG, "path is too long"},
> + {&abs_path, -1, EINVAL, "name is invalid"},
> + {&abs_path, 0, EACCES, "without full permissions of the path prefix"},
> + {&testeloop, 0, ELOOP, "too many symbolic links"},
> +};
> +
> +static void verify_fpathconf(unsigned int i)
> +{
> + struct tcase *tc = &tcases[i];
> +
> + if (tc->exp_errno == EACCES)
> + SAFE_SETEUID(user->pw_uid);
> +
> + TST_EXP_FAIL(pathconf(*tc->path, tc->name), tc->exp_errno,
> + "pathconf() fail with %s", tc->desc);
> +
> + if (tc->exp_errno == EACCES)
> + SAFE_SETEUID(0);
> +}
> +
> +static void setup(void)
> +{
> + user = SAFE_GETPWNAM("nobody");
> +
> + SAFE_TOUCH("testfile", 0777, NULL);
> +
> + char *tmpdir = tst_get_tmpdir();
> +
> + abs_path = tst_aprintf("%s/%s", tmpdir, FILEPATH);
> +
> + SAFE_CHMOD(tmpdir, 0);
> + free(tmpdir);
> +
> + memset(path, 'a', PATH_MAX + 2);
> +
> + SAFE_SYMLINK("test_eloop1", "test_eloop2");
> + SAFE_SYMLINK("test_eloop2", "test_eloop1");
> +}
> +
> +static struct tst_test test = {
> + .tcnt = ARRAY_SIZE(tcases),
> + .test = verify_fpathconf,
> + .setup = setup,
> + .needs_tmpdir = 1,
> + .bufs = (struct tst_buffers []) {
> + {&fpath, .str = FILEPATH},
> + {&emptypath, .str = ""},
> + {&testeloop, .str = TESTELOOP},
> + {},
> + },
> + .needs_root = 1,
> +};
The rest LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-02 8:05 [LTP] [PATCH 1/2] pathconf01: Convert to new API Yang Xu
2023-11-02 8:05 ` [LTP] [PATCH 2/2] Add error tests for pathconf() system call Yang Xu
@ 2023-11-28 5:21 ` Xiao Yang
2023-11-28 6:32 ` Xiao Yang
` (2 more replies)
1 sibling, 3 replies; 10+ messages in thread
From: Xiao Yang @ 2023-11-28 5:21 UTC (permalink / raw)
To: Yang Xu, ltp
On 2023/11/2 16:05, Yang Xu wrote:
> * Simplify code and description
> * Use TST_macros
>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> .../kernel/syscalls/pathconf/pathconf01.c | 251 +++---------------
> 1 file changed, 33 insertions(+), 218 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/pathconf/pathconf01.c b/testcases/kernel/syscalls/pathconf/pathconf01.c
> index 362bae94f..9b8b99d48 100644
> --- a/testcases/kernel/syscalls/pathconf/pathconf01.c
> +++ b/testcases/kernel/syscalls/pathconf/pathconf01.c
> @@ -1,237 +1,52 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> /*
> * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
> - *
> - * This program is free software; you can redistribute it and/or modify it
> - * under the terms of version 2 of the GNU General Public License as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it would be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> - *
> - * Further, this software is distributed without any warranty that it is
> - * free of the rightful claim of any third person regarding infringement
> - * or the like. Any license provided herein, whether implied or
> - * otherwise, applies only to this software file. Patent licenses, if
> - * any, provided herein do not apply to combinations of this program with
> - * other software, or any other product whatsoever.
> - *
> - * You should have received a copy of the GNU General Public License along
> - * with this program; if not, write the Free Software Foundation, Inc.,
> - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> - *
> - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
> - * Mountain View, CA 94043, or:
> - *
> - * http://www.sgi.com
> - *
> - * For further information regarding this notice, see:
> - *
> - * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
> - *
> + * Copyright (c) Linux Test Project, 2000-2023
> + * Authors: William Roske, Dave Fenner
> */
> -/* $Id: pathconf01.c,v 1.5 2009/11/02 13:57:17 subrata_modak Exp $ */
> -/**********************************************************
> - *
> - * OS Test - Silicon Graphics, Inc.
> - *
> - * TEST IDENTIFIER : pathconf01
> - *
> - * EXECUTED BY : anyone
> - *
> - * TEST TITLE : Basic test for pathconf(2)
> - *
> - * PARENT DOCUMENT : usctpl01
> - *
> - * TEST CASE TOTAL : 6
> - *
> - * WALL CLOCK TIME : 1
> - *
> - * CPU TYPES : ALL
> - *
> - * AUTHOR : William Roske
> - *
> - * CO-PILOT : Dave Fenner
> - *
> - * DATE STARTED : 03/30/92
> - *
> - * INITIAL RELEASE : UNICOS 7.0
> - *
> - * TEST CASES
> - *
> - * 1.) pathconf(2) returns...(See Description)
> - *
> - * INPUT SPECIFICATIONS
> - * The standard options for system call tests are accepted.
> - * (See the parse_opts(3) man page).
> - *
> - * OUTPUT SPECIFICATIONS
> - *
> - * DURATION
> - * Terminates - with frequency and infinite modes.
> - *
> - * SIGNALS
> - * Uses SIGUSR1 to pause before test if option set.
> - * (See the parse_opts(3) man page).
> - *
> - * RESOURCES
> - * None
> - *
> - * ENVIRONMENTAL NEEDS
> - * No run-time environmental needs.
> - *
> - * SPECIAL PROCEDURAL REQUIREMENTS
> - * None
> - *
> - * INTERCASE DEPENDENCIES
> - * None
> - *
> - * DETAILED DESCRIPTION
> - * This is a Phase I test for the pathconf(2) system call. It is intended
> - * to provide a limited exposure of the system call, for now. It
> - * should/will be extended when full functional tests are written for
> - * pathconf(2).
> - *
> - * Setup:
> - * Setup signal handling.
> - * Pause for SIGUSR1 if option specified.
> - *
> - * Test:
> - * Loop if the proper options are given.
> - * Execute system call
> - * Check return code, if system call failed (return=-1)
> - * Log the errno and Issue a FAIL message.
> - * Otherwise, Issue a PASS message.
> - *
> - * Cleanup:
> - * Print errno log and/or timing stats if options given
> - *
> +
> +/*\
> + * [Description]
> *
> - *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/
> + * Check the basic functionality of the pathconf() system call.
> + */
>
> -#include <unistd.h>
> -#include <errno.h>
> -#include <string.h>
> -#include <signal.h>
> -#include "test.h"
> +#include <stdlib.h>
> +#include "tst_test.h"
>
> -void setup();
> -void cleanup();
> -void help();
> +static char *path;
>
> -struct pathconf_args {
> - char *define_tag;
> +static struct tcase {
> + char *name;
> int value;
> -} args[] = {
> - {
> - "_PC_LINK_MAX", _PC_LINK_MAX}, {
> - "_PC_NAME_MAX", _PC_NAME_MAX}, {
> - "_PC_PATH_MAX", _PC_PATH_MAX}, {
> - "_PC_PIPE_BUF", _PC_PIPE_BUF}, {
> - "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED}, {
> - "_PC_NO_TRUNC", _PC_NO_TRUNC}, {
> - NULL, 0}
> +} tcases[] = {
> + {"_PC_LINK_MAX", _PC_LINK_MAX},
> + {"_PC_NAME_MAX", _PC_NAME_MAX},
> + {"_PC_PATH_MAX", _PC_PATH_MAX},
> + {"_PC_PIPE_BUF", _PC_PIPE_BUF},
> + {"_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
> + {"_PC_NO_TRUNC", _PC_NO_TRUNC},
> + {NULL, 0},
Hi Yang,
What is the purpose of the last entry? IMO, it is equal to the first
entry. Other than that, it looks good to me.
Reviewed-by: Xiao Yang <yangx.jy@fujitsu.com>
Best Regards,
Xiao Yang
> };
>
> -char *TCID = "pathconf01";
> -int TST_TOTAL = ARRAY_SIZE(args);
> -
> -int i;
> -
> -
> -int lflag;
> -char *path;
> -
> -option_t options[] = {
> - {"l:", &lflag, &path}, /* -l <path to test> */
> - {NULL, NULL, NULL}
> -};
> -
> -int main(int ac, char **av)
> -{
> - int lc;
> -
> - tst_parse_opts(ac, av, options, &help);
> -
> - if (!lflag) {
> - tst_tmpdir();
> - path = tst_get_tmpdir();
> - }
> - /***************************************************************
> - * perform global setup for test
> - ***************************************************************/
> - setup();
> -
> - /***************************************************************
> - * check looping state if -c option given
> - ***************************************************************/
> - for (lc = 0; TEST_LOOPING(lc); lc++) {
> -
> - tst_count = 0;
> -
> - for (i = 0; i < TST_TOTAL; i++) {
> -
> - errno = -4;
> -
> - /*
> - * Call pathconf(2)
> - */
> - TEST(pathconf(path, args[i].value));
> -
> - /*
> - * A test case can only fail if -1 is returned and the errno
> - * was set. If the errno remains unchanged, the
> - * system call did not fail.
> - */
> - if (TEST_RETURN == -1 && errno != -4) {
> - tst_resm(TFAIL,
> - "pathconf(%s, %s) Failed, errno=%d : %s",
> - path, args[i].define_tag, TEST_ERRNO,
> - strerror(TEST_ERRNO));
> - } else {
> - tst_resm(TPASS,
> - "pathconf(%s, %s) returned %ld",
> - path, args[i].define_tag,
> - TEST_RETURN);
> - }
> - }
> - }
> -
> - /***************************************************************
> - * cleanup and exit
> - ***************************************************************/
> - cleanup();
> -
> - tst_exit();
> -}
> -
> -/***************************************************************
> - * setup() - performs all ONE TIME setup for this test.
> - ***************************************************************/
> -void setup(void)
> +static void verify_pathconf(unsigned int i)
> {
> + struct tcase *tc = &tcases[i];
>
> - tst_sig(NOFORK, DEF_HANDLER, cleanup);
> + path = tst_get_tmpdir();
>
> - TEST_PAUSE;
> + TST_EXP_POSITIVE(pathconf(path, tc->value),
> + "pathconf(%s, %s)", path, tc->name);
> }
>
> -/***************************************************************
> - * cleanup() - performs all ONE TIME cleanup for this test at
> - * completion or premature exit.
> - ***************************************************************/
> void cleanup(void)
> {
> - if (!lflag) {
> - tst_rmdir();
> - free(path);
> - }
> + free(path);
> }
>
> -/***************************************************************
> - * help
> - ***************************************************************/
> -void help(void)
> -{
> - printf(" -l path a path to test with pathconf(2) (def: /tmp)\n");
> -}
> +static struct tst_test test = {
> + .needs_tmpdir = 1,
> + .test = verify_pathconf,
> + .tcnt = ARRAY_SIZE(tcases),
> + .cleanup = cleanup,
> +};
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
@ 2023-11-28 6:32 ` Xiao Yang
2023-11-29 5:42 ` Yang Xu (Fujitsu)
2023-11-28 13:43 ` Petr Vorel
2023-11-29 5:36 ` Yang Xu (Fujitsu)
2 siblings, 1 reply; 10+ messages in thread
From: Xiao Yang @ 2023-11-28 6:32 UTC (permalink / raw)
To: Yang Xu, ltp
On 2023/11/28 13:21, Xiao Yang wrote:
> -/***************************************************************
> - * cleanup() - performs all ONE TIME cleanup for this test at
> - * completion or premature exit.
> - ***************************************************************/
> void cleanup(void)
Hi Yang
One more hint:
static void cleanup(void) is better here.
Best Regards,
Xiao Yang
> {
> - if (!lflag) {
> - tst_rmdir();
> - free(path);
> - }
> + free(path);
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-28 6:32 ` Xiao Yang
@ 2023-11-29 5:42 ` Yang Xu (Fujitsu)
0 siblings, 0 replies; 10+ messages in thread
From: Yang Xu (Fujitsu) @ 2023-11-29 5:42 UTC (permalink / raw)
To: Xiao Yang (Fujitsu), ltp@lists.linux.it
Hi,Xiao Yang
>On 2023/11/28 13:21, Xiao Yang wrote:
>> -/***************************************************************
>> - * cleanup() - performs all ONE TIME cleanup for this test at
>> - * completion or premature exit.
>> - ***************************************************************/
>> void cleanup(void)
>Hi Yang
>One more hint:
>static void cleanup(void) is better here.
>Best Regards,
>Xiao Yang
OK. I'll update it.
Best Regards,
Xiao Yang
>> {
>> - if (!lflag) {
>> - tst_rmdir();
>> - free(path);
>> - }
>> + free(path);
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
2023-11-28 6:32 ` Xiao Yang
@ 2023-11-28 13:43 ` Petr Vorel
2023-11-29 5:57 ` Yang Xu (Fujitsu)
2023-11-29 5:36 ` Yang Xu (Fujitsu)
2 siblings, 1 reply; 10+ messages in thread
From: Petr Vorel @ 2023-11-28 13:43 UTC (permalink / raw)
To: Xiao Yang; +Cc: ltp
Hi,
> On 2023/11/2 16:05, Yang Xu wrote:
> > * Simplify code and description
> > * Use TST_macros
> > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> > ---
> > .../kernel/syscalls/pathconf/pathconf01.c | 251 +++---------------
> > 1 file changed, 33 insertions(+), 218 deletions(-)
> > diff --git a/testcases/kernel/syscalls/pathconf/pathconf01.c b/testcases/kernel/syscalls/pathconf/pathconf01.c
> > index 362bae94f..9b8b99d48 100644
> > --- a/testcases/kernel/syscalls/pathconf/pathconf01.c
> > +++ b/testcases/kernel/syscalls/pathconf/pathconf01.c
> > @@ -1,237 +1,52 @@
> > +// SPDX-License-Identifier: GPL-2.0-or-later
Unfortunately GPL-2.0-only
> > /*
> > * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
> > - *
> > - * This program is free software; you can redistribute it and/or modify it
> > - * under the terms of version 2 of the GNU General Public License as
> > - * published by the Free Software Foundation.
Because there is no "at any later version".
> > - *
> > - * This program is distributed in the hope that it would be useful, but
> > - * WITHOUT ANY WARRANTY; without even the implied warranty of
> > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> > - *
> > - * Further, this software is distributed without any warranty that it is
> > - * free of the rightful claim of any third person regarding infringement
> > - * or the like. Any license provided herein, whether implied or
> > - * otherwise, applies only to this software file. Patent licenses, if
> > - * any, provided herein do not apply to combinations of this program with
> > - * other software, or any other product whatsoever.
> > - *
> > - * You should have received a copy of the GNU General Public License along
> > - * with this program; if not, write the Free Software Foundation, Inc.,
> > - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> > - *
> > - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
> > - * Mountain View, CA 94043, or:
> > - *
> > - * http://www.sgi.com
> > - *
> > - * For further information regarding this notice, see:
> > - *
> > - * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
> > - *
> > + * Copyright (c) Linux Test Project, 2000-2023
> > + * Authors: William Roske, Dave Fenner
> > */
> > -/* $Id: pathconf01.c,v 1.5 2009/11/02 13:57:17 subrata_modak Exp $ */
> > -/**********************************************************
> > - *
> > - * OS Test - Silicon Graphics, Inc.
> > - *
> > - * TEST IDENTIFIER : pathconf01
> > - *
> > - * EXECUTED BY : anyone
> > - *
> > - * TEST TITLE : Basic test for pathconf(2)
> > - *
> > - * PARENT DOCUMENT : usctpl01
> > - *
> > - * TEST CASE TOTAL : 6
> > - *
> > - * WALL CLOCK TIME : 1
> > - *
> > - * CPU TYPES : ALL
> > - *
> > - * AUTHOR : William Roske
> > - *
> > - * CO-PILOT : Dave Fenner
> > - *
> > - * DATE STARTED : 03/30/92
> > - *
> > - * INITIAL RELEASE : UNICOS 7.0
> > - *
> > - * TEST CASES
> > - *
> > - * 1.) pathconf(2) returns...(See Description)
> > - *
> > - * INPUT SPECIFICATIONS
> > - * The standard options for system call tests are accepted.
> > - * (See the parse_opts(3) man page).
> > - *
> > - * OUTPUT SPECIFICATIONS
> > - *
> > - * DURATION
> > - * Terminates - with frequency and infinite modes.
> > - *
> > - * SIGNALS
> > - * Uses SIGUSR1 to pause before test if option set.
> > - * (See the parse_opts(3) man page).
> > - *
> > - * RESOURCES
> > - * None
> > - *
> > - * ENVIRONMENTAL NEEDS
> > - * No run-time environmental needs.
> > - *
> > - * SPECIAL PROCEDURAL REQUIREMENTS
> > - * None
> > - *
> > - * INTERCASE DEPENDENCIES
> > - * None
> > - *
> > - * DETAILED DESCRIPTION
> > - * This is a Phase I test for the pathconf(2) system call. It is intended
> > - * to provide a limited exposure of the system call, for now. It
> > - * should/will be extended when full functional tests are written for
> > - * pathconf(2).
> > - *
> > - * Setup:
> > - * Setup signal handling.
> > - * Pause for SIGUSR1 if option specified.
> > - *
> > - * Test:
> > - * Loop if the proper options are given.
> > - * Execute system call
> > - * Check return code, if system call failed (return=-1)
> > - * Log the errno and Issue a FAIL message.
> > - * Otherwise, Issue a PASS message.
> > - *
> > - * Cleanup:
> > - * Print errno log and/or timing stats if options given
> > - *
> > +
> > +/*\
> > + * [Description]
> > *
> > - *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/
> > + * Check the basic functionality of the pathconf() system call.
> > + */
> > -#include <unistd.h>
> > -#include <errno.h>
> > -#include <string.h>
> > -#include <signal.h>
> > -#include "test.h"
> > +#include <stdlib.h>
> > +#include "tst_test.h"
> > -void setup();
> > -void cleanup();
> > -void help();
> > +static char *path;
> > -struct pathconf_args {
> > - char *define_tag;
> > +static struct tcase {
> > + char *name;
> > int value;
> > -} args[] = {
> > - {
> > - "_PC_LINK_MAX", _PC_LINK_MAX}, {
> > - "_PC_NAME_MAX", _PC_NAME_MAX}, {
> > - "_PC_PATH_MAX", _PC_PATH_MAX}, {
> > - "_PC_PIPE_BUF", _PC_PIPE_BUF}, {
> > - "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED}, {
> > - "_PC_NO_TRUNC", _PC_NO_TRUNC}, {
> > - NULL, 0}
> > +} tcases[] = {
> > + {"_PC_LINK_MAX", _PC_LINK_MAX},
Please use this:
#define NAME_DESC(x) x, #x
} tcases[] = {
{ NAME_DESC(_PC_NAME_MAX) },
{ NAME_DESC(_PC_PATH_MAX) },
...
> > + {"_PC_NAME_MAX", _PC_NAME_MAX},
> > + {"_PC_PATH_MAX", _PC_PATH_MAX},
> > + {"_PC_PIPE_BUF", _PC_PIPE_BUF},
> > + {"_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
> > + {"_PC_NO_TRUNC", _PC_NO_TRUNC},
> > + {NULL, 0},
> Hi Yang,
> What is the purpose of the last entry? IMO, it is equal to the first entry.
> Other than that, it looks good to me.
Very good question, I wonder as well.
BTW there are many of others:
https://www.gnu.org/software/libc/manual/html_node/Pathconf.html
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-28 13:43 ` Petr Vorel
@ 2023-11-29 5:57 ` Yang Xu (Fujitsu)
0 siblings, 0 replies; 10+ messages in thread
From: Yang Xu (Fujitsu) @ 2023-11-29 5:57 UTC (permalink / raw)
To: Xiao Yang (Fujitsu), Petr Vorel; +Cc: ltp@lists.linux.it
Hi
>Hi,
>> On 2023/11/2 16:05, Yang Xu wrote:
>> > * Simplify code and description
>> > * Use TST_macros
>> > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>> > ---
>> > .../kernel/syscalls/pathconf/pathconf01.c | 251 +++---------------
>> > 1 file changed, 33 insertions(+), 218 deletions(-)
>> > diff --git a/testcases/kernel/syscalls/pathconf/pathconf01.c b/testcases/kernel/syscalls/pathconf/pathconf01.c
>> > index 362bae94f..9b8b99d48 100644
>> > --- a/testcases/kernel/syscalls/pathconf/pathconf01.c
>> > +++ b/testcases/kernel/syscalls/pathconf/pathconf01.c
>> > @@ -1,237 +1,52 @@
>> > +// SPDX-License-Identifier: GPL-2.0-or-later
>Unfortunately GPL-2.0-only
>> > /*
>> > * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
>> > - *
>> > - * This program is free software; you can redistribute it and/or modify it
>> > - * under the terms of version 2 of the GNU General Public License as
>> > - * published by the Free Software Foundation.
>Because there is no "at any later version".
Yes,you are right.
...
>> > - {
>> > - "_PC_LINK_MAX", _PC_LINK_MAX}, {
>> > - "_PC_NAME_MAX", _PC_NAME_MAX}, {
>> > - "_PC_PATH_MAX", _PC_PATH_MAX}, {
>> > - "_PC_PIPE_BUF", _PC_PIPE_BUF}, {
>> > - "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED}, {
>> > - "_PC_NO_TRUNC", _PC_NO_TRUNC}, {
>> > - NULL, 0}
>> > +} tcases[] = {
>> > + {"_PC_LINK_MAX", _PC_LINK_MAX},
>Please use this:
>#define NAME_DESC(x) x, #x
>} tcases[] = {
> { NAME_DESC(_PC_NAME_MAX) },
> { NAME_DESC(_PC_PATH_MAX) },
> ...
OK. I'll modify it.
>> > + {"_PC_NAME_MAX", _PC_NAME_MAX},
>> > + {"_PC_PATH_MAX", _PC_PATH_MAX},
>> > + {"_PC_PIPE_BUF", _PC_PIPE_BUF},
>> > + {"_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
>> > + {"_PC_NO_TRUNC", _PC_NO_TRUNC},
>> > + {NULL, 0},
>> Hi Yang,
>> What is the purpose of the last entry? IMO, it is equal to the first entry.
>> Other than that, it looks good to me.
>Very good question, I wonder as well.
The last entry really doesn't make any sense, I'll remove it.
>BTW there are many of others:
>https://www.gnu.org/software/libc/manual/html_node/Pathconf.html
I tried to add some macros and found that I had overlooked a judgment condition:
"If name corresponds to a maximum or minimum limit, and that
limit is indeterminate, -1 is returned and errno is not
changed. (To distinguish an indeterminate limit from an
error, set errno to zero before the call, and then check
whether errno is nonzero when -1 is returned.)"
That seems to be very important in this case.
Best Regards,
Yang Xu
>Kind regards,
>Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [LTP] [PATCH 1/2] pathconf01: Convert to new API
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
2023-11-28 6:32 ` Xiao Yang
2023-11-28 13:43 ` Petr Vorel
@ 2023-11-29 5:36 ` Yang Xu (Fujitsu)
2 siblings, 0 replies; 10+ messages in thread
From: Yang Xu (Fujitsu) @ 2023-11-29 5:36 UTC (permalink / raw)
To: Xiao Yang (Fujitsu), ltp@lists.linux.it
Hi,Xiao Yang
>On 2023/11/2 16:05, Yang Xu wrote:
...
>> -struct pathconf_args {
>> - char *define_tag;
>> +static struct tcase {
>> + char *name;
>> int value;
>> -} args[] = {
>> - {
>> - "_PC_LINK_MAX", _PC_LINK_MAX}, {
>> - "_PC_NAME_MAX", _PC_NAME_MAX}, {
>> - "_PC_PATH_MAX", _PC_PATH_MAX}, {
>> - "_PC_PIPE_BUF", _PC_PIPE_BUF}, {
>> - "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED}, {
>> - "_PC_NO_TRUNC", _PC_NO_TRUNC}, {
>> - NULL, 0}
>> +} tcases[] = {
>> + {"_PC_LINK_MAX", _PC_LINK_MAX},
>> + {"_PC_NAME_MAX", _PC_NAME_MAX},
>> + {"_PC_PATH_MAX", _PC_PATH_MAX},
>> + {"_PC_PIPE_BUF", _PC_PIPE_BUF},
>> + {"_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
>> + {"_PC_NO_TRUNC", _PC_NO_TRUNC},
>> + {NULL, 0},
>Hi Yang,
>What is the purpose of the last entry? IMO, it is equal to the first
>entry. Other than that, it looks good to me.
>Reviewed-by: Xiao Yang <yangx.jy@fujitsu.com>
>Best Regards,
>Xiao Yang
...
The last entry doesn't make any sense, I'll remove it in v2 patch.
Best Regards,
Yang Xu
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-11-29 5:57 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-02 8:05 [LTP] [PATCH 1/2] pathconf01: Convert to new API Yang Xu
2023-11-02 8:05 ` [LTP] [PATCH 2/2] Add error tests for pathconf() system call Yang Xu
2023-11-28 6:03 ` Xiao Yang
2023-11-28 13:49 ` Petr Vorel
2023-11-28 5:21 ` [LTP] [PATCH 1/2] pathconf01: Convert to new API Xiao Yang
2023-11-28 6:32 ` Xiao Yang
2023-11-29 5:42 ` Yang Xu (Fujitsu)
2023-11-28 13:43 ` Petr Vorel
2023-11-29 5:57 ` Yang Xu (Fujitsu)
2023-11-29 5:36 ` Yang Xu (Fujitsu)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox