<<< Date Index >>>     <<< Thread Index >>>

Re: 1.5.8 build failure on Solaris 8



On Friday, 04 March 2005 at 16:37, Aaron Crane wrote:
> Brendan Cully writes:
> > >   struct s *p = ...;
> > >   int fd = (p->open)(name, mode);
> > >   (p->close)(fd);
> > 
> > I actually don't mind this version. In a way I like it better than
> > the global rename, even though it's about the same amount of work. It
> > makes me feel like the namespace is a little less polluted :)
> 
> The thing I really dislike about it is that everyone who will ever work
> on such code will need to know about this particular dark corner of C:
> at the very least, that a problem exists, and that this is the
> workaround for it.  All it takes is for one person to forget, or not to
> have known about this in the first place, and suddenly the build breaks
> for some people.  Renaming the members seems much safer to me.

I suppose so. I also like the symmetry between the declaration in the
struct and its usage: if it gets renamed in one place it should get
renamed in the other. You don't get that just by renaming the
member. But I suppose that's a bit pedantic, as long as a decent name
is chosen.

I've attached a patch that renames the CONNECTION and SASL_DATA
function pointers. I hope I haven't missed anything.
Index: mutt_sasl.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_sasl.c,v
retrieving revision 3.11
diff -u -p -r3.11 mutt_sasl.c
--- mutt_sasl.c 3 Feb 2005 17:01:43 -0000       3.11
+++ mutt_sasl.c 4 Mar 2005 17:22:25 -0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2000-3 Brendan Cully <brendan@xxxxxxxxxx>
+ * Copyright (C) 2000-5 Brendan Cully <brendan@xxxxxxxxxx>
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -429,17 +429,17 @@ void mutt_sasl_setup_conn (CONNECTION* c
 
   /* preserve old functions */
   sasldata->sockdata = conn->sockdata;
-  sasldata->open = conn->open;
-  sasldata->close = conn->close;
-  sasldata->read = conn->read;
-  sasldata->write = conn->write;
+  sasldata->msasl_open = conn->conn_open;
+  sasldata->msasl_close = conn->conn_close;
+  sasldata->msasl_read = conn->conn_read;
+  sasldata->msasl_write = conn->conn_write;
 
   /* and set up new functions */
   conn->sockdata = sasldata;
-  conn->open = mutt_sasl_conn_open;
-  conn->close = mutt_sasl_conn_close;
-  conn->read = mutt_sasl_conn_read;
-  conn->write = mutt_sasl_conn_write;
+  conn->conn_open = mutt_sasl_conn_open;
+  conn->conn_close = mutt_sasl_conn_close;
+  conn->conn_read = mutt_sasl_conn_read;
+  conn->conn_write = mutt_sasl_conn_write;
 }
 
 /* mutt_sasl_cb_log: callback to log SASL messages */
@@ -515,7 +515,7 @@ static int mutt_sasl_conn_open (CONNECTI
 
   sasldata = (SASL_DATA*) conn->sockdata;
   conn->sockdata = sasldata->sockdata;
-  rc = (sasldata->open) (conn);
+  rc = (sasldata->msasl_open) (conn);
   conn->sockdata = sasldata;
 
   return rc;
@@ -532,10 +532,10 @@ static int mutt_sasl_conn_close (CONNECT
 
   /* restore connection's underlying methods */
   conn->sockdata = sasldata->sockdata;
-  conn->open = sasldata->open;
-  conn->close = sasldata->close;
-  conn->read = sasldata->read;
-  conn->write = sasldata->write;
+  conn->conn_open = sasldata->msasl_open;
+  conn->conn_close = sasldata->msasl_close;
+  conn->conn_read = sasldata->msasl_read;
+  conn->conn_write = sasldata->msasl_write;
 
   /* release sasl resources */
   sasl_dispose (&sasldata->saslconn);
@@ -545,7 +545,7 @@ static int mutt_sasl_conn_close (CONNECT
   FREE (&sasldata);
 
   /* call underlying close */
-  rc = (conn->close) (conn);
+  rc = (conn->conn_close) (conn);
 
   return rc;
 }
@@ -585,7 +585,7 @@ static int mutt_sasl_conn_read (CONNECTI
     do
     {
       /* call the underlying read function to fill the buffer */
-      rc = (sasldata->read) (conn, buf, len);
+      rc = (sasldata->msasl_read) (conn, buf, len);
       if (rc <= 0)
        goto out;
 
@@ -609,7 +609,7 @@ static int mutt_sasl_conn_read (CONNECTI
     rc = olen;
   }
   else
-    rc = (sasldata->read) (conn, buf, len);
+    rc = (sasldata->msasl_read) (conn, buf, len);
 
   out:
     conn->sockdata = sasldata;
@@ -649,7 +649,7 @@ static int mutt_sasl_conn_write (CONNECT
        goto fail;
       }
 
-      rc = (sasldata->write) (conn, pbuf, plen);
+      rc = (sasldata->msasl_write) (conn, pbuf, plen);
 #ifndef USE_SASL2
       FREE (&pbuf);
 #endif
@@ -663,7 +663,7 @@ static int mutt_sasl_conn_write (CONNECT
   }
   else
   /* just write using the underlying socket function */
-    rc = (sasldata->write) (conn, buf, len);
+    rc = (sasldata->msasl_write) (conn, buf, len);
   
   conn->sockdata = sasldata;
 
Index: mutt_sasl.h
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_sasl.h,v
retrieving revision 3.1
diff -u -p -r3.1 mutt_sasl.h
--- mutt_sasl.h 12 Nov 2002 08:20:08 -0000      3.1
+++ mutt_sasl.h 4 Mar 2005 17:22:25 -0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2000-1 Brendan Cully <brendan@xxxxxxxxxx>
+ * Copyright (C) 2000-5 Brendan Cully <brendan@xxxxxxxxxx>
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -51,10 +51,10 @@ typedef struct 
 
   /* underlying socket data */
   void* sockdata;
-  int (*open) (CONNECTION* conn);
-  int (*close) (CONNECTION* conn);
-  int (*read) (CONNECTION* conn, char* buf, size_t len);
-  int (*write) (CONNECTION* conn, const char* buf, size_t count);
+  int (*msasl_open) (CONNECTION* conn);
+  int (*msasl_close) (CONNECTION* conn);
+  int (*msasl_read) (CONNECTION* conn, char* buf, size_t len);
+  int (*msasl_write) (CONNECTION* conn, const char* buf, size_t count);
 }
 SASL_DATA;
 
Index: mutt_socket.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_socket.c,v
retrieving revision 3.7
diff -u -p -r3.7 mutt_socket.c
--- mutt_socket.c       3 Feb 2005 17:01:43 -0000       3.7
+++ mutt_socket.c       4 Mar 2005 17:22:25 -0000
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 1998 Michael R. Elkins <me@xxxxxxxx>
- * Copyright (C) 1999-2001 Brendan Cully <brendan@xxxxxxxxxx>
+ * Copyright (C) 1999-2005 Brendan Cully <brendan@xxxxxxxxxx>
  * Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@xxxxxx>
  * 
  *     This program is free software; you can redistribute it and/or modify
@@ -56,7 +56,7 @@ int mutt_socket_open (CONNECTION* conn) 
   if (socket_preconnect ())
     return -1;
 
-  return conn->open (conn);
+  return conn->conn_open (conn);
 }
 
 int mutt_socket_close (CONNECTION* conn)
@@ -66,7 +66,7 @@ int mutt_socket_close (CONNECTION* conn)
   if (conn->fd < 0)
     dprint (1, (debugfile, "mutt_socket_close: Attempt to close closed 
connection.\n"));
   else
-    rc = conn->close (conn);
+    rc = conn->conn_close (conn);
 
   conn->fd = -1;
   conn->ssf = 0;
@@ -84,7 +84,7 @@ int mutt_socket_read (CONNECTION* conn, 
     return -1;
   }
 
-  rc = conn->read (conn, buf, len);
+  rc = conn->conn_read (conn, buf, len);
   /* EOF */
   if (rc == 0)
   {
@@ -111,7 +111,7 @@ int mutt_socket_write_d (CONNECTION *con
   }
 
   len = mutt_strlen (buf);
-  if ((rc = conn->write (conn, buf, len)) < 0)
+  if ((rc = conn->conn_write (conn, buf, len)) < 0)
   {
     dprint (1, (debugfile,
       "mutt_socket_write: error writing, closing socket\n"));
@@ -135,7 +135,7 @@ int mutt_socket_readchar (CONNECTION *co
   if (conn->bufpos >= conn->available)
   {
     if (conn->fd >= 0)
-      conn->available = conn->read (conn, conn->inbuf, sizeof (conn->inbuf));
+      conn->available = conn->conn_read (conn, conn->inbuf, sizeof 
(conn->inbuf));
     else
     {
       dprint (1, (debugfile, "mutt_socket_readchar: attempt to read from 
closed connection.\n"));
@@ -277,10 +277,10 @@ CONNECTION* mutt_conn_find (const CONNEC
   }
   else
   {
-    conn->read = raw_socket_read;
-    conn->write = raw_socket_write;
-    conn->open = raw_socket_open;
-    conn->close = raw_socket_close;
+    conn->conn_read = raw_socket_read;
+    conn->conn_write = raw_socket_write;
+    conn->conn_open = raw_socket_open;
+    conn->conn_close = raw_socket_close;
   }
 
   return conn;
Index: mutt_socket.h
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_socket.h,v
retrieving revision 3.0
diff -u -p -r3.0 mutt_socket.h
--- mutt_socket.h       24 Jan 2002 12:10:50 -0000      3.0
+++ mutt_socket.h       4 Mar 2005 17:22:25 -0000
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 1998 Brandon Long <blong@xxxxxxxxxxx>
- * Copyright (C) 1999-2001 Brendan Cully <brendan@xxxxxxxxxx>
+ * Copyright (C) 1999-2005 Brendan Cully <brendan@xxxxxxxxxx>
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -44,10 +44,10 @@ typedef struct _connection
   struct _connection *next;
 
   void *sockdata;
-  int (*read) (struct _connection* conn, char* buf, size_t len);
-  int (*write) (struct _connection *conn, const char *buf, size_t count);
-  int (*open) (struct _connection *conn);
-  int (*close) (struct _connection *conn);
+  int (*conn_read) (struct _connection* conn, char* buf, size_t len);
+  int (*conn_write) (struct _connection *conn, const char *buf, size_t count);
+  int (*conn_open) (struct _connection *conn);
+  int (*conn_close) (struct _connection *conn);
 } CONNECTION;
 
 int mutt_socket_open (CONNECTION* conn);
Index: mutt_ssl.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_ssl.c,v
retrieving revision 3.6
diff -u -p -r3.6 mutt_ssl.c
--- mutt_ssl.c  3 Feb 2005 17:01:43 -0000       3.6
+++ mutt_ssl.c  4 Mar 2005 17:22:26 -0000
@@ -116,9 +116,9 @@ int mutt_ssl_starttls (CONNECTION* conn)
 
   /* hmm. watch out if we're starting TLS over any method other than raw. */
   conn->sockdata = ssldata;
-  conn->read = ssl_socket_read;
-  conn->write = ssl_socket_write;
-  conn->close = tls_close;
+  conn->conn_read = ssl_socket_read;
+  conn->conn_write = ssl_socket_write;
+  conn->conn_close = tls_close;
 
   conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (ssldata->ssl),
     &maxbits);
@@ -233,14 +233,14 @@ int ssl_socket_setup (CONNECTION * conn)
 {
   if (ssl_init() < 0)
   {
-    conn->open = ssl_socket_open_err;
+    conn->conn_open = ssl_socket_open_err;
     return -1;
   }
 
-  conn->open   = ssl_socket_open;
-  conn->read   = ssl_socket_read;
-  conn->write  = ssl_socket_write;
-  conn->close  = ssl_socket_close;
+  conn->conn_open      = ssl_socket_open;
+  conn->conn_read      = ssl_socket_read;
+  conn->conn_write     = ssl_socket_write;
+  conn->conn_close     = ssl_socket_close;
 
   return 0;
 }
@@ -373,9 +373,9 @@ static int tls_close (CONNECTION* conn)
   int rc;
 
   rc = ssl_socket_close (conn);
-  conn->read = raw_socket_read;
-  conn->write = raw_socket_write;
-  conn->close = raw_socket_close;
+  conn->conn_read = raw_socket_read;
+  conn->conn_write = raw_socket_write;
+  conn->conn_close = raw_socket_close;
 
   return rc;
 }
Index: mutt_ssl_gnutls.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_ssl_gnutls.c,v
retrieving revision 3.4
diff -u -p -r3.4 mutt_ssl_gnutls.c
--- mutt_ssl_gnutls.c   11 Feb 2005 04:12:03 -0000      3.4
+++ mutt_ssl_gnutls.c   4 Mar 2005 17:22:26 -0000
@@ -77,10 +77,10 @@ int mutt_gnutls_socket_setup (CONNECTION
   if (tls_init() < 0)
     return -1;
 
-  conn->open   = tls_socket_open;
-  conn->read   = tls_socket_read;
-  conn->write  = tls_socket_write;
-  conn->close  = tls_socket_close;
+  conn->conn_open      = tls_socket_open;
+  conn->conn_read      = tls_socket_read;
+  conn->conn_write     = tls_socket_write;
+  conn->conn_close     = tls_socket_close;
 
   return 0;
 }
@@ -151,9 +151,9 @@ int mutt_gnutls_starttls (CONNECTION* co
   if (tls_negotiate (conn) < 0)
     return -1;
 
-  conn->read   = tls_socket_read;
-  conn->write  = tls_socket_write;
-  conn->close  = tls_starttls_close;
+  conn->conn_read      = tls_socket_read;
+  conn->conn_write     = tls_socket_write;
+  conn->conn_close     = tls_starttls_close;
 
   return 0;
 }
@@ -298,9 +298,9 @@ static int tls_starttls_close (CONNECTIO
   int rc;
 
   rc = tls_socket_close (conn);
-  conn->read = raw_socket_read;
-  conn->write = raw_socket_write;
-  conn->close = raw_socket_close;
+  conn->conn_read = raw_socket_read;
+  conn->conn_write = raw_socket_write;
+  conn->conn_close = raw_socket_close;
 
   return rc;
 }
Index: mutt_ssl_nss.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_ssl_nss.c,v
retrieving revision 3.2
diff -u -p -r3.2 mutt_ssl_nss.c
--- mutt_ssl_nss.c      3 Feb 2005 17:01:43 -0000       3.2
+++ mutt_ssl_nss.c      4 Mar 2005 17:22:26 -0000
@@ -374,9 +374,9 @@ mutt_nss_socket_setup (CONNECTION * con)
 {
   if (mutt_nss_init ())
     return -1;
-  con->open = mutt_nss_socket_open;
-  con->read = mutt_nss_socket_read;
-  con->write = mutt_nss_socket_write;
-  con->close = mutt_nss_socket_close;
+  con->conn_open = mutt_nss_socket_open;
+  con->conn_read = mutt_nss_socket_read;
+  con->conn_write = mutt_nss_socket_write;
+  con->conn_close = mutt_nss_socket_close;
   return 0;
 }
Index: mutt_tunnel.c
===================================================================
RCS file: /home/roessler/cvs/mutt/mutt_tunnel.c,v
retrieving revision 3.1
diff -u -p -r3.1 mutt_tunnel.c
--- mutt_tunnel.c       3 Feb 2005 17:01:43 -0000       3.1
+++ mutt_tunnel.c       4 Mar 2005 17:22:26 -0000
@@ -49,10 +49,10 @@ static int tunnel_socket_write (CONNECTI
 /* -- public functions -- */
 int mutt_tunnel_socket_setup (CONNECTION *conn)
 {
-  conn->open = tunnel_socket_open;
-  conn->close = tunnel_socket_close;
-  conn->read = tunnel_socket_read;
-  conn->write = tunnel_socket_write;
+  conn->conn_open = tunnel_socket_open;
+  conn->conn_close = tunnel_socket_close;
+  conn->conn_read = tunnel_socket_read;
+  conn->conn_write = tunnel_socket_write;
 
   return 0;
 }

Attachment: pgp920XnU1lBM.pgp
Description: PGP signature