[v2,09/22] sim/erc32: Removed type mismatch compiler warnings

Message ID 1424385100-15397-10-git-send-email-jiri@gaisler.se
State Superseded
Headers

Commit Message

Jiri Gaisler Feb. 19, 2015, 10:31 p.m. UTC
  * func.c (batch, exec_cmd) save return value to avoid warnings.
	(batch) replace fgets() with getline().
---
 sim/erc32/func.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
  

Comments

Mike Frysinger Feb. 22, 2015, 4:43 a.m. UTC | #1
On 19 Feb 2015 23:31, Jiri Gaisler wrote:
> +	tmp = getline(&lbuf, &len, fp);
> +	if ((strlen(lbuf) > 0) && (lbuf[strlen(lbuf) - 1] == '\n')) {

you need to check the return value of tmp before using lbuf

> +    if (lbuf) free(lbuf);

no need for the if check ... free(NULL) required to work in POSIX

> +    uint32          len, i, clen, j, tmp;
> ...
> +		tmp = system(&cmdsave[clen]);

the return value of system() is int, not uint32 ...

then again, you aren't checking the return value.  i guess you just want to 
silence the warning ?  that doesn't work in gcc.  you'll want to do:
	if (system(&cmdsave[clen])) {
		/* Silence unused return value warning.  */
	}
-mike
  

Patch

diff --git a/sim/erc32/func.c b/sim/erc32/func.c
index f1d5bd7..a715f0f 100644
--- a/sim/erc32/func.c
+++ b/sim/erc32/func.c
@@ -81,20 +81,23 @@  batch(sregs, fname)
     char           *fname;
 {
     FILE           *fp;
-    char            lbuf[1024];
+    char           *lbuf = NULL;
+    size_t         len = 0;
+    ssize_t        tmp;
 
     if ((fp = fopen(fname, "r")) == NULL) {
 	fprintf(stderr, "couldn't open batch file %s\n", fname);
 	return (0);
     }
     while (!feof(fp)) {
-	lbuf[0] = 0;
-	fgets(lbuf, 1023, fp);
-	if ((strlen(lbuf) > 0) && (lbuf[strlen(lbuf) - 1] == '\n'))
+	tmp = getline(&lbuf, &len, fp);
+	if ((strlen(lbuf) > 0) && (lbuf[strlen(lbuf) - 1] == '\n')) {
 	    lbuf[strlen(lbuf) - 1] = 0;
-	printf("sis> %s\n", lbuf);
-	exec_cmd(sregs, lbuf);
+	    printf("sis> %s\n", lbuf);
+	    exec_cmd(sregs, lbuf);
+	}
     }
+    if (lbuf) free(lbuf);
     fclose(fp);
     return (1);
 }
@@ -383,7 +386,7 @@  exec_cmd(sregs, cmd)
 {
     char           *cmd1, *cmd2;
     int32           stat;
-    uint32          len, i, clen, j;
+    uint32          len, i, clen, j, tmp;
     static uint32   daddr = 0;
     char           *cmdsave;
 
@@ -555,7 +558,7 @@  exec_cmd(sregs, cmd)
 	    sim_halt();
 	} else if (strncmp(cmd1, "shell", clen) == 0) {
 	    if ((cmd1 = strtok(NULL, " \t\n\r")) != NULL) {
-		system(&cmdsave[clen]);
+		tmp = system(&cmdsave[clen]);
 	    }
 	} else if (strncmp(cmd1, "step", clen) == 0) {
 	    stat = run_sim(sregs, 1, 1);