// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. * Copyright (c) Linux Test Project, 2000-2023 * Authors: William Roske, Dave Fenner */ /*\ * [Description] * * Check the basic functionality of the pathconf(2) system call. */ #include #include "tst_test.h" #define NAME_DESC(x) .value = x, .name = #x static char *path; static struct tcase { int value; char *name; } tcases[] = { {NAME_DESC(_PC_LINK_MAX)}, {NAME_DESC(_PC_MAX_CANON)}, {NAME_DESC(_PC_MAX_INPUT)}, {NAME_DESC(_PC_NAME_MAX)}, {NAME_DESC(_PC_PATH_MAX)}, {NAME_DESC(_PC_PIPE_BUF)}, {NAME_DESC(_PC_CHOWN_RESTRICTED)}, {NAME_DESC(_PC_NO_TRUNC)}, {NAME_DESC(_PC_VDISABLE)}, {NAME_DESC(_PC_SYNC_IO)}, {NAME_DESC(_PC_ASYNC_IO)}, {NAME_DESC(_PC_PRIO_IO)}, {NAME_DESC(_PC_FILESIZEBITS)}, {NAME_DESC(_PC_REC_INCR_XFER_SIZE)}, {NAME_DESC(_PC_REC_MAX_XFER_SIZE)}, {NAME_DESC(_PC_REC_MIN_XFER_SIZE)}, {NAME_DESC(_PC_REC_XFER_ALIGN)}, }; static void verify_pathconf(unsigned int i) { struct tcase *tc = &tcases[i]; path = tst_get_tmpdir(); TEST(pathconf(path, tc->value)); if (TST_RET == -1 && errno != 0) tst_res(TFAIL, "pathconf Failed, errno = %d", TST_ERR); else tst_res(TPASS, "pathconf(%s, %s)", path, tc->name); } static void cleanup(void) { free(path); } static struct tst_test test = { .needs_tmpdir = 1, .test = verify_pathconf, .tcnt = ARRAY_SIZE(tcases), .cleanup = cleanup, };