blob: 749ff6f0b6457723ed67d832886f629ae37beb1e [file] [log] [blame]
robbiewf891d872002-12-04 18:05:07 +00001/*
2 *
3 * Copyright (c) International Business Machines Corp., 2002
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13 * the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
zenglg.jyb7c04bb2013-11-27 18:07:54 +080016 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
robbiewf891d872002-12-04 18:05:07 +000018 */
19
20/* 11/20/2002 Port to LTP robbiew@us.ibm.com */
21/* 06/30/2001 Port to Linux nsharoff@us.ibm.com */
22
23/*
24 * NAME
subrata_modak4bb656a2009-02-26 12:02:09 +000025 * confstr1.c - test for confstr(3C) - Get configuration-defined string
robbiewf891d872002-12-04 18:05:07 +000026 * values.
27 *
28 * CALLS
29 * confstr(3C)
30 *
31 * RESTRICTIONS
32 * MUST RUN AS ROOT
33 *
34 */
35
Cyril Hrubis970c0e02013-11-28 17:09:11 +010036#define _XOPEN_SOURCE 500
37
robbiewf891d872002-12-04 18:05:07 +000038#include <unistd.h>
39#include <stdio.h>
40#include <sys/types.h>
41#include <errno.h>
42
robbiewf891d872002-12-04 18:05:07 +000043#include "test.h"
zenglg.jyb7c04bb2013-11-27 18:07:54 +080044#include "safe_macros.h"
robbiewf891d872002-12-04 18:05:07 +000045
zenglg.jyb7c04bb2013-11-27 18:07:54 +080046static struct test_case_t {
47 int value;
48 char *name;
49} test_cases[] = {
50 {_CS_PATH, "PATH"},
51 {_CS_XBS5_ILP32_OFF32_CFLAGS, "XBS5_ILP32_OFF32_CFLAGS"},
52 {_CS_XBS5_ILP32_OFF32_LDFLAGS, "XBS5_ILP32_OFF32_LDFLAGS"},
53 {_CS_XBS5_ILP32_OFF32_LIBS, "XBS5_ILP32_OFF32_LIBS"},
54 {_CS_XBS5_ILP32_OFF32_LINTFLAGS, "XBS5_ILP32_OFF32_LINTFLAGS"},
55 {_CS_XBS5_ILP32_OFFBIG_CFLAGS, "XBS5_ILP32_OFFBIG_CFLAGS"},
56 {_CS_XBS5_ILP32_OFFBIG_LDFLAGS, "XBS5_ILP32_OFFBIG_LDFLAGS"},
57 {_CS_XBS5_ILP32_OFFBIG_LIBS, "XBS5_ILP32_OFFBIG_LIBS"},
58 {_CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "XBS5_ILP32_OFFBIG_LINTFLAGS"},
59 {_CS_XBS5_LP64_OFF64_CFLAGS, "XBS5_LP64_OFF64_CFLAGS"},
60 {_CS_XBS5_LP64_OFF64_LDFLAGS, "XBS5_LP64_OFF64_LDFLAGS"},
61 {_CS_XBS5_LP64_OFF64_LIBS, "XBS5_LP64_OFF64_LIBS"},
62 {_CS_XBS5_LP64_OFF64_LINTFLAGS, "XBS5_LP64_OFF64_LINTFLAGS"},
63 {_CS_XBS5_LPBIG_OFFBIG_CFLAGS, "XBS5_LPBIG_OFFBIG_CFLAGS"},
64 {_CS_XBS5_LPBIG_OFFBIG_LDFLAGS, "XBS5_LPBIG_OFFBIG_LDFLAGS"},
65 {_CS_XBS5_LPBIG_OFFBIG_LIBS, "XBS5_LPBIG_OFFBIG_LIBS"},
66 {_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "XBS5_LPBIG_OFFBIG_LINTFLAGS"},
zenglg.jy470d5452013-11-27 18:10:03 +080067 {_CS_GNU_LIBC_VERSION, "GNU_LIBC_VERSION"},
68 {_CS_GNU_LIBPTHREAD_VERSION, "GNU_LIBPTHREAD_VERSION"},
zenglg.jyb7c04bb2013-11-27 18:07:54 +080069};
robbiewf891d872002-12-04 18:05:07 +000070
Cyril Hrubisfdce7d52013-04-04 18:35:48 +020071char *TCID = "confstr01";
zenglg.jyb7c04bb2013-11-27 18:07:54 +080072int TST_TOTAL = ARRAY_SIZE(test_cases);
robbiewf891d872002-12-04 18:05:07 +000073
zenglg.jyb7c04bb2013-11-27 18:07:54 +080074static void setup(void);
75static void cleanup(void);
robbiewf891d872002-12-04 18:05:07 +000076
zenglg.jyb7c04bb2013-11-27 18:07:54 +080077int main(int argc, char *argv[])
robbiewf891d872002-12-04 18:05:07 +000078{
zenglg.jyb7c04bb2013-11-27 18:07:54 +080079 int lc;
robbiewf891d872002-12-04 18:05:07 +000080 int i;
zenglg.jyb7c04bb2013-11-27 18:07:54 +080081 char *buf;
82 int len;
Cyril Hrubis0b9589f2014-05-27 17:40:33 +020083 const char *msg;
robbiewf891d872002-12-04 18:05:07 +000084
zenglg.jyb7c04bb2013-11-27 18:07:54 +080085 msg = parse_opts(argc, argv, NULL, NULL);
86 if (msg != NULL)
87 tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
robbiewf891d872002-12-04 18:05:07 +000088
zenglg.jyb7c04bb2013-11-27 18:07:54 +080089 setup();
robbiewf891d872002-12-04 18:05:07 +000090
zenglg.jyb7c04bb2013-11-27 18:07:54 +080091 for (lc = 0; TEST_LOOPING(lc); lc++) {
robbiewf891d872002-12-04 18:05:07 +000092
zenglg.jyb7c04bb2013-11-27 18:07:54 +080093 tst_count = 0;
robbiewf891d872002-12-04 18:05:07 +000094
zenglg.jyb7c04bb2013-11-27 18:07:54 +080095 for (i = 0; i < TST_TOTAL; i++) {
robbiewf891d872002-12-04 18:05:07 +000096
zenglg.jyb7c04bb2013-11-27 18:07:54 +080097 TEST(confstr(test_cases[i].value, NULL, (size_t)0));
98
99 if (TEST_RETURN != 0) {
100 len = TEST_RETURN;
101 buf = SAFE_MALLOC(cleanup, len);
102 TEST(confstr(test_cases[i].value, buf, len));
103
104 if (TEST_RETURN != len || buf[len-1] != '\0') {
105 tst_brkm(TBROK, cleanup,
106 "confstr :%s failed",
107 test_cases[i].name);
108 } else {
109 tst_resm(TPASS, "confstr %s = '%s'",
110 test_cases[i].name, buf);
robbiewf891d872002-12-04 18:05:07 +0000111 }
zenglg.jyb7c04bb2013-11-27 18:07:54 +0800112 free(buf);
robbiewf891d872002-12-04 18:05:07 +0000113 } else {
zenglg.jyb7c04bb2013-11-27 18:07:54 +0800114 if (TEST_ERRNO == EINVAL) {
115 tst_resm(TCONF,
116 "confstr %s not supported",
117 test_cases[i].name);
118 } else {
119 tst_resm(TFAIL,
120 "confstr %s failed",
121 test_cases[i].name);
122 }
robbiewf891d872002-12-04 18:05:07 +0000123 }
124 }
125 }
robbiewf891d872002-12-04 18:05:07 +0000126
zenglg.jyb7c04bb2013-11-27 18:07:54 +0800127 cleanup();
128
Garrett Cooper2c282152010-12-16 00:55:50 -0800129 tst_exit();
zenglg.jyb7c04bb2013-11-27 18:07:54 +0800130}
robbiewf891d872002-12-04 18:05:07 +0000131
zenglg.jyb7c04bb2013-11-27 18:07:54 +0800132static void setup(void)
133{
134 TEST_PAUSE;
135}
136
137static void cleanup(void)
138{
Chris Dearmanec6edca2012-10-17 19:54:01 -0700139}