[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mail/smtpfeed with gcc-4 (static func ptr in struct)



おはようございます。

In message <yfmpsg3lrgi.wl%makoto@ki.nu>
	on Tue, 18 Jul 2006 08:52:29 +0900,
	藤原 誠/ Makoto Fujiwara <makoto@ki.nu> wrote:
> mail/smtpfeed ですが、多分 gcc-4 になったせいか、
> struct の中にある static な関数ポインタが嫌われているような気が
> します。
元々関数の中で関数宣言を行うこと自体、C言語では殆んど意味がないので、
単に宣言を関数の外に持っていけば十分です。

>   自分の知識では、添付のように static を消すという方法で、無理
> 矢理通してしまうことしか思い着かなかったのですが、本来はどうす
> るのが正しいのでしょうか。
こんなところでしょうか。(smtpfeedのコードベースに合わせるなら、プロト
タイプ宣言までする必要はありませんが。)

-- 
神戸 隆博(かんべ たかひろ)		at 仕事場 



$NetBSD$

--- dns.c.orig	2002-03-15 11:03:39.000000000 +0900
+++ dns.c
@@ -79,6 +79,22 @@ static char *_id_ = "$Id: dns.c,v 1.84 2
 # define RES_INSECURE1	0x00000400	/* type 1 security disabled */
 #endif
 
+#ifdef __STDC__
+static int query_domain(char *, int);
+static int process_query(int);
+static int make_query(struct dns_stat *, int);
+static void got_answer(struct query_chain *, u_char *, int);
+static void remove_query(struct query_chain *);
+static struct mx* newmx(char *, int, int, struct domain *, long);
+#else
+static int query_domain();
+static int process_query();
+static int make_query();
+static void got_answer();
+static void remove_query();
+static struct mx* newmx();
+#endif
+
 int
 pregetmx(dl)
 struct domain *dl;
@@ -87,7 +103,6 @@ struct domain *dl;
 	char **map_arg;
 	long stime, etime;
 	int n;
-	static int query_domain(), process_query();
 #ifdef INET6
 	SockAddr dsin;	/* dummy */
 #endif
@@ -353,7 +368,6 @@ char *name;
 int type;
 {
 	struct dns_stat *qrp, **hashp;
-	static int make_query();
 
 	qrp = hash_query_lookup(name, &hashp);
 	if (qrp == NULL) {
@@ -396,7 +410,6 @@ int type;
 	u_char buf[MAXPACKET];
 	int n;
 	struct query_chain *qchain;
-	static int process_query();
 
 	switch (type) {
 	  case T_MX:
@@ -591,8 +604,6 @@ int sync;
 	char nbuf[MAXDNAME+1];
 	struct dns_stat *qrp;
 	int pending;
-	static void got_answer();
-	static void remove_query();
 
 	if (sync == 0 && cnf.cquery_max != 0
 	 && query_chain_count >= cnf.cquery_max)
@@ -1763,7 +1774,6 @@ struct domain *dl;
 #endif
 					{
 						struct mx *gwmxp;
-						static struct mx* newmx();
 
 						if (cnf.debug & DEBUG_DNS)
 						log(LOG_DEBUG, "setting protocol gateway as first MX");