cleanup the confstr01.c test case. Signed-off-by: Zeng Linggang <[email protected]> --- testcases/kernel/syscalls/confstr/confstr01.c | 191 +++++++++++--------------- 1 file changed, 81 insertions(+), 110 deletions(-)
diff --git a/testcases/kernel/syscalls/confstr/confstr01.c b/testcases/kernel/syscalls/confstr/confstr01.c index f301b35..90bdb26 100644 --- a/testcases/kernel/syscalls/confstr/confstr01.c +++ b/testcases/kernel/syscalls/confstr/confstr01.c @@ -13,8 +13,8 @@ * the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* 11/20/2002 Port to LTP [email protected] */ @@ -33,134 +33,105 @@ * */ -#define _XOPEN_SOURCE 500 #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <errno.h> -#define INVAL_FLAG -1 - -/** LTP Port **/ #include "test.h" #include "usctest.h" - -#define FAILED 0 -#define PASSED 1 - -int local_flag = PASSED; +#include "safe_macros.h" + +static struct test_case_t { + int value; + char *name; +} test_cases[] = { + {_CS_PATH, "PATH"}, + {_CS_XBS5_ILP32_OFF32_CFLAGS, "XBS5_ILP32_OFF32_CFLAGS"}, + {_CS_XBS5_ILP32_OFF32_LDFLAGS, "XBS5_ILP32_OFF32_LDFLAGS"}, + {_CS_XBS5_ILP32_OFF32_LIBS, "XBS5_ILP32_OFF32_LIBS"}, + {_CS_XBS5_ILP32_OFF32_LINTFLAGS, "XBS5_ILP32_OFF32_LINTFLAGS"}, + {_CS_XBS5_ILP32_OFFBIG_CFLAGS, "XBS5_ILP32_OFFBIG_CFLAGS"}, + {_CS_XBS5_ILP32_OFFBIG_LDFLAGS, "XBS5_ILP32_OFFBIG_LDFLAGS"}, + {_CS_XBS5_ILP32_OFFBIG_LIBS, "XBS5_ILP32_OFFBIG_LIBS"}, + {_CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "XBS5_ILP32_OFFBIG_LINTFLAGS"}, + {_CS_XBS5_LP64_OFF64_CFLAGS, "XBS5_LP64_OFF64_CFLAGS"}, + {_CS_XBS5_LP64_OFF64_LDFLAGS, "XBS5_LP64_OFF64_LDFLAGS"}, + {_CS_XBS5_LP64_OFF64_LIBS, "XBS5_LP64_OFF64_LIBS"}, + {_CS_XBS5_LP64_OFF64_LINTFLAGS, "XBS5_LP64_OFF64_LINTFLAGS"}, + {_CS_XBS5_LPBIG_OFFBIG_CFLAGS, "XBS5_LPBIG_OFFBIG_CFLAGS"}, + {_CS_XBS5_LPBIG_OFFBIG_LDFLAGS, "XBS5_LPBIG_OFFBIG_LDFLAGS"}, + {_CS_XBS5_LPBIG_OFFBIG_LIBS, "XBS5_LPBIG_OFFBIG_LIBS"}, + {_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "XBS5_LPBIG_OFFBIG_LINTFLAGS"}, +}; char *TCID = "confstr01"; -int TST_TOTAL = 1; -/**************/ - -int confstr_var_vals[] = { _CS_PATH, _CS_XBS5_ILP32_OFF32_CFLAGS, - _CS_XBS5_ILP32_OFF32_LDFLAGS, - _CS_XBS5_ILP32_OFF32_LIBS, - _CS_XBS5_ILP32_OFF32_LINTFLAGS, - _CS_XBS5_ILP32_OFFBIG_CFLAGS, - _CS_XBS5_ILP32_OFFBIG_LDFLAGS, - _CS_XBS5_ILP32_OFFBIG_LIBS, - _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, - _CS_XBS5_LP64_OFF64_CFLAGS, - _CS_XBS5_LP64_OFF64_LDFLAGS, - _CS_XBS5_LP64_OFF64_LIBS, - _CS_XBS5_LP64_OFF64_LINTFLAGS, - _CS_XBS5_LPBIG_OFFBIG_CFLAGS, - _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, - _CS_XBS5_LPBIG_OFFBIG_LIBS, - _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, - 0 -}; +int TST_TOTAL = ARRAY_SIZE(test_cases); -char *confstr_vars[] = { "PATH", "XBS5_ILP32_OFF32_CFLAGS", - "XBS5_ILP32_OFF32_LDFLAGS", "XBS5_ILP32_OFF32_LIBS", - "XBS5_ILP32_OFF32_LINTFLAGS", - "XBS5_ILP32_OFFBIG_CFLAGS", - "XBS5_ILP32_OFFBIG_LDFLAGS", - "XBS5_ILP32_OFFBIG_LIBS", - "XBS5_ILP32_OFFBIG_LINTFLAGS", - "XBS5_LP64_OFF64_CFLAGS", - "XBS5_LP64_OFF64_LDFLAGS", - "XBS5_LP64_OFF64_LIBS", - "XBS5_LP64_OFF64_LINTFLAGS", - "XBS5_LPBIG_OFFBIG_CFLAGS", - "XBS5_LPBIG_OFFBIG_LDFLAGS", - "XBS5_LPBIG_OFFBIG_LIBS", - "XBS5_LPBIG_OFFBIG_LINTFLAGS", - "XXX5_MYBIG_VERBIG_MYFLAGS", - 0 -}; +static void setup(void); +static void cleanup(void); -int main() +int main(int argc, char *argv[]) { - size_t len = 0, retval; /* return values for confstr(3C) */ + int lc; int i; - char *buf = NULL; - - tst_tmpdir(); /* Now temp file is open */ - -/*--------------------------------------------------------------------------*/ - - errno = 0; - for (i = 0; confstr_vars[i]; i++) { - len = confstr(confstr_var_vals[i], NULL, (size_t) 0); - if (len != 0) { - /* Allocate space for the buffer with size len */ - if ((buf = (char *)malloc(len)) == NULL) { - tst_resm(TFAIL, - "\tmalloc() fails, error= %d\n", - errno); - local_flag = FAILED; - break; - } - /* Better to reset memory space of buffer */ - memset(buf, 0, len); - - /* Get the value of config. variables thur. confstr */ - retval = confstr(confstr_var_vals[i], buf, len); - if (retval != len) { - tst_resm(TFAIL, - "\tconfstr returns invalid value :%s for variable: %s\n", - buf, confstr_vars[i]); - local_flag = FAILED; - - /* Free the memory and exit from loop */ - free(buf); - break; - } + char *buf; + int len; + char *msg; - /* Free the memory allocated for config. name */ - free(buf); - /* Reset the buffer contents to NULL */ - buf = '\0'; - } else { - if (!buf) { - if ((!strcmp("XXX5_MYBIG_VERBIG_MYFLAGS", - confstr_vars[i])) && - (errno != EINVAL)) { - tst_resm(TFAIL, - "\tconfstr returns invalid error %d\n", - errno); - local_flag = FAILED; - break; + msg = parse_opts(argc, argv, NULL, NULL); + if (msg != NULL) + tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg); + + setup(); + + for (lc = 0; TEST_LOOPING(lc); lc++) { + + tst_count = 0; + + for (i = 0; i < TST_TOTAL; i++) { + + TEST(confstr(test_cases[i].value, NULL, (size_t)0)); + + if (TEST_RETURN != 0) { + len = TEST_RETURN; + buf = SAFE_MALLOC(cleanup, len); + TEST(confstr(test_cases[i].value, buf, len)); + + if (TEST_RETURN != len || buf[len-1] != '\0') { + tst_brkm(TBROK, cleanup, + "confstr :%s failed", + test_cases[i].name); + } else { + tst_resm(TPASS, "confstr %s success", + test_cases[i].name); } + free(buf); } else { - tst_resm(TFAIL, - "\tconfstr returns string value: %s for variable %s\n", - buf, confstr_vars[i]); - local_flag = FAILED; - break; + if (TEST_ERRNO == EINVAL) { + tst_resm(TCONF, + "confstr %s not supported", + test_cases[i].name); + } else { + tst_resm(TFAIL, + "confstr %s failed", + test_cases[i].name); + } } } } - (local_flag == PASSED) ? tst_resm(TPASS, "Test Passed") - : tst_resm(TFAIL, "Test Failed"); - tst_rmdir(); -/*--------------------------------------------------------------*/ - tst_exit(); /* THIS CALL DOES NOT RETURN - EXITS!! */ -/*--------------------------------------------------------------*/ + cleanup(); + tst_exit(); +} + +static void setup(void) +{ + TEST_PAUSE; +} +static void cleanup(void) +{ + TEST_CLEANUP; } -- 1.8.2.1 ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
