Fix basic errors found when building with the clang compiler
with the option -Weverything. There are a few warnings that remain
that are not variable casting, macro fixes, or similarily simple
changes.

Makefile: add -lutil for 'check' builds for clang/gcc
builds.

Signed-off-by: Randy MacLeod <randy.macl...@windriver.com>
---
 Makefile     |  4 +++-
 main.c       |  9 ++++-----
 ptest_list.c | 17 +++++++++++++++--
 ptest_list.h | 29 ++++++++++++++++++++++-------
 utils.c      | 38 +++++++++++++++++++++-----------------
 utils.h      |  4 ++--
 6 files changed, 67 insertions(+), 34 deletions(-)

diff --git a/Makefile b/Makefile
index 439eb79..c92261b 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,8 @@ MEMCHECK=$(shell echo $$MEMCHECK)
 
 CC=cc
 CFLAGS=-std=gnu99 -pedantic -Wall -Werror -I .
+# CC=clang
+# CFLAGS=-std=gnu99 -Weverything -I .
 ifeq ($(RELEASE), 1)
 CFLAGS+= -O2 -DRELEASE
 else
@@ -22,7 +24,7 @@ TEST_SOURCES=tests/main.c tests/ptest_list.c tests/utils.c 
$(BASE_SOURCES)
 TEST_OBJECTS=$(TEST_SOURCES:.c=.o)
 TEST_EXECUTABLE=ptest-runner-test
 TEST_LDFLAGS=-lm -lrt -lpthread
-TEST_LIBSTATIC=-lcheck -lsubunit
+TEST_LIBSTATIC=-lcheck -lsubunit -lutil
 
 TEST_DATA=$(shell echo `pwd`/tests/data)
 
diff --git a/main.c b/main.c
index 83cd8f2..01d60f7 100644
--- a/main.c
+++ b/main.c
@@ -93,7 +93,7 @@ main(int argc, char *argv[])
                                }
 
 
-                               opts.exclude = malloc(ptest_exclude_num * 
sizeof(char));
+                               opts.exclude = malloc((size_t)ptest_exclude_num 
* sizeof(char));
                                CHECK_ALLOCATION(opts.exclude, 1, 1);
 
                                i = 0;
@@ -116,7 +116,7 @@ main(int argc, char *argv[])
                        case 'h':
                                print_usage(stdout, argv[0]);
                                exit(0);
-                       break;
+                       /* break; not needed, not reachable after exit() */
                        case 'x':
                                free(opts.xml_filename);
                                opts.xml_filename = strdup(optarg);
@@ -125,13 +125,12 @@ main(int argc, char *argv[])
                        default:
                                print_usage(stdout, argv[0]);
                                exit(1);
-                       break;
                }
        }
 
        ptest_num = argc - optind;
        if (ptest_num > 0) {
-               size_t size = ptest_num * sizeof(char *);
+               size_t size = sizeof(char *) * (unsigned int) ptest_num;
                opts.ptests = calloc(1, size);
                CHECK_ALLOCATION(opts.ptests, size, 1);
 
@@ -163,7 +162,7 @@ main(int argc, char *argv[])
                }
 
                run = filter_ptests(head, opts.ptests, ptest_num);
-               CHECK_ALLOCATION(run, ptest_num, 1);
+               CHECK_ALLOCATION(run, (size_t) ptest_num, 1);
                ptest_list_free_all(head);
        }
 
diff --git a/ptest_list.c b/ptest_list.c
index d48349f..a5632f8 100644
--- a/ptest_list.c
+++ b/ptest_list.c
@@ -29,8 +29,21 @@
 #include "utils.h"
 #include "ptest_list.h"
 
-#define VALIDATE_PTR_RINT(ptr) if (ptr == NULL) { errno = EINVAL; return -1; } 
-#define VALIDATE_PTR_RNULL(ptr) if (ptr == NULL) { errno = EINVAL; return 
NULL; } 
+#define VALIDATE_PTR_RINT(ptr) \
+       do { \
+               if (ptr == NULL) { \
+                       errno = EINVAL; \
+                       return -1; \
+               } \
+       } while (0)
+
+#define VALIDATE_PTR_RNULL(ptr) \
+       do { \
+               if (ptr == NULL) { \
+                       errno = EINVAL; \
+                       return NULL; \
+               } \
+       } while (0)
 
 struct ptest_list *
 ptest_list_alloc()
diff --git a/ptest_list.h b/ptest_list.h
index b4b1ac6..e1caffc 100644
--- a/ptest_list.h
+++ b/ptest_list.h
@@ -21,13 +21,28 @@
  *     Aníbal Limón <anibal.li...@intel.com>
  */
 
-#ifndef _PTEST_RUNNER_LIST_H_
-#define _PTEST_RUNNER_LIST_H_
+#ifndef PTEST_RUNNER_LIST_H
+#define PTEST_RUNNER_LIST_H
 
-#define PTEST_LIST_FREE_CLEAN(x) { ptest_list_free(x); x = NULL; }
-#define PTEST_LIST_FREE_ALL_CLEAN(x) { ptest_list_free_all(x); x = NULL; }
+#define FLUSH_PRINTF(...) \
+    do { \
+        printf(__VA_ARGS__); \
+        fflush(stdout); \
+    } while (0)
 
-#define PTEST_LIST_ITERATE_START(head, p) for (p = head->next; p != NULL; p = 
p->next) { 
+#define PTEST_LIST_FREE_CLEAN(x) \
+       do { \
+               ptest_list_free(x); \
+               x = NULL; \
+       } while (0)
+
+#define PTEST_LIST_FREE_ALL_CLEAN(x) \
+       do { \
+               ptest_list_free_all(x); \
+               x = NULL; \
+       } while (0)
+
+#define PTEST_LIST_ITERATE_START(head, p) for (p = head->next; p != NULL; p = 
p->next) {
 #define PTEST_LIST_ITERATE_END }
 
 #include <sys/stat.h>
@@ -40,7 +55,7 @@ struct ptest_list {
        struct ptest_list *prev;
 };
 
-extern struct ptest_list *ptest_list_alloc();
+extern struct ptest_list *ptest_list_alloc(void);
 extern void ptest_list_free(struct ptest_list *);
 extern int ptest_list_free_all(struct ptest_list *);
 
@@ -50,4 +65,4 @@ extern struct ptest_list *ptest_list_search_by_file(struct 
ptest_list *, char *,
 extern struct ptest_list *ptest_list_add(struct ptest_list *, char *, char *);
 extern struct ptest_list *ptest_list_remove(struct ptest_list *, char *, int);
 
-#endif // _PTEST_RUNNER_LIST_H_
+#endif // PTEST_RUNNER_LIST_H
diff --git a/utils.c b/utils.c
index f11ce39..92654bf 100644
--- a/utils.c
+++ b/utils.c
@@ -22,7 +22,7 @@
  *     Aníbal Limón <anibal.li...@intel.com>
  */
 
-#define _GNU_SOURCE 
+#define _GNU_SOURCE
 
 #include <stdio.h>
 
@@ -84,7 +84,7 @@ get_available_ptests(const char *dir)
        int n, i;
        struct dirent **namelist;
        int fail;
-       int saved_errno;
+       int saved_errno = -1; /* Initalize to invalid errno. */
 
        do
        {
@@ -190,9 +190,9 @@ print_ptests(struct ptest_list *head, FILE *fp)
        } else {
                struct ptest_list *n;
                fprintf(fp, PRINT_PTESTS_AVAILABLE);
-               PTEST_LIST_ITERATE_START(head, n);
+               PTEST_LIST_ITERATE_START(head, n)
                        fprintf(fp, "%s\t%s\n", n->ptest, n->run_ptest);
-               PTEST_LIST_ITERATE_END;
+               PTEST_LIST_ITERATE_END
                return 0;
        }
 }
@@ -201,7 +201,7 @@ struct ptest_list *
 filter_ptests(struct ptest_list *head, char **ptests, int ptest_num)
 {
        struct ptest_list *head_new = NULL, *n;
-       int fail = 0, i, saved_errno;
+       int fail = 0, i, saved_errno = 0;
 
        do {
                if (head == NULL || ptests == NULL || ptest_num <= 0) {
@@ -260,7 +260,7 @@ close_fds(void)
        getrlimit(RLIMIT_NOFILE, &curr_lim);
 
        int fd;
-       for (fd=3; fd < curr_lim.rlim_cur; fd++) {
+       for (fd=3; fd < (int)curr_lim.rlim_cur; fd++) {
                (void) close(fd);
        }
 }
@@ -277,10 +277,14 @@ run_child(char *run_ptest, int fd_stdout, int fd_stderr)
        dup2(fd_stdout, STDOUT_FILENO);
        // XXX: Redirect stderr to stdout to avoid buffer ordering problems.
        dup2(fd_stdout, STDERR_FILENO);
+
+       /* since it isn't use by the child, close(fd_stderr) ? */
+       close(fd_stderr); /* try using to see if this fixes bash run-read. rwm 
todo */
        close_fds();
+
        execv(run_ptest, argv);
 
-       exit(1);
+       /* exit(1); not needed? */
 }
 
 static inline int
@@ -293,7 +297,7 @@ wait_child(const char *ptest_dir, const char *run_ptest, 
pid_t pid,
        int looping = 1;
        int r;
 
-       int status;
+       int status = -1;
        int waitflags;
 
        pfds[0].fd = fds[0];
@@ -332,13 +336,13 @@ wait_child(const char *ptest_dir, const char *run_ptest, 
pid_t pid,
 
                        if (pfds[0].revents != 0) {
                                while ((n = read(fds[0], buf, 
WAIT_CHILD_BUF_MAX_SIZE)) > 0)
-                                       fwrite(buf, n, 1, fps[0]);
+                                       fwrite(buf, (size_t)n, 1, fps[0]);
                        }
 
                        if (pfds[1].revents != 0) {
                                while ((n = read(fds[1], buf, 
WAIT_CHILD_BUF_MAX_SIZE)) > 0) {
                                        fflush(fps[0]);
-                                       fwrite(buf, n, 1, fps[1]);
+                                       fwrite(buf, (size_t)n, 1, fps[1]);
                                        fflush(fps[1]);
                                }
                        }
@@ -376,7 +380,7 @@ setup_slave_pty(FILE *fp) {
                /* If the tty group does not exist, don't change the
                 * group on the slave pty, only the owner
                 */
-               gid = -1;
+               gid = (gid_t)-1;
        }
 
        /* chown/chmod the corresponding pty, if possible.
@@ -403,7 +407,7 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
                const char *progname, FILE *fp, FILE *fp_stderr)
 {
        int rc = 0;
-       FILE *xh;
+       FILE *xh = NULL;
 
        struct ptest_list *p;
        char stime[GET_STIME_BUF_SIZE];
@@ -413,7 +417,7 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
        int pipefd_stderr[2];
        int timeouted;
        time_t sttime, entime;
-       int duration;
+       time_t duration;
        int slave;
        int pgid = -1;
 
@@ -434,7 +438,7 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
                        break;
                }
                fprintf(fp, "START: %s\n", progname);
-               PTEST_LIST_ITERATE_START(head, p);
+               PTEST_LIST_ITERATE_START(head, p)
                        char *ptest_dir = strdup(p->run_ptest);
                        if (ptest_dir == NULL) {
                                rc = -1;
@@ -495,17 +499,17 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
                                        fprintf(fps[0], "\nERROR: Exit status 
is %d\n", status);
                                        rc += 1;
                                }
-                               fprintf(fps[0], "DURATION: %d\n", duration);
+                               fprintf(fps[0], "DURATION: %d\n", (int) 
duration);
                                if (timeouted)
                                        fprintf(fps[0], "TIMEOUT: %s\n", 
ptest_dir);
 
                                if (opts.xml_filename)
-                                       xml_add_case(xh, status, ptest_dir, 
timeouted, duration);
+                                       xml_add_case(xh, status, ptest_dir, 
timeouted, (int) duration);
 
                                fprintf(fp, "END: %s\n", ptest_dir);
                                fprintf(fp, "%s\n", get_stime(stime, 
GET_STIME_BUF_SIZE, entime));
                        }
-               PTEST_LIST_ITERATE_END;
+               PTEST_LIST_ITERATE_END
                fprintf(fp, "STOP: %s\n", progname);
 
                close(pipefd_stdout[0]); close(pipefd_stdout[1]);
diff --git a/utils.h b/utils.h
index 6175ed1..f6a56f1 100644
--- a/utils.h
+++ b/utils.h
@@ -21,8 +21,8 @@
  *     Aníbal Limón <anibal.li...@intel.com>
  */
 
-#ifndef _PTEST_RUNNER_UTILS_H_
-#define _PTEST_RUNNER_UTILS_H_
+#ifndef PTEST_RUNNER_UTILS_H
+#define PTEST_RUNNER_UTILS_H
 
 #include "ptest_list.h"
 
-- 
2.17.0

-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to