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

Reply via email to