[Cluster-devel] [PATCH gfs2-utils] don't use "void*" in arithmetic

Jim Meyering jim at meyering.net
Mon Jun 22 20:33:04 UTC 2009


Building gfs2-utils, I saw these warnings:

  main.c:21: warning: pointer of type ‘void *’ used in arithmetic
  main.c:38: warning: pointer of type ‘void *’ used in arithmetic
  main.c:145: warning: pointer of type ‘void *’ used in arithmetic
  main.c:33: warning: pointer of type ‘void *’ used in arithmetic
  main.c:50: warning: pointer of type ‘void *’ used in arithmetic

Here are patches that add no casts (and yes, that's a feature ;-):

>From d107032f49e553061276f24016c4dc256292795d Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 22 Jun 2009 22:12:49 +0200
Subject: [PATCH gfs2-utils] don't use "void*" in arithmetic

* group/libgfscontrol/main.c (do_read): Use an intermediate
"char *" variable (better than a cast).
(do_write): Likewise, and make the BUF parameter const.
* group/gfs_control/main.c (do_write): Likewise.
* group/gfs_controld/main.c (do_read, do_write): Likewise.
* group/gfs_controld/gfs_daemon.h (do_write): Update prototype.
---
 group/gfs_control/main.c        |    6 +++---
 group/gfs_controld/gfs_daemon.h |    2 +-
 group/gfs_controld/main.c       |    9 +++++----
 group/libgfscontrol/main.c      |    9 +++++----
 4 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/group/gfs_control/main.c b/group/gfs_control/main.c
index fe4359f..04aed09 100644
--- a/group/gfs_control/main.c
+++ b/group/gfs_control/main.c
@@ -137,12 +137,13 @@ static void decode_arguments(int argc, char **argv)
 	}
 }

-static int do_write(int fd, void *buf, size_t count)
+static int do_write(int fd, const void *buf, size_t count)
 {
 	int rv, off = 0;
+	const char *p = buf;

  retry:
-	rv = write(fd, buf + off, count);
+	rv = write(fd, p + off, count);
 	if (rv == -1 && errno == EINTR)
 		goto retry;
 	if (rv < 0)
@@ -462,4 +463,3 @@ int main(int argc, char **argv)
 	}
 	return 0;
 }
-
diff --git a/group/gfs_controld/gfs_daemon.h b/group/gfs_controld/gfs_daemon.h
index 7fa1837..7fbfea7 100644
--- a/group/gfs_controld/gfs_daemon.h
+++ b/group/gfs_controld/gfs_daemon.h
@@ -191,7 +191,7 @@ void free_mg(struct mountgroup *mg);

 /* main.c */
 int do_read(int fd, void *buf, size_t count);
-int do_write(int fd, void *buf, size_t count);
+int do_write(int fd, const void *buf, size_t count);
 void client_dead(int ci);
 int client_add(int fd, void (*workfn)(int ci), void (*deadfn)(int ci));
 int client_fd(int ci);
diff --git a/group/gfs_controld/main.c b/group/gfs_controld/main.c
index a0b809d..65e92dc 100644
--- a/group/gfs_controld/main.c
+++ b/group/gfs_controld/main.c
@@ -28,9 +28,10 @@ static void do_withdraw(char *name);
 int do_read(int fd, void *buf, size_t count)
 {
 	int rv, off = 0;
+	char *p = buf;

 	while (off < count) {
-		rv = read(fd, buf + off, count - off);
+		rv = read(fd, p + off, count - off);
 		if (rv == 0)
 			return -1;
 		if (rv == -1 && errno == EINTR)
@@ -42,12 +43,13 @@ int do_read(int fd, void *buf, size_t count)
 	return 0;
 }

-int do_write(int fd, void *buf, size_t count)
+int do_write(int fd, const void *buf, size_t count)
 {
 	int rv, off = 0;
+	const char *p = buf;

  retry:
-	rv = write(fd, buf + off, count);
+	rv = write(fd, p + off, count);
 	if (rv == -1 && errno == EINTR)
 		goto retry;
 	if (rv < 0) {
@@ -1359,4 +1361,3 @@ int dmsetup_wait;
 cpg_handle_t cpg_handle_daemon;
 int libcpg_flow_control_on;
 struct list_head withdrawn_mounts;
-
diff --git a/group/libgfscontrol/main.c b/group/libgfscontrol/main.c
index 831c9e4..2890733 100644
--- a/group/libgfscontrol/main.c
+++ b/group/libgfscontrol/main.c
@@ -16,9 +16,10 @@
 static int do_read(int fd, void *buf, size_t count)
 {
 	int rv, off = 0;
+	char *p = buf;

 	while (off < count) {
-		rv = read(fd, buf + off, count - off);
+		rv = read(fd, p + off, count - off);
 		if (rv == 0)
 			return -1;
 		if (rv == -1 && errno == EINTR)
@@ -30,12 +31,13 @@ static int do_read(int fd, void *buf, size_t count)
 	return 0;
 }

-static int do_write(int fd, void *buf, size_t count)
+static int do_write(int fd, const void *buf, size_t count)
 {
 	int rv, off = 0;
+	const char *p = buf;

  retry:
-	rv = write(fd, buf + off, count);
+	rv = write(fd, p + off, count);
 	if (rv == -1 && errno == EINTR)
 		goto retry;
 	if (rv < 0) {
@@ -425,4 +427,3 @@ int gfsc_fs_leave(struct gfsc_mount_args *ma, int reason)

 	return do_write(fd, msg, sizeof(msg));
 }
-
--
1.6.3.3




More information about the Cluster-devel mailing list