[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");